Skip to content

spec: seed the 4.3 cycle with one line per block - #91

Merged
Nicholas-Keystate merged 1 commit into
Nicholas-Keystate:mainfrom
dhh1128:spec/4.3-seed-block-format
Aug 27, 2026
Merged

spec: seed the 4.3 cycle with one line per block#91
Nicholas-Keystate merged 1 commit into
Nicholas-Keystate:mainfrom
dhh1128:spec/4.3-seed-block-format

Conversation

@dhh1128

@dhh1128 dhh1128 commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

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.py enforces 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.

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 Nicholas-Keystate left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Nicholas-Keystate added a commit that referenced this pull request Aug 27, 2026
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.
Nicholas-Keystate added a commit that referenced this pull request Aug 27, 2026
…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.
@Nicholas-Keystate
Nicholas-Keystate merged commit e0cd160 into Nicholas-Keystate:main Aug 27, 2026
1 check passed
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.

2 participants