Skip to content

v2.18.1 — The maturation view actually reaches smem_health

Choose a tag to compare

@acidkill acidkill released this 31 Jul 19:32
· 134 commits to main since this release

2.18.0 added stage_distribution and semantic_gate_blockers to the health report and
computed both on every call. Neither reached anyone. The smem_health MCP handler and the
smem health CLI command each build an explicit response dict, and both simply omitted the
new keys — the fields existed on the report object, were populated correctly, and were
dropped at the serialization boundary. Verifying through DiagnosticsEngine.analyze()
passes on the object that boundary then discards, which is exactly why this survived the
original release.

Both surfaces now carry them, omitted rather than nulled when a backend cannot answer,
matching how smem_evolution already treats the same two fields.

smem health also never showed top_penalties at all, so 2.18.0's corrected remedy text —
the one that names spaced recall and says smem consolidate will not raise the ratio on its
own — was reachable only over MCP and the dashboard. A CLI user saw a low consolidation bar
and no explanation for it. The CLI now prints the biggest penalties with their remedy, plus
the stage distribution and the semantic-gate breakdown. The semantic-gate line says what its
numbers mean (18 waiting on dwell time, 9 waiting on recall spacing, 3 ready), and calls
out the ready bucket as the only one a smem consolidate run moves.

Both payloads are now produced by one serializer rather than two hand-maintained dicts.
That duplication is the actual defect here: two lists of keys, written out by hand, drift
apart the moment the report grows a field — which is how these two ended up missing from
both surfaces while top_penalties was missing from only one. A field added to the report
and to the serializer is now on both surfaces or on neither. smem health --json
consequently also gained contradiction_count, conflict_rate, and the weight /
penalty_points the MCP payload had always carried on each penalty.

docs/guides/brain-health.md documents the maturation fields, and its example
top_penalties[].action no longer quotes the pre-2.18.0 remedy that told the reader to run
smem consolidate.