Skip to content

feat(spec): the convergence diagnostic measures review growth - #962

Merged
leeovery merged 2 commits into
spec-truth-review-fixesfrom
spec-review-growth-accounting
Aug 20, 2026
Merged

feat(spec): the convergence diagnostic measures review growth#962
leeovery merged 2 commits into
spec-truth-review-fixesfrom
spec-review-growth-accounting

Conversation

@leeovery

Copy link
Copy Markdown
Owner

Why

Idea 40 recorded two diagnostics the stack never landed: the observed review loop grew its spec 6,835 → 14,685 words across six cycles while its declining finding counts were read as convergence — they tracked declining new text — and construction plausibly under-delivered. Both are the same number seen from two sides.

What

  • review_baseline_words — recorded when review opens (batched into the cycle-1 review_cycle write): the document's word count at the end of construction. Field surface accepts it as a free topic field (probed live); specification-format.md's metadata table documents it; restart deletes it alongside the tracking subtree.
  • The spec-review convergence diagnostic gains a Document growth: {baseline} → {current} words (+N across review) line and a flag when review has added more than a quarter of the construction baseline: the loop is authoring, not correcting — weigh whether construction under-delivered; falling finding counts here track falling new text, not convergence. Absent baseline (pre-existing reviews) skips both.
  • Simulation pins the batched write and the numeric round-trip. Docs gain the user-facing sentence.

Gates: simulation, conventions lint, prose corpus, typecheck all green. Snapshot goldens unchanged by this branch (no engine edits); note the stored .recipe-hash files corpus-wide predate the stack's engine change, so full npm test runs rebuild all worlds (~4 min) until they're refreshed — flagged in the review report.

Stacks on #961. Part 8 — completes the idea-40 stack.

🤖 Generated with Claude Code

leeovery and others added 2 commits August 20, 2026 11:39
Idea 40's two undiagnosed observations, landed as one number: the
observed review loop grew its spec 6,835 → 14,685 words across six
cycles while declining finding counts were read as convergence — they
tracked declining new text. Review now records the construction
baseline when it opens (review_baseline_words, batched into the
cycle-1 write), and the spec-review convergence diagnostic shows
document growth beside the finding trend, flagging when review has
added more than a quarter of the construction baseline — the loop is
authoring, not correcting, and construction may have under-delivered.
Restart deletes the baseline with the tracking subtree; the simulation
pins the batched write and numeric round-trip.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The batched cycle-1 write broke nine invariant tokens across five prose
cases (the matcher is substring — review_cycle=1 never contains
review_cycle 1); all re-pinned, with review_baseline_words= pinned and
the construction baseline named in the four asserts' expected worlds.
The documented command drops its tr (the stdin form pads on neither
shell, and tr was undeclared); the restart deletes read 'where present'
so an absent field's error is expected; the growth line renders
{live_words} (a computed name) with a signed net value, and the
threshold flag's text goes neutral per ruling — growth tracing to
sources is the loop working; the flag asks whether it does, and the
construction-under-delivered framing is gone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@leeovery
leeovery force-pushed the spec-review-growth-accounting branch from 63793ab to fa4d7c4 Compare August 20, 2026 10:41
@leeovery
leeovery merged commit ad49dee into main Aug 20, 2026
@leeovery
leeovery deleted the spec-review-growth-accounting branch August 20, 2026 11:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant