chore(release): 3.9.2 - #228
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Release 3.9.2. Version bumped across all 16 version-bearing locations, with a
CHANGELOG.mdsection covering everything since 3.9.1: the twenty-fix batch from #204–#225 plus the
test-isolation follow-up #227.
PATCH rather than MINOR: nineteen of the twenty are
fix:; the one default change(#221, session-summary fallback off) is a defect correction with an explicit opt-in, not new
surface.
Why
v3.9.1 tagged the tree at #203, so this release is exactly the batch above. The CHANGELOG
entry carries the full per-fix prose; the storage quartet (#208/#218/#219/#220) is the
headline — dead lookups and dropped change-log rows meant sync and single-record operations
were silently broken on the only production backend.
Contents
change_log.payloadFLEXIBLE (rows weredropped, sync had nothing to replay); fix(storage): the SurrealDB change readers return the record type sync consumes #219 change readers return
ChangeEntry;fix(storage): SURREALDB_AUTH_LEVEL, so a database-scoped user can sign in at all #220
SURREALDB_AUTH_LEVEL; fix(storage): brain import surfaces per-loop drops instead of swallowing them #206 import surfaces per-loop drops.NeuronState; fix(consolidation): a dry run must not advance the dedup census window #204 dry run keeps the dedup cursor;fix(reasoning): pin ReasoningBank pattern fibers so lifecycle cannot eat them #205 pattern fibers pinned; fix(compression): the brain pre-fetch logs its failure instead of degrading in silence #212 brain pre-fetch logs failure; fix(encoder): the provider-unavailable embed skip warns, and then throttles itself #216 embed-skip warning
throttled; fix(config): the scheduled-consolidation default includes "mature" #211 scheduled default includes
mature.default off (default change, opt back in via
auto.capture_session_summary); fix(mcp): smem_edit recomputes expires_at when the type changes, without reviving tombstones or ephemerals #214smem_editTTL on type change; fix(server): PUT /memory/neurons refreshes content_hash and the embedding on a content change #217 PUT refreshes content-derived fields; fix(cli): listing previews show essence for GRAPH_ONLY anchors; tombstone literal becomes a shared constant #207 essencepreviews for GRAPH_ONLY; fix(consolidation): the lock honours SURREAL_MEMORY_DIR like the rest of the data dir #209 lock honours
SURREAL_MEMORY_DIR; fix(cli): the update check honours SURREAL_MEMORY_NO_UPDATE_CHECK, and the suite sets it #215SURREAL_MEMORY_NO_UPDATE_CHECK.MockEmbeddingProviderbuilds vectors fromhash(), soTest (Python 3.11)fails at random #226); fix(dashboard): hold the background diagnostics refresh, and drain it in the live tests #225 backgroundrefresh task references + live-test drain (closes
Integration (SurrealDB)can hang at teardown ofTestListBrainsScopeLiveuntil the 120 s timeout #224); fix(tests): reset the process-global embed-unavailable counter between tests #227 throttle-counter isolation.sync_refs7400+ test count andconfig.md53 env vars, regenerated duringthe batch (carried by fix(storage): change_log.payload needs FLEXIBLE, or every change row is dropped #218/fix(storage): SURREALDB_AUTH_LEVEL, so a database-scoped user can sign in at all #220).
Test plan
python scripts/pre_ship.py— all 10 sections pass, including version consistency(16/16 at 3.9.2), the CHANGELOG entry check, ruff, mypy, the fast unit suite, and both
documentation-freshness gates.
pytest tests/ -m "not stress" -n auto— 7315 passed / 131 skipped after fix(tests): reset the process-global embed-unavailable counter between tests #227 (theone failure it fixes reproduced deterministically and was verified sequentially).
live SurrealDB integration job.
ClawHub and the VS Code Marketplace. The publish steps in
release.ymlare tolerantof failure, so a green job is not by itself evidence that anything was published.
Verified by
@acidkill