Skip to content

v2.5.2a2 — alpha: promotion-gate audit remediation (M-142..L-154)

Pre-release
Pre-release

Choose a tag to compare

@Cloto-dev Cloto-dev released this 23 Jul 09:38

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: store no longer reports embedded: true when the remote index POST returns 4xx/5xx (M-146); one malformed-JSON source row no longer blanks check_invalid_source_type / check_anonymous_source for the whole agent (M-144); delete_episode now purges the episode from the remote vector index, symmetric with delete_memory (M-148).
  • Isolation correctness: the episode-boundary recall penalty is scoped to the recall's project_id/channel axes instead of the whole agent (M-147).
  • Legacy-data remediation path: pre-v12 msg_id collisions that permanently blocked the dedup UNIQUE index are now resolved non-destructively (keep newest, blank older unlocked msg_ids — no row deleted) in both the migration and a new dedup_msg_id_index health check (L-145).
  • Operational hardening: checkup CLI 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_status responses carry scope: "process" and their descriptions state the HTTP-deployment blast radius (M-151); concurrent set_recall_precision rollback can no longer clobber another writer (L-149).
  • Gate integrity: verify-issues.sh switches 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.py now 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, bare bug-NNN only 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.sh 154 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_id collisions in production.
  • PyPI artifacts (wheel + sdist) published via OIDC Trusted Publishing with provenance.