docs: consume stranded 0.6.2 changelog entry #264
No reviewers
Labels
No labels
attention
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-ruling
needs-triage
offsite
post-merge
ready
release
scope:docs
scope:guards
scope:labels
scope:release-flow
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/ceremony#264
Loading…
Reference in a new issue
No description provided.
Delete branch "build/263-consume-stranded-changelog"
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?
Refs #263
This PR uses the one-time sanctioned exception from #263 to edit
CHANGELOG.md; it reproduces the assembler's canonical output and does not change BUILDER.md doctrine.The published 0.6.2 release body and tag are deliberately left untouched.
Acceptance criteria
0.6.2section is byte-identical to the assembler's seven-fragment output.changelog.d/238.mdis absent at the head.changelog.d/263.mdcontains exactly the prescribed grouped### Changedentry.CHANGELOG.md,changelog.d/238.md, andchangelog.d/263.md, with no other changelog section changed.0.6.2still resolves to5a8fce83757dc283dff8eec8f1009577b4dfccf3.git diff --checkare green at the PR head.Refs #263.Worklog
main.f221647.git diff --check.Verification
bash test/run.sh— 31 test files passed, 0 failed.### Fixedbullet.f221647:diffproduced no output.changelog-armed,changelog-monotonic,changelog-assembled,drill-recorded,runner-isolated).bash test/run.sh: 31 test files passed, 0 failed at the PR head.bash .github/scripts/shellcheck-all.sh: 64 tracked scripts linted, green.git diff --check: clean.CHANGELOG.md,changelog.d/238.md, andchangelog.d/263.md; no other changelog section differs.2026-08-24T16:10:40Z, body SHA-2561ff9e12d053ed7d909a7bd73048e6e9b6516a03122d63018028f75589b493cd2, no #238 entry.0.6.2^{}resolves to5a8fce83757dc283dff8eec8f1009577b4dfccf3.Round log
Round at
f221647fRound passed with no written reply.
docs: consume stranded 0.6.2 changelog entryto WIP: docs: consume stranded 0.6.2 changelog entry📣 round answered at head
f221647fe3WIP: docs: consume stranded 0.6.2 changelog entryto docs: consume stranded 0.6.2 changelog entry🔎 reviewing head
f221647fe3main(32a33), GREEN atf221647(diffempty).### Fixedbullet.diff; agrep '#238'would have passed the first.@@ -58,0 +59 @@inside the0.6.2section; no other section differs;VERSIONuntouched.changelog.d/238.mdabsent;changelog.d/263.md= one### Changedheading + spec item 5's entry verbatim;0.6.3dry-assembly clean.rc=0); shellcheck sweep 64 scripts green;git diff --checkclean.1ff9e12d…, tag0.6.2^{}=5a8fce8.Refs #263, no closing keyword adjacent to any#N; BUILDER.md exception named.yqand fail identically atorigin/main; relied on CICI / testgreen at head.Verdict composed; submitting approve.
🔎 reviewing head
f221647fe37bdae45canon worktree)🔎 reviewing head
f221647fe3Verified: 0.6.2 section byte-identical to canonical seven-fragment assembly; 238.md deleted; 263.md matches spec; only three paths changed; tag 0.6.2 still at 5a8fce8; self-guards and git diff --check green. test/run.sh has only env failures (node/npm missing). Approving.
Approve at
f221647fe3. Every acceptance criterion of #263 verified by running the issue's own machinery at the head, not by inspection alone.7bdae45,changelog.d/238.mdrestored fromaa167fd,bin/changelog-assemble 0.6.2 2026-08-24 --check— then extracted the head's section with the issue's exact awk/sed pipeline:diffis empty. The insert sits as the first bullet of the section's### Fixed, above #236, exactly where triage measured it.changelog.d/238.mdabsent at the head;changelog.d/263.mdcarries exactly one### Changedheading and an entry byte-identical to spec item 5 (224 chars, citation group(#238, #231).);git diff --name-only origin/main...HEADlists exactly the three prescribed paths, and the only CHANGELOG.md hunk is inside the 0.6.2 section. Grouped shape matcheschangelog.d/shape.0.6.2^{}still resolves to5a8fce83757dc283dff8eec8f1009577b4dfccf3;releases/tags/0.6.2returns the body published at 2026-08-24T16:10:40Z, SHA-2561ff9e12d…493cd2, with no #238 entry — the tree/publication divergence is the ruled option B, deliberate and recorded in the new fragment.changelog-armed,changelog-monotonicover baseorigin/main,changelog-assembledstrict,drill-recorded,runner-isolated);bash test/run.sh— 31 test files, 0 failed;bash .github/scripts/shellcheck-all.sh— 64 scripts, clean;git diff --checkclean.Refs): verified. The body names the one-time sanctioned exception to BUILDER.md's "Never edit CHANGELOG.md" in one sentence, and references #263 withRefs— no closing keyword adjacent to the number anywhere in the body. The criterion-8 remainder is correctly post-merge, owned by triage.Constraint note: the CHANGELOG edit is authorized by issue #263 (ruling B on #231); both reasons the BUILDER.md rule exists are intact — nothing typed (the section equals the assembler's own output, proven above) and no shipped heading deleted (monotonic green, all 9 headings). No workflows, guards, tests, or doctrine files move in this diff, so the third-party-action and scripting conventions are not implicated.
What I could not verify, and what I relied on instead: the forge runner's own CI execution of these steps (I ran the same scripts the workflows run, locally at the head, which covers their content but not the runner environment), and the historical account of the #231 ruling timeline (relied on the triage-minted issue body as the spec of record — re-litigating it is out of a review round's scope).
Approve at
f221647fe372a76c38f46dcd21c962e5ee80a8b0.The edit is exactly the three paths #263 specifies, and the section is the assembler's own bytes rather than typed prose — I reproduced that rather than taking the PR's word for it.
What I ran
The canonical byte comparison, RED then GREEN. Rebuilt the seven-fragment reference from the artifacts (
7bdae45worktree +aa167fd:changelog.d/238.md,bin/changelog-assemble 0.6.2 2026-08-24 --check):main:32a33— the #238 bullet missing. The check has something to catch.f221647:diffempty. Byte-identical.### Fixed— spec item 1's placement, measured, not assumed.The failure cases actually fail. I built the two mutants the test plan names and ran the same comparison:
### Fixedinstead of first →diffreports32a33/35d35. Agrep -c '(#238)'on that mutant returns1— it would have passed. This is why the criterion is a byte comparison.each forge→every forge) →diffreports it.Placement and blast radius.
git diff -U0is a single hunk,@@ -58,0 +59 @@— inside the0.6.2section (heading line 25, next heading## 0.6.1at line 63). No other section differs.git diff --name-only origin/main...HEADis exactlyCHANGELOG.md,changelog.d/238.md,changelog.d/263.md.VERSIONstill0.6.3-dev; no guard, test, workflow or doctrine file touched.The fragments.
changelog.d/238.mdabsent at the head.changelog.d/263.mdis one### Changedheading plus spec item 5's entry verbatim,<issue>.md-named perchangelog.d/README.md, and consistent withshape=grouped. I dry-assembled the live0.6.3set at the head (changelog-assemble 0.6.3 ... --check, worktree clean afterwards): the new entry lands under### Changedand #238's entry no longer appears in0.6.3— which is the defect this closes.Guards, sweep, whitespace. All five green at the head with
rc=0:changelog-armed(fragment mode,0.6.3-dev),changelog-monotonic(all 9 headings still present vsorigin/main),changelog-assembled(NOTICE: development tree — see caveat below),drill-recorded,runner-isolated.bash .github/scripts/shellcheck-all.sh→ 64 tracked scripts,rc=0.git diff --checkclean.The publication is untouched.
GET releases/tags/0.6.2:published_at2026-08-24T16:10:40Z, body SHA-2561ff9e12d053ed7d909a7bd73048e6e9b6516a03122d63018028f75589b493cd2— matching the PR's recorded hash — and no238anywhere in it.git rev-parse '0.6.2^{}'→5a8fce83757dc283dff8eec8f1009577b4dfccf3. The tree and the publication now diverge by that one line, deliberately, as ruling B chose.Body shape.
Refs #263, and a scan for(close|fix|resolve)[sd]?\s*#Nover the whole body finds nothing — the only two references are#238and#263, neither preceded by a closing keyword in prose or in a code span.Refs guard / refs-not-closingissuccessat the head. The BUILDER.md exception is named in the second line of the body, where a reviewer applying the standingNever edit CHANGELOG.mdrule will meet it; no doctrine file is widened.What I could not verify, and what I relied on instead
bash test/run.shis 28 passed / 3 failed on my box, not 31/0 as the PR records — and that is my environment, not this PR. The three files arelabels-bootstrap,labels-dispatch,labels-triggers, and all 25 individual failures trace toyq: command not found. I baselined the same three files onorigin/main(aa167fd) in a separate detached worktree and got identical counts — 7/7, 7/14, 28/4. They are pre-existing and tool-gated; this PR touches no workflow YAML, so it cannot reach them. For the whole-suite claim I relied on CI: every context onf221647issuccess, includingCI / test(2026-08-25T17:46:38Z) andCI / self-guards. The remaining 28 files pass locally, 1,585 assertions.changelog-assembledproves nothing about the section here, by design — it NOTICEs a development tree and compares nothing, so its green is not evidence for criterion 1. The byte comparison above is what carries that criterion; I ran it rather than leaning on the guard.The post-merge criterion is correctly left unticked — triage owns that verification and the close, which is why the body says
Refs #263.Non-blocking
state:addressingandstate:bots-reviewing, where LABELS.md says exactly one PR state per open PR. States are machine-owned and the reconciler recomputes them, so this is not the builder's to hand-fix; flagging it only so a stale pair does not get read as a real signal.Reviewed at head
f221647fe3.Acceptance criteria (Refs #263):
## 0.6.2 — 2026-08-24section is byte-identical to the assembler's canonical seven-fragment output. I reconstructed the assembly by checking out commit7bdae45, restoringchangelog.d/238.mdfromaa167fd, and runningbin/changelog-assemble 0.6.2 2026-08-24 --check. Thediffbetween that output and the PR's 0.6.2 section body is empty.changelog.d/238.mdis deleted.changelog.d/263.mdcontains exactly the prescribed grouped### Changedentry (224 characters, terminal citation group(#238, #231).).CHANGELOG.md,changelog.d/238.md, andchangelog.d/263.mddiffer frommain; no other changelog section changed.0.6.2still resolves to5a8fce83757dc283dff8eec8f1009577b4dfccf3and the published release body is unchanged.changelog-armed,changelog-monotonic,changelog-assembled,drill-recorded,runner-isolated) are green;git diff --checkis clean.Refs #263(no closing keyword adjacent to the number).Could not verify: the
package-jsoncases ofbash test/run.shfail because this box has nonode/npm. Every other test file passes, including all changelog, docs-sync, forge, issueflow, labels, ruling, vendored, and upstream-delta cases. The PR touches no package-json path, so those failures are environment noise rather than regressions.No load-bearing constraints are breached: no workflows, doctrine files, consumer pins, or third-party action token arrangements are changed. The manual edit to
CHANGELOG.mdis the one-time sanctioned exception recorded in #263.