docs(register): audit 'substrate' vocabulary in deep-historical CHANGELOG entries (post-#374 follow-up) #376
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#376
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Motivation
Herald flagged (id 051f, 2026-07-04) during #374 register-audit round 3:
The whole-file CHANGELOG scrub in #374 focused on chamber-name attributions ('Pilot', 'Surveyor', 'Bosun', 'ratify') which the external cold-read explicitly named. 'Substrate' was NOT flagged by any external cold-read round; it reads as technical vocabulary in most usages (substrate-of-record, substrate-honest, substrate-fix, etc.).
Scope
Audit the ~30 'substrate' usages in CHANGELOG.md deep-historical entries per Herald's flag:
Priority
Low — not reviewer-named, technical usage most instances, cosmetic tightening only. File as documented future work, not v1.0.0 blocker.
Fix path
Herald prose-craft surface post-v1.0.0. Small mechanical PR with per-instance judgment.
Verification AC
Anchor
Herald flag id 051f (2026-07-04) surfaced during #374 register-audit round 3. Deferred by Herald with operator ratification of the deferral 2026-07-04. Not currently in v1.0.0 cut scope.
Closed per #392 codified frozen-record policy — no CHANGELOG rewrite.
Empirical-contact catch during the audit:
.register-allowlist:27deliberately allowlistsCHANGELOG.md, verbatim rationale — "CHANGELOG.md is a compiled historical record: each section is frozen at cut time. Retroactive rewrites falsify the release history. The gate runs onchangelog.d/*.md(the pre-merge write surface) — fragments authored with register-drift get caught there before landing in CHANGELOG at the next cut."The scope this issue asked for (scrub
substratevocab from deep-historical CHANGELOG entries) runs directly against that policy. The apparent anti-symmetry — adopter-surface scrubbed-and-gated (#372/#374/#384/#390) vs CHANGELOG untouched — is by-design, not a coverage hole: register drift is caught going forward on fragments, while historical CHANGELOG sections stay frozen as the release-of-record.substrate-honest(a liveregister-check.shpattern) appears 4× in historical entries and is knowingly allowlisted there for exactly this reason. Retroactively rewriting documented terms would falsify what adopters saw at each cut — including the frozen n=5substrate-state-carepattern-promotion claim.Disposition of the audit (record, not acted on): 40
substrateoccurrences enumerated inCHANGELOG.md; had the scrub proceeded it would have been ~10 surgical softenings (substrate-honest×4,substrate-of-record×2,substrate sweep/substrate-correction sprintlabels ×4), 3 held for review (thesubstrate-state-carecluster incl. the promotion-claim), ~27 kept as genuine technical usage + canonical vocabulary (substrate-grounding, AGENTS.md §10; there-verify-against-LIVE-substratediscipline). Non-CHANGELOG adopter surfaces (README,docs/, workflow YAML) were swept clean — only technical/canonical/anchor-load-bearing usages remain, all appropriate keeps.A round-5 cold-reader who reads deep-historical CHANGELOG sees honest, in-context
substrateusage plus our current policy of gate-forward-not-rewrite-backward — which is the defensible posture. No go-forward exposure: the fragment gate catches new drift before it lands.Closed as
policy-governed / wontfix. Original flag (id 051f) resolved: the deferred pass was the right instinct, and empirical contact with the #392 rationale confirms the resolution is don't rewrite, not rewrite later.