v2.5.2a2 — alpha: promotion-gate audit remediation (M-142..L-154)
Pre-release
Pre-release
Pre-release (second alpha of the 2.5.2 stabilization ladder; latest final release remains v2.5.1, which pip installs by default — pre-releases require explicit opt-in).
This cut ships the remediation of the alpha→beta promotion-gate audit (#61): a 78-agent workflow (4 equivalence seams + 16 finder dimensions, every finding adversarially verified through two independent lenses) confirmed the a1 refactor seams behavior-preserving and surfaced 13 defects, all fixed here as registry entries bug-142..bug-154. DB schema unchanged.
Highlights
- Silent-failure fixes:
storeno longer reportsembedded: truewhen the remote index POST returns 4xx/5xx (M-146); one malformed-JSONsourcerow no longer blankscheck_invalid_source_type/check_anonymous_sourcefor the whole agent (M-144);delete_episodenow purges the episode from the remote vector index, symmetric withdelete_memory(M-148). - Isolation correctness: the episode-boundary recall penalty is scoped to the recall's
project_id/channelaxes instead of the whole agent (M-147). - Legacy-data remediation path: pre-v12
msg_idcollisions that permanently blocked the dedup UNIQUE index are now resolved non-destructively (keep newest, blank older unlockedmsg_ids — no row deleted) in both the migration and a newdedup_msg_id_indexhealth check (L-145). - Operational hardening:
checkupCLI exits with a readable error instead of hanging forever on a corrupt/foreign DB (M-143) and no longer advertises a phantom default DB path (M-142); HTTP port and embedding timeout env vars degrade to defaults instead of crashing startup (M-150);pause_persistence/resume_persistence/persistence_statusresponses carryscope: "process"and their descriptions state the HTTP-deployment blast radius (M-151); concurrentset_recall_precisionrollback can no longer clobber another writer (L-149). - Gate integrity:
verify-issues.shswitches to unit-separator serialization with an emitter assertion and a transport count check — a literal|in a registry field can no longer silently drop a check while the gate exits 0 (M-152); the vendored-common sync script gains a post-sync reconciliation gate for the not-yet-upstreamed patches (L-153);scripts/mutation-proof.pynow runs as a blocking CI job (L-154). - Standard v1.3 (#62): the Release Lifecycle Standard gains §2.8 (defect identifiers — one number space, severity-prefixed human-facing references like
M-144, barebug-NNNonly in the tree).
Verification
- Every behavioral fix ships a fail-first regression test (captured failing on the unfixed code for the intended assertion); one fix was independently re-proven by hand-applied mutation during review.
- Full suite: 556 passed, 5 skipped;
verify-issues.sh154 entries clean; ruff green; mutation-proof CI job green (first runs on the merged tree). - The branch code was validated read-only against a production-corpus copy (1,631 memories) before merge: clean run, expected findings only, and the new health check confirmed no legacy
msg_idcollisions in production. - PyPI artifacts (wheel + sdist) published via OIDC Trusted Publishing with provenance.