Releasesv0.19.3
v0.19.3 — self-evolution flywheel hardening
This is the release note as published, not a rewrite of it. Release notes are published in the language they were written in.
A twelfth adversarial review, of the self-evolution internals (the project's differentiator). The statistical core — the honest-benchmark gates (McNemar/Wilson/Newcombe CIs, transfer-gate, diff-gate, rollback trigger, GEPA Pareto) — reviewed clean. The six fixes are in the skill-store persistence and lifecycle plumbing around it.
Fixed
- The learned-skill store is now crash-safe.
SkillStorewroteskills.jsonwith a plain truncating write on everyrecord_use(the flywheel's highest-frequency write) — a crash mid-write left it unloadable, losing the whole learned-skill library. It now writes atomically (temp +os.replace) and skips a single malformed entry (or a corrupt file) on load instead of aborting. - A regressed skill can now actually be demoted. Promotion carried the lifetime win-rate forward, so an
activeskill that started strong then broke needed ~8 straight failures to cross the retire threshold;promotenow resets the probation counters so demotion tracks recent behavior. - Deterministic skill retrieval — FTS ranking tie-breaks on name, so which card lands in the top-k (and gets credited a use/success) can't flip between runs on equal BM25 rank.
- No leaked SQLite connection per retrieval (the in-memory card index is now a closing context manager), and a resumed HITL-approved run no longer credits skill cards it didn't actually use.
Gate: 1452 passed / 3 skipped, mypy + ruff green.
Upgrade: `pip install --upgrade 'chimera-agent[full]'`