Context
Live failure during the v13 cut (2026-06-12 ~05:55, operator-run): publish.mjs step 2's git commit -m "Release v13.0.0" triggered the husky pre-commit battery, which failed on pre-existing trailing whitespace in learn/agentos/NeuralLink.md:297 (staged because prepare.mjs regex-updates the version-proof line in that file) and sibling-killed check-shorthand. lint-staged reverted the staged release state; the cut died at step 2 of 6.
Release classification: release-blocking — the cut cannot complete without it (filed mid-cut).
The Problem
The release pipeline's commits are machine-generated artifact commits (build outputs, archive moves, notes finalization) staged via broad git add .. Developer-workflow hooks (whitespace, shorthand, ticket-archaeology) gate HUMAN-authored changes; running them against a release tree means ANY latent dirt anywhere in generated-or-touched files kills the release at its most fragile moment — mid-pipeline, after prepare/build mutated the tree. The hooks' purpose is already served upstream: every change in the tree arrived through hook-gated PR commits.
The Architectural Reality
buildScripts/release/publish.mjs has three commit sites: :109 (the Release commit), :165 (notes-hash finalization), :253 (ticket archive). All use plain git commit. The husky pre-commit (check-chore-sync + lint-staged) fires on each. The whitespace instance itself: learn/agentos/NeuralLink.md:297 carries a pre-existing trailing space ("### Scenario 2: Data ") — latent until prepare.mjs's version-replace staged the file.
The Fix
--no-verify on all three git commit invocations in publish.mjs — the release pipeline is the sanctioned bypass (same class as the data-sync pipeline's exception to branch protection).
- Fix the latent whitespace at
NeuralLink.md:297 so the file is clean regardless.
Acceptance Criteria
Out of Scope
- The check-shorthand SIGKILL under resource pressure (separate, non-blocking — it was the sibling-kill here, not the cause).
Related
#12696 (the cut), the freshness/lint substrate family.
Origin Session ID: e605ce21-3668-445c-bc00-45896aa9a092
Retrieval Hint: "publish.mjs husky pre-commit no-verify release commit died"
Context
Live failure during the v13 cut (2026-06-12 ~05:55, operator-run):
publish.mjsstep 2'sgit commit -m "Release v13.0.0"triggered the husky pre-commit battery, which failed on pre-existing trailing whitespace inlearn/agentos/NeuralLink.md:297(staged becauseprepare.mjsregex-updates the version-proof line in that file) and sibling-killedcheck-shorthand. lint-staged reverted the staged release state; the cut died at step 2 of 6.Release classification:release-blocking — the cut cannot complete without it (filed mid-cut).The Problem
The release pipeline's commits are machine-generated artifact commits (build outputs, archive moves, notes finalization) staged via broad
git add .. Developer-workflow hooks (whitespace, shorthand, ticket-archaeology) gate HUMAN-authored changes; running them against a release tree means ANY latent dirt anywhere in generated-or-touched files kills the release at its most fragile moment — mid-pipeline, after prepare/build mutated the tree. The hooks' purpose is already served upstream: every change in the tree arrived through hook-gated PR commits.The Architectural Reality
buildScripts/release/publish.mjshas three commit sites::109(the Release commit),:165(notes-hash finalization),:253(ticket archive). All use plaingit commit. The husky pre-commit (check-chore-sync+ lint-staged) fires on each. The whitespace instance itself:learn/agentos/NeuralLink.md:297carries a pre-existing trailing space ("### Scenario 2: Data ") — latent until prepare.mjs's version-replace staged the file.The Fix
--no-verifyon all threegit commitinvocations inpublish.mjs— the release pipeline is the sanctioned bypass (same class as the data-sync pipeline's exception to branch protection).NeuralLink.md:297so the file is clean regardless.Acceptance Criteria
Out of Scope
Related
#12696 (the cut), the freshness/lint substrate family.
Origin Session ID: e605ce21-3668-445c-bc00-45896aa9a092
Retrieval Hint: "publish.mjs husky pre-commit no-verify release commit died"