docs: correct upstream sync campaign record #270
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#270
Loading…
Reference in a new issue
No description provided.
Delete branch "build/269-upstream-sync-record"
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?
Closes #269
Worklog
Acceptance criteria
0.7.0as its floor and0.7.6as the 2026-08-27 measured ceiling## The next campaign mergesis positioned between the port record and standing resolutions.upstream-ref, citing #268 and 2026-08-27.upstream-refandCHANGELOG.mdare untoucheddocs/UPSTREAM-SYNC.mdandchangelog.d/269.mdMeasurement
At 2026-08-27,
git ls-remote --tags https://github.com/heavy-duty/ceremony.gitreports0.7.6newest. Against baseline8c3a4d1dee2bdb5ac06a632a285bb65ab2615214, the required commands report 92 files, 25,121 insertions, 971 deletions, and 488 commits.Spec amendment
Triage amended #269 on 2026-08-27 to scope the two contradictory literal checks to the stale range and decided conditional. The implementation satisfies those amended criteria; fresh verification at this head found one historical 0.7.4 mention, no stale bounded-range form, and no decided conditional.
Round log
Round at
7e967481Round passed with no written reply.
docs: correct upstream sync campaign recordto WIP: docs: correct upstream sync campaign recordRound answer at head
7e96748193:📣 round answered at head
7e96748193WIP: docs: correct upstream sync campaign recordto docs: correct upstream sync campaign record🔎 reviewing head
7e96748193through \0.7.4`andIf that campaign mergesboth silent indocs/;git grep -c '0.7.4' -- docs/reports exactly1`.git ls-remote --tagson upstream reports0.7.6newest; the file stamps0.7.6/ 2026-08-27.actions/..upstream-refandCHANGELOG.mduntouched; diff is exactly the two expected paths; fragment matches spec 6 byte for byte.yq; forge CI green on all seven contexts.Verdict submitted: approve.
🔎 reviewing head
7e96748193bcbcd90(both amended greps hit lines 33/34)Verdict: approve — head
7e967481935b54ff416d63ba2e8d13eb89d6be65, reviewed against #269 as amended 2026-08-27.All nine acceptance criteria verified by running them at this head:
git grep -n 'through0.7.4' -- docs/is empty;git grep -c '0\.7\.4' -- docs/reports exactly 1 — spec 1's closing sentence. Both greps hit at merge basebcbcd90(docs/UPSTREAM-SYNC.md:33-34), so the criteria bind to what was true before the edit.git grep -n 'If that campaign merges' -- docs/is empty; the replacement states the merge unconditionally, not as a negated conditional.0.7.0named; ceiling0.7.6equals the newest tag fromgit ls-remote --tags https://github.com/heavy-duty/ceremony.gitre-measured live today, and the file's stamp (2026-08-27) is the same day I measured.## The next campaign mergessits after## 0.6.2 port record(L20) and before## The standing resolutions(L61); the merge and.upstream-refadvance are stated with noif, citing #268 and the 2026-08-27 ruling date.0.7.6tag against8c3a4d1dee2bdb5ac06a632a285bb65ab2615214: 92 files, 25,121 insertions, 971 deletions, 488 commits — exact. The three action-script deltas reproduce too (+1619runner-isolated, +913issueflow-reconcile, +889labels-reconcile) and are the three heaviest action scripts in the delta.git diff origin/main -- .upstream-ref CHANGELOG.mdis empty.git diff --name-only origin/main...HEADlists exactlydocs/UPSTREAM-SYNC.mdandchangelog.d/269.md.bash actions/changelog-armed/changelog-armed.shis green with the fragment present; the fragment is byte-identical to spec 6 (diff against the spec text empty), both entries 153 characters.CEREMONY_REQUIRE_NPM=1 CEREMONY_REQUIRE_YQ=1 bash test/run.sh→ 31 test files passed, 0 failed;marker-check.sh,self-ref-check.sh,vendored-check.shall green.Test-plan negative guards reproduced in the throwaway checkout, each refused and the mutation discarded: a 328-character fragment entry (bound 300) refused by changelog-armed; a non-terminal
(#269)citation refused by changelog-armed; a bare**unreleased**written into the new section refused by marker-check. The worktree was clean at the head afterwards.Could not verify: nothing material — every criterion was run locally or measured live. Method notes: upstream was measured read-only (
ls-remoteplus a no-refs fetch of the0.7.6tag into the throwaway worktree); CI state was read from the commit-status endpoint for this head SHA, not from the search index.Conventions: conventional
docs:title withscope:docs; fragment present per spec 6;docs/UPSTREAM-SYNC.mdis not in the vendored setdocs/VENDORED.txtdeclares, so #280's cross-repo citation ban does not bind it — and the new section cites same-repo issues only (#268, #198) regardless.Convergence note: the remaining panel verdicts are owed by the other requested reviewers; on full approval the builder hands off to the human, who merges.
🔎 reviewing head
7e96748193Approve at head
7e967481935b54ff416d63ba2e8d13eb89d6be65.Reviewed the whole PR in a detached worktree at this head against #269's
acceptance criteria as amended 2026-08-27, then the repo's constraints,
then the change itself. Every criterion was re-run here rather than read off
the worklog.
Acceptance criteria — all eight verified at this head
git grep -n 'through `0.7.4`' -- docs/→exit=1, silent;git grep -c '0\.7\.4' -- docs/→docs/UPSTREAM-SYNC.md:10.7.0, stamped ceiling0.7.6@ 2026-08-27git ls-remote --tags https://github.com/heavy-duty/ceremony.git | grep -v '\^{}' | sed 's|.*refs/tags/||' | sort -V | tail -1→0.7.6, run todaygit grep -n 'If that campaign merges' -- docs/→exit=1, silent## The next campaign mergesat line 41, after## 0.6.2 port record(20) and before## The standing resolutions(61); prose is unconditional, carries noif, cites #268 and 2026-08-27git diff --shortstat 8c3a4d1… 0.7.6→92 files changed, 25121 insertions(+), 971 deletions(-);git rev-list --count→488.upstream-ref/CHANGELOG.mduntouchedgit diff origin/main -- .upstream-ref CHANGELOG.md→ emptygit diff --name-only origin/main...HEAD→changelog.d/269.md,docs/UPSTREAM-SYNC.mdchangelog-armedgreen; fragment matches spec 6 byte for byte (cat -A), both entries 153 charsI also checked the two claims the section makes that no criterion grep can
reach. The per-file figures are exact —
git diff --numstat 8c3a4d1… 0.7.6 -- actions/ranksrunner-isolated.sh+1619,issueflow-reconcile.sh+913,labels-reconcile.sh+889 as the top three, in that order — and "step 4 ofthe procedure below" resolves correctly (
### 4. Audit what the merge brought in that did NOT conflict, line 127, genuinely below line 41). Both specblockquotes land word-for-word, including triage's amended opener "The next
sync campaign is a merge, not a port".
Test plan's failure cases actually fail
Ran all three as mutations in the worktree and discarded each; tree verified
clean afterwards (
git status --porcelainempty).changelog-armedexits 1: "has a 328-character entry … the bound is 300". A non-terminal citation ((#269) trailing.) → exits 1: "issue citation is not terminal".**unreleased**written into the new section without a citation →marker-checkexits 1, namingdocs/UPSTREAM-SYNC.md:43.`0.7.0` through `0.7.6`range →marker-checkandchangelog-armedboth green,git grep -cstill1. Confirmed as the issue states: every guard passes and only criterion 3 catches it. That is the argument for the shape, and it holds.Guards and suite
CEREMONY_REQUIRE_NPM=1 CEREMONY_REQUIRE_YQ=1 bash test/run.sh→ 31 testfiles passed, 0 failed.
marker-check,self-ref-check,vendored-check,changelog-armedall green. Forge CI on this head is green on all sevencontexts, including
Refs guard / refs-not-closing.What I could not verify, and what I relied on instead
yqwas absent on this box at first, and the initial suite run reported4 files / 26 assertions failing —
labels-bootstrap,labels-dispatch,labels-scope,labels-triggers, allyq-driven workflow-YAML parsers. Iinstalled
yqv4.53.6 and re-ran rather than reporting a green-by-omissionsuite; the numbers above are from that second run. Worth flagging as an
environment gap for any reviewer who reports this suite green without it.
actionlintis not installed here. No workflow or action YAML changesin this diff, so nothing was in its scope; I relied on forge CI's
self-guardsjob for that gate.github.com/heavy-duty/ceremonyinto a scratch directory. Read-only, andoutside both this clone and the review worktree — no remote was added to
either, per the procedure's own read-only rule.
Disclosure
The amendment these criteria are read against was written by this identity in
its triage role, in a separate session, after the builder raised three
contract collisions on #269. I reviewed the implementation against the
amended contract as written and did not touch the issue in this session. The
amendment came through the triage door and not the builder's — worth stating
plainly, since a builder-edited spec would have been the real defect and this
is not that.
Nits (non-blocking, builder's discretion)
Run \git ls-remote --tags` for today's ceilingomits the upstream URL, while the criterion and the surrounding procedure both give it in full. A reader following the sentence from this section alone would run it againstorigin`, which is this forge, and get the wrong answer. It is spec 1'smandated prose verbatim, so this is triage's line to change, not a defect
in the build — flagging it for whoever next edits the file.
Nothing blocking. The record is true today and stays true when upstream tags
0.7.7, which is the whole point of the change.Approve — head
7e967481935b54ff416d63ba2e8d13eb89d6be65satisfies #269 as amended 2026-08-27I reviewed the whole PR in a detached worktree at
7e96748against the acceptance criteria in #269 and the repo's standing constraints.Verified
docs/UPSTREAM-SYNC.md.git grep -n 'through \0.7.4`' -- docs/` returns nothing.git grep -n 'If that campaign merges' -- docs/returns nothing.git grep -c '0\.7\.4' -- docs/returns1, and the single hit is the required sentence in the replacement paragraph that names0.7.4as what the old sentence froze.0.7.0and a stamped measurement. The new paragraph states0.7.0 onward, 0.7.6 newest as measured 2026-08-27and tells the reader to rungit ls-remote --tagsfor today's ceiling.## The next campaign mergesis positioned correctly — immediately after## 0.6.2 port recordand immediately before## The standing resolutions..upstream-ref, cites #268, and records the operator ruling date 2026-08-27.git diff --shortstat 8c3a4d1dee2bdb5ac06a632a285bb65ab2615214 0.7.6→92 files changed, 25121 insertions(+), 971 deletions(-)git rev-list --count 8c3a4d1dee2bdb5ac06a632a285bb65ab2615214..0.7.6→488.upstream-refandCHANGELOG.mdare untouched:git diff origin/main -- .upstream-ref CHANGELOG.mdis empty.docs/UPSTREAM-SYNC.mdandchangelog.d/269.md.changelog.d/269.mdcarries exactly the two entries specified in #269, each under 300 characters and closing on(#269).bash actions/changelog-armed/changelog-armed.shbash .github/scripts/marker-check.shbash .github/scripts/self-ref-check.shbash .github/scripts/vendored-check.shbash test/upstream-delta.test.shbash test/no-runtime-gh.test.shbash .github/scripts/shellcheck-all.shCI / testand the release/docs/self-guards/action exercises all showSUCCESSin the live status rollup).Not verified locally / relied on instead
CEREMONY_REQUIRE_NPM=1 CEREMONY_REQUIRE_YQ=1 bash test/run.shand thepackage-jsontest cases could not be exercised becausenode/npmare not installed in this box. The bash-only tests all pass; I relied on the greenCI / teststatus for the Node-dependent coverage.bash .github/scripts/actionlint-all.shcould not be run becauseactionlintis not installed in this box. I relied on CI for workflow syntax validation.No blocking concerns remain.