spec: seed the 4.3 cycle with one line per block - #91
Conversation
Eighty-column wrapping makes a line number name a sentence fragment, and it puts line breaks inside digests: 23 of 27 files in spec/ carry a sha256 broken across a line boundary, 49 in all, each one a seed-header pin to a ratified edition. Reading rule 2 says a digest whose preimage is not stated is decoration; one nobody can select or paste is close to it. The ratified document is clean at 11 whole digests, so the damage is in the drafting corpus. One line per block fixes both and is provable rather than argued: normalize whitespace on each side, diff, and an empty result says an editorial pass altered no text. check-block-lines.py enforces the shape, version-gated at 4.3 so nothing older migrates. Separated from the locator scheme on purpose. A reflow is objectively checkable; locator tokens, dropping bullets, and <dfn> are judgment, and they travel elsewhere. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Daniel Hardman <daniel.hardman@gmail.com>
Nicholas-Keystate
left a comment
There was a problem hiding this comment.
Substance-gate review at the branch bytes, with one live exhibit the seed did not have when filed.
The finding is now self-demonstrating on main. Running check-block-lines.py at today's tree: the covenant-seal carriage seed merged this afternoon (#81, spec/custos-4.3-seed-covenant-seal-carriage.md) fails it — 80-column wrapped, 163+ continuation lines, and its header pin splits the ratified sha256 across a line boundary at L5-6. Finding #90's defect, reproduced in a file that entered the tree today, hours before this review. No stronger evidence for version-gating the check is available.
Verified: the checker's semantics (block = paragraph / list item / table row / fenced block / heading; 4.3-gated so nothing legacy migrates); the reflow-provability claim (whitespace-normalized diff = empty is a mechanical test); the separation discipline (locator carriage held, <dfn> withdrawn pending a term test — correctly refusing to bundle judgment with the one provable change).
Merge carries one obligation: with the CI hook active, the #81 seed must reflow to one-line-per-block in the same motion or main goes red. The reflow is exactly the checkable operation this seed defines — whitespace-normalized diff empty, no text altered — so it will be applied as a follow-up commit with the check's own proof cited. The 606-citation cost the seed prices lands only on forward pointers into the successor, as stated; citations into ratified 4.2 are undisturbed.
One discipline note for the drafting corpus: future seeds should arrive one-line-per-block from birth; the checker makes that a gate rather than a request.
The merge obligation from the #91 review: the seed (merged at #81, hours before the block-line check landed) was the one 4.3-and-later file failing the new discipline — 80-column wrapped, its header pin splitting the ratified sha256 across a line boundary, finding #90's defect reproduced live. Reflowed under the check's own proof: the marker-aware whitespace-normalized diff against the pre-reflow bytes is empty — no text altered, carriage only.
…the #81 seed reflow Merged on the substance review: the checker's semantics verified, the reflow-provability claim mechanical, the separation discipline correct (locator carriage held on the clean-root decision, dfn withdrawn pending a term test). The live exhibit: the covenant-seal seed merged today failed the check on arrival — finding #90 self-demonstrating — and is reflowed in this merge under the whitespace-normalized-diff proof. verify.yml carries both new discipline steps.
Finding #90: the ratified text wraps at eighty columns, so a line number names a sentence fragment rather than anything citable, and the wrap puts line breaks inside digests. Measured 2026-08-26 across
spec/: 23 of 27 files carry a sha256 broken across a line boundary, 49 in all, each one a seed-header pin naming the ratified edition that seed repairs. Reading rule 2 says a digest whose preimage is not stated "is not a pin; it is decoration" (L993-1010), and one nobody can select or paste without repairing it by hand is close to that. The ratified document itself is clean at 11 whole digests, so the damage sits in the drafting corpus.The seed proposes one line per block — paragraph, list item, table row, fenced block, heading. Roughly 370 blocks against 3,940 lines.
This is the piece of the carriage work that is provable rather than argued, which is the whole reason it stands alone. A reflow is correct when normalizing whitespace on both sides and diffing gives nothing, so a check can state that an editorial pass altered no text.
tools/check-block-lines.pyenforces the resulting shape and is version-gated at 4.3, so nothing older has to migrate.It also survives re-rooting. The clean-root question #77 lists last constrains what the successor says; this constrains only how its lines are broken.
Split out of the original locator seed deliberately. That seed bundled this with locator tokens, with dropping markdown bullets, and with
<dfn>, which are judgment where this is checkable.Relates to #90, #75, #85, and #77.