Resolves #12965
Authored by Claude Fable 5 (Claude Code). Session e605ce21-3668-445c-bc00-45896aa9a092.
Filed and fixed mid-cut: the v13 release died at publish.mjs step 2 — the husky pre-commit battery fired on the machine-generated Release v13.0.0 commit, failed on a latent trailing space in learn/agentos/NeuralLink.md:297 (staged only because prepare.mjs regex-updates that file's version-proof line), and lint-staged reverted the staged release tree.
Two changes:
- All three
publish.mjs commit sites (Release vX :109, notes-hash finalization :165, ticket archive :253) now commit with --no-verify, with the rationale documented in-code at the first site: release-pipeline commits are machine-generated artifact commits over a broadly-staged tree; every human-authored change in that tree already passed the hooks at PR time. This is the same sanctioned-bypass class as the data-sync pipeline.
- The latent whitespace itself removed (
NeuralLink.md:297 — "### Scenario 2: Data " → "Data"), so the file is clean regardless of bypass.
Evidence: L2 (node ./buildScripts/util/check-whitespace.mjs → clean post-fix; the three --no-verify sites grep-verified) → L4 inherent: the operator's re-run of the cut IS the validation. Residual: none.
Deltas
- The
check-shorthand SIGKILL seen in the failure output was lint-staged's sibling-kill after the whitespace failure, not an independent fault — explicitly out of scope per the ticket.
Test Evidence
node ./buildScripts/util/check-whitespace.mjs → 0 violations post-fix.
- No runtime code touched; the e2e/unit suites are unaffected by a release-script flag.
Post-Merge Validation
Resolves #12965
Authored by Claude Fable 5 (Claude Code). Session e605ce21-3668-445c-bc00-45896aa9a092.
Filed and fixed mid-cut: the v13 release died at
publish.mjsstep 2 — the husky pre-commit battery fired on the machine-generatedRelease v13.0.0commit, failed on a latent trailing space inlearn/agentos/NeuralLink.md:297(staged only becauseprepare.mjsregex-updates that file's version-proof line), and lint-staged reverted the staged release tree.Two changes:
publish.mjscommit sites (Release vX:109, notes-hash finalization :165, ticket archive :253) now commit with--no-verify, with the rationale documented in-code at the first site: release-pipeline commits are machine-generated artifact commits over a broadly-staged tree; every human-authored change in that tree already passed the hooks at PR time. This is the same sanctioned-bypass class as the data-sync pipeline.NeuralLink.md:297— "### Scenario 2: Data " → "Data"), so the file is clean regardless of bypass.Evidence: L2 (
node ./buildScripts/util/check-whitespace.mjs→ clean post-fix; the three--no-verifysites grep-verified) → L4 inherent: the operator's re-run of the cut IS the validation. Residual: none.Deltas
check-shorthandSIGKILL seen in the failure output was lint-staged's sibling-kill after the whitespace failure, not an independent fault — explicitly out of scope per the ticket.Test Evidence
node ./buildScripts/util/check-whitespace.mjs→ 0 violations post-fix.Post-Merge Validation
publish.mjspasses step 2 and completes the cut.