v2.5.0b3 — beta: post-b2 CI-incident fix bundle (bug-123, bug-124)
Pre-releasePre-release (2.5 Experimental line — the 2.4 series remains the Stable line, latest v2.4.40).
Fix-only beta carrying the two defects uncovered by the post-b2 CI-incident investigation — bug-123, bug-124 in qa/issue-registry.json — plus the upstream doc-drift corrections surfaced by the Zenn book fact-check audit (PRs #48, #50). No new features; DB schema and MCP tool contract unchanged.
Highlights
- Same-boot FTS recovery rebuild (bug-123, MEDIUM): the bug-118 recovery path recreated stale FTS triggers and flagged an index rebuild, but the rebuild condition never checked that flag — the actual rebuild was silently deferred to the next boot, leaving FTS search on a stale index for the whole recovered session. The rebuild now fires in the same boot that performs the recovery.
- Orphaned-connection interpreter hang (bug-124, HIGH, test-infra): every aiosqlite connection owns a non-daemon worker thread, so a test that re-pointed
database._db = Nonewithoutclose()left a thread that blocked interpreter exit forever — the suite passed in seconds, then the process hung until GitHub's 6-hour job limit. This is how b2 was merged with its test jobs still pending. Fixes: the offending test now goes through the existingclose_db()helper, the helper's docstring carries the doctrine, andci.ymlgained atimeout-minutes: 15backstop so any future hang fails fast instead of burning 6 runner-hours. - Doc drift (PR #48): LMEB expanded to its correct name (Long-horizon Memory Embedding Benchmark),
archive_episode'shistorydescription now states what the field is actually used for (start/end timestamp extraction; the episode embedding comes fromsummary), andcalibrate_threshold's description reflects the separation-based default. README Quick Start now leads with the bundledcpersona-memoryskill install path.
Deliberate non-change: version stays a fix-only beta — the structural gate for the _db = None orphan pattern (class prevention for bug-124) is tracked separately and will ride a later cut.
Verification before this cut: 352 passed / 5 skipped with clean interpreter exit, ruff clean, verify-issues.sh 124 issues / 0 stale / 0 errors; CI green on the bump commit (all four jobs individually confirmed).
Graduation line: 2.5.0b1 → 2.5.0b2 → 2.5.0b3 → (rc) → 2.5.0 final — the line then enters Current; Stable requires a later production-soak certification event (see SUPPORT.md).
🤖 Generated with Claude Code