docs: correct upstream sync campaign record #270

Merged
andres merged 1 commit from build/269-upstream-sync-record into main 2026-08-27 12:45:00 +00:00

Closes #269

Worklog

  • Reproduce the stale frozen range at the merge base
  • Reproduce the wrapped conditional with a multiline predicate
  • Re-measure the newest upstream tag and delta at this branch head
  • Replace the stale deferral and record the unconditional merge decision
  • Add the exact two-entry changelog fragment
  • Resolve #269 literal acceptance-check contradictions with triage
  • Run negative guard cases and discard each mutation
  • Run the full local verification suite
  • Post the completed round reply and handoff signal

Acceptance criteria

  • No stale frozen ceiling survives in the living procedure
  • The deferral records 0.7.0 as its floor and 0.7.6 as the 2026-08-27 measured ceiling
  • ## The next campaign merges is positioned between the port record and standing resolutions
  • The next campaign is stated unconditionally as a merge that advances .upstream-ref, citing #268 and 2026-08-27
  • The recorded 92 files, +25,121/-971, and 488 commits reproduce at the branch head
  • .upstream-ref and CHANGELOG.md are untouched
  • The diff contains only docs/UPSTREAM-SYNC.md and changelog.d/269.md
  • Required guards and full suite are green

Measurement

At 2026-08-27, git ls-remote --tags https://github.com/heavy-duty/ceremony.git reports 0.7.6 newest. Against baseline 8c3a4d1dee2bdb5ac06a632a285bb65ab2615214, 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 7e967481

Round passed with no written reply.

Closes #269 ## Worklog - [x] Reproduce the stale frozen range at the merge base - [x] Reproduce the wrapped conditional with a multiline predicate - [x] Re-measure the newest upstream tag and delta at this branch head - [x] Replace the stale deferral and record the unconditional merge decision - [x] Add the exact two-entry changelog fragment - [x] Resolve #269 literal acceptance-check contradictions with triage - [x] Run negative guard cases and discard each mutation - [x] Run the full local verification suite - [x] Post the completed round reply and handoff signal ## Acceptance criteria - [x] No stale frozen ceiling survives in the living procedure - [x] The deferral records `0.7.0` as its floor and `0.7.6` as the 2026-08-27 measured ceiling - [x] `## The next campaign merges` is positioned between the port record and standing resolutions - [x] The next campaign is stated unconditionally as a merge that advances `.upstream-ref`, citing #268 and 2026-08-27 - [x] The recorded 92 files, +25,121/-971, and 488 commits reproduce at the branch head - [x] `.upstream-ref` and `CHANGELOG.md` are untouched - [x] The diff contains only `docs/UPSTREAM-SYNC.md` and `changelog.d/269.md` - [x] Required guards and full suite are green ## Measurement At 2026-08-27, `git ls-remote --tags https://github.com/heavy-duty/ceremony.git` reports `0.7.6` newest. Against baseline `8c3a4d1dee2bdb5ac06a632a285bb65ab2615214`, 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:7e967481935b54ff416d63ba2e8d13eb89d6be65 --> **Round at 7e967481** _Round passed with no written reply._
codex-bot-andresmgsl added 1 commit 2026-08-27 10:20:21 +00:00
docs: correct upstream sync campaign record
All checks were successful
CI / self-guards (pull_request) Successful in 8s
CI / action-exercise (pull_request) Successful in 6s
CI / release-exercise (pull_request) Successful in 11s
CI / docs-sync-exercise (pull_request) Successful in 4s
labels / labels (pull_request) Successful in 7s
CI / test (pull_request) Successful in 3m40s
Refs guard / refs-not-closing (pull_request) Successful in 5s
7e96748193
codex-bot-andresmgsl changed title from docs: correct upstream sync campaign record to WIP: docs: correct upstream sync campaign record 2026-08-27 10:20:29 +00:00
forgejo-actions added the
scope:docs
state:building
labels 2026-08-27 10:20:49 +00:00
Author
Member

Round answer at head 7e96748193:

  • Triage amended all three contract collisions on #269. No content commit was needed: this head already satisfies the repaired predicates.
  • Fresh re-check: upstream remains 0.7.6; the stale bounded-range and decided-conditional greps are empty; the single historical 0.7.4 mention remains; the recorded 92 files, +25,121/-971, and 488 commits reproduce.
  • Fresh verification: all 31 test files passed with zero failures; changelog-armed, marker-check, self-ref-check, and vendored-check passed; the branch is clean and matches the remote head.
Round answer at head 7e967481935b54ff416d63ba2e8d13eb89d6be65: - Triage amended all three contract collisions on #269. No content commit was needed: this head already satisfies the repaired predicates. - Fresh re-check: upstream remains 0.7.6; the stale bounded-range and decided-conditional greps are empty; the single historical 0.7.4 mention remains; the recorded 92 files, +25,121/-971, and 488 commits reproduce. - Fresh verification: all 31 test files passed with zero failures; changelog-armed, marker-check, self-ref-check, and vendored-check passed; the branch is clean and matches the remote head.
Author
Member

📣 round answered at head 7e96748193

📣 round answered at head 7e967481935b54ff416d63ba2e8d13eb89d6be65
codex-bot-andresmgsl changed title from WIP: docs: correct upstream sync campaign record to docs: correct upstream sync campaign record 2026-08-27 11:36:56 +00:00
codex-bot-andresmgsl requested review from glm-bot-andresmgsl 2026-08-27 11:37:44 +00:00
codex-bot-andresmgsl requested review from claude-bot-andresmgsl 2026-08-27 11:37:44 +00:00
codex-bot-andresmgsl requested review from kimi-bot-andresmgsl 2026-08-27 11:37:44 +00:00
codex-bot-andresmgsl added the
state:bots-reviewing
label 2026-08-27 11:37:45 +00:00
forgejo-actions removed the
state:building
label 2026-08-27 11:38:03 +00:00

🔎 reviewing head 7e96748193

  • Amended criteria 1 and 2 re-run at this head: through \0.7.4`andIf that campaign mergesboth silent indocs/; git grep -c '0.7.4' -- docs/reports exactly1`.
  • Ceiling re-measured live: git ls-remote --tags on upstream reports 0.7.6 newest; the file stamps 0.7.6 / 2026-08-27.
  • Delta reproduced from a read-only upstream clone: 92 files, +25,121/-971, 488 commits; per-file +1619/+913/+889 exact and the top three under actions/.
  • .upstream-ref and CHANGELOG.md untouched; diff is exactly the two expected paths; fragment matches spec 6 byte for byte.
  • All three test-plan failure cases reproduced red (or guard-green by design for case 3); tree restored clean.
  • Guards green; full suite 31 files / 0 failed after installing the missing yq; forge CI green on all seven contexts.

Verdict submitted: approve.

🔎 reviewing head 7e967481935b54ff416d63ba2e8d13eb89d6be65 - [x] Amended criteria 1 and 2 re-run at this head: `through \`0.7.4\`` and `If that campaign merges` both silent in `docs/`; `git grep -c '0\.7\.4' -- docs/` reports exactly `1`. - [x] Ceiling re-measured live: `git ls-remote --tags` on upstream reports `0.7.6` newest; the file stamps `0.7.6` / 2026-08-27. - [x] Delta reproduced from a read-only upstream clone: 92 files, +25,121/-971, 488 commits; per-file +1619/+913/+889 exact and the top three under `actions/`. - [x] `.upstream-ref` and `CHANGELOG.md` untouched; diff is exactly the two expected paths; fragment matches spec 6 byte for byte. - [x] All three test-plan failure cases reproduced red (or guard-green by design for case 3); tree restored clean. - [x] Guards green; full suite 31 files / 0 failed after installing the missing `yq`; forge CI green on all seven contexts. Verdict submitted: **approve**.

🔎 reviewing head 7e96748193

  • all 9 acceptance criteria of #269 (as amended) verified by running them: greps empty/1-hit, ceiling 0.7.6 = live ls-remote newest today, delta numbers reproduce exactly (92 files, +25,121/-971, 488 commits; +1619/+913/+889 action scripts), .upstream-ref/CHANGELOG untouched, exactly two paths, fragment byte-exact vs spec 6, changelog-armed green
  • negative guards reproduced: 328-char entry refused, non-terminal citation refused, bare unreleased refused by marker-check; tree restored
  • local suite: 31 test files / 0 failed (CEREMONY_REQUIRE_NPM=1 CEREMONY_REQUIRE_YQ=1), marker-check, self-ref-check, vendored-check green; CI on head 7/7 success
  • red-first confirmed at merge base bcbcd90 (both amended greps hit lines 33/34)
  • composing verdict: approve
🔎 reviewing head 7e967481935b54ff416d63ba2e8d13eb89d6be65 - all 9 acceptance criteria of #269 (as amended) verified by running them: greps empty/1-hit, ceiling 0.7.6 = live ls-remote newest today, delta numbers reproduce exactly (92 files, +25,121/-971, 488 commits; +1619/+913/+889 action scripts), .upstream-ref/CHANGELOG untouched, exactly two paths, fragment byte-exact vs spec 6, changelog-armed green - negative guards reproduced: 328-char entry refused, non-terminal citation refused, bare **unreleased** refused by marker-check; tree restored - local suite: 31 test files / 0 failed (CEREMONY_REQUIRE_NPM=1 CEREMONY_REQUIRE_YQ=1), marker-check, self-ref-check, vendored-check green; CI on head 7/7 success - red-first confirmed at merge base bcbcd90 (both amended greps hit lines 33/34) - composing verdict: approve
glm-bot-andresmgsl approved these changes 2026-08-27 11:44:45 +00:00
glm-bot-andresmgsl left a comment
Member

Verdict: approve — head 7e967481935b54ff416d63ba2e8d13eb89d6be65, reviewed against #269 as amended 2026-08-27.

All nine acceptance criteria verified by running them at this head:

  • Amended criterion 1: git grep -n 'through 0.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 base bcbcd90 (docs/UPSTREAM-SYNC.md:33-34), so the criteria bind to what was true before the edit.
  • Amended criterion 2: git grep -n 'If that campaign merges' -- docs/ is empty; the replacement states the merge unconditionally, not as a negated conditional.
  • Criterion 3: floor 0.7.0 named; ceiling 0.7.6 equals the newest tag from git ls-remote --tags https://github.com/heavy-duty/ceremony.git re-measured live today, and the file's stamp (2026-08-27) is the same day I measured.
  • Criterion 4: heading ## The next campaign merges sits after ## 0.6.2 port record (L20) and before ## The standing resolutions (L61); the merge and .upstream-ref advance are stated with no if, citing #268 and the 2026-08-27 ruling date.
  • Criterion 5: re-measured from the fetched upstream 0.7.6 tag against 8c3a4d1dee2bdb5ac06a632a285bb65ab2615214: 92 files, 25,121 insertions, 971 deletions, 488 commits — exact. The three action-script deltas reproduce too (+1619 runner-isolated, +913 issueflow-reconcile, +889 labels-reconcile) and are the three heaviest action scripts in the delta.
  • Criterion 6: git diff origin/main -- .upstream-ref CHANGELOG.md is empty.
  • Criterion 7: git diff --name-only origin/main...HEAD lists exactly docs/UPSTREAM-SYNC.md and changelog.d/269.md.
  • Criterion 8: bash actions/changelog-armed/changelog-armed.sh is green with the fragment present; the fragment is byte-identical to spec 6 (diff against the spec text empty), both entries 153 characters.
  • Criterion 9: CI on this exact head SHA is 7/7 success (self-guards, action/release/docs-sync exercises, labels, test, refs guard). Locally: 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.sh all 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-remote plus a no-refs fetch of the 0.7.6 tag 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 with scope:docs; fragment present per spec 6; docs/UPSTREAM-SYNC.md is not in the vendored set docs/VENDORED.txt declares, 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.

Verdict: **approve** — head `7e967481935b54ff416d63ba2e8d13eb89d6be65`, reviewed against #269 as amended 2026-08-27. All nine acceptance criteria verified by running them at this head: - **Amended criterion 1**: `git grep -n 'through `0.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 base `bcbcd90` (docs/UPSTREAM-SYNC.md:33-34), so the criteria bind to what was true before the edit. - **Amended criterion 2**: `git grep -n 'If that campaign merges' -- docs/` is empty; the replacement states the merge unconditionally, not as a negated conditional. - **Criterion 3**: floor `0.7.0` named; ceiling `0.7.6` equals the newest tag from `git ls-remote --tags https://github.com/heavy-duty/ceremony.git` re-measured live today, and the file's stamp (2026-08-27) is the same day I measured. - **Criterion 4**: heading `## The next campaign merges` sits after `## 0.6.2 port record` (L20) and before `## The standing resolutions` (L61); the merge and `.upstream-ref` advance are stated with no `if`, citing #268 and the 2026-08-27 ruling date. - **Criterion 5**: re-measured from the fetched upstream `0.7.6` tag against `8c3a4d1dee2bdb5ac06a632a285bb65ab2615214`: 92 files, 25,121 insertions, 971 deletions, 488 commits — exact. The three action-script deltas reproduce too (+1619 `runner-isolated`, +913 `issueflow-reconcile`, +889 `labels-reconcile`) and are the three heaviest action scripts in the delta. - **Criterion 6**: `git diff origin/main -- .upstream-ref CHANGELOG.md` is empty. - **Criterion 7**: `git diff --name-only origin/main...HEAD` lists exactly `docs/UPSTREAM-SYNC.md` and `changelog.d/269.md`. - **Criterion 8**: `bash actions/changelog-armed/changelog-armed.sh` is green with the fragment present; the fragment is byte-identical to spec 6 (diff against the spec text empty), both entries 153 characters. - **Criterion 9**: CI on this exact head SHA is 7/7 success (self-guards, action/release/docs-sync exercises, labels, test, refs guard). Locally: `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.sh` all 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-remote` plus a no-refs fetch of the `0.7.6` tag 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 with `scope:docs`; fragment present per spec 6; `docs/UPSTREAM-SYNC.md` is not in the vendored set `docs/VENDORED.txt` declares, 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 7e96748193

  • checked #269 acceptance criteria against the tree
  • verified no stale ceiling/conditional, exact heading position, fragment text
  • measured numbers reproduce (92/+25,121/-971/488)
  • guards green: changelog-armed, marker-check, self-ref-check, vendored-check, upstream-delta, no-runtime-gh, shellcheck-all
  • local test/run.sh fails only on package-json cases (node/npm missing); relying on CI for full suite
  • verdict: approve
🔎 reviewing head 7e967481935b54ff416d63ba2e8d13eb89d6be65 - checked #269 acceptance criteria against the tree - verified no stale ceiling/conditional, exact heading position, fragment text - measured numbers reproduce (92/+25,121/-971/488) - guards green: changelog-armed, marker-check, self-ref-check, vendored-check, upstream-delta, no-runtime-gh, shellcheck-all - local test/run.sh fails only on package-json cases (node/npm missing); relying on CI for full suite - verdict: approve
claude-bot-andresmgsl approved these changes 2026-08-27 11:48:15 +00:00
claude-bot-andresmgsl left a comment
Member

Approve 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

criterion how I checked result
No stale frozen ceiling in the living procedure git grep -n 'through `0.7.4`' -- docs/exit=1, silent; git grep -c '0\.7\.4' -- docs/docs/UPSTREAM-SYNC.md:1 pass
Floor 0.7.0, stamped ceiling 0.7.6 @ 2026-08-27 git ls-remote --tags https://github.com/heavy-duty/ceremony.git | grep -v '\^{}' | sed 's|.*refs/tags/||' | sort -V | tail -10.7.6, run today pass
Decided conditional gone, not negated git grep -n 'If that campaign merges' -- docs/exit=1, silent pass
Heading and position ## The next campaign merges at line 41, after ## 0.6.2 port record (20) and before ## The standing resolutions (61); prose is unconditional, carries no if, cites #268 and 2026-08-27 pass
Delta numbers reproduce read-only clone of upstream: git diff --shortstat 8c3a4d1… 0.7.692 files changed, 25121 insertions(+), 971 deletions(-); git rev-list --count488 pass
.upstream-ref / CHANGELOG.md untouched git diff origin/main -- .upstream-ref CHANGELOG.md → empty pass
Exactly two paths git diff --name-only origin/main...HEADchangelog.d/269.md, docs/UPSTREAM-SYNC.md pass
Fragment + guards changelog-armed green; fragment matches spec 6 byte for byte (cat -A), both entries 153 chars pass

I 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/ ranks runner-isolated.sh +1619, issueflow-reconcile.sh +913,
labels-reconcile.sh +889 as the top three, in that order — and "step 4 of
the procedure below" resolves correctly (### 4. Audit what the merge brought in that did NOT conflict, line 127, genuinely below line 41). Both spec
blockquotes 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 --porcelain empty).

  1. A 328-character entry → changelog-armed exits 1: "has a 328-character entry … the bound is 300". A non-terminal citation ((#269) trailing.) → exits 1: "issue citation is not terminal".
  2. **unreleased** written into the new section without a citation → marker-check exits 1, naming docs/UPSTREAM-SYNC.md:43.
  3. Replacing the stamped measurement with a bare `0.7.0` through `0.7.6` range → marker-check and changelog-armed both green, git grep -c still 1. 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.sh31 test
files passed, 0 failed
. marker-check, self-ref-check, vendored-check,
changelog-armed all green. Forge CI on this head is green on all seven
contexts, including Refs guard / refs-not-closing.

What I could not verify, and what I relied on instead

  • yq was absent on this box at first, and the initial suite run reported
    4 files / 26 assertions failing — labels-bootstrap, labels-dispatch,
    labels-scope, labels-triggers, all yq-driven workflow-YAML parsers. I
    installed yq v4.53.6 and re-ran rather than reporting a green-by-omission
    suite; the numbers above are from that second run. Worth flagging as an
    environment gap for any reviewer who reports this suite green without it.
  • actionlint is not installed here. No workflow or action YAML changes
    in this diff, so nothing was in its scope; I relied on forge CI's
    self-guards job for that gate.
  • The upstream measurements required a network clone of
    github.com/heavy-duty/ceremony into a scratch directory. Read-only, and
    outside 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's
    mandated 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** 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 | criterion | how I checked | result | |---|---|---| | No stale frozen ceiling in the living procedure | ``git grep -n 'through `0.7.4`' -- docs/`` → `exit=1`, silent; `git grep -c '0\.7\.4' -- docs/` → `docs/UPSTREAM-SYNC.md:1` | pass | | Floor `0.7.0`, stamped ceiling `0.7.6` @ 2026-08-27 | `git ls-remote --tags https://github.com/heavy-duty/ceremony.git \| grep -v '\^{}' \| sed 's\|.*refs/tags/\|\|' \| sort -V \| tail -1` → `0.7.6`, run today | pass | | Decided conditional gone, not negated | `git grep -n 'If that campaign merges' -- docs/` → `exit=1`, silent | pass | | Heading and position | `## The next campaign merges` at line 41, after `## 0.6.2 port record` (20) and before `## The standing resolutions` (61); prose is unconditional, carries no `if`, cites #268 and 2026-08-27 | pass | | Delta numbers reproduce | read-only clone of upstream: `git diff --shortstat 8c3a4d1… 0.7.6` → `92 files changed, 25121 insertions(+), 971 deletions(-)`; `git rev-list --count` → `488` | pass | | `.upstream-ref` / `CHANGELOG.md` untouched | `git diff origin/main -- .upstream-ref CHANGELOG.md` → empty | pass | | Exactly two paths | `git diff --name-only origin/main...HEAD` → `changelog.d/269.md`, `docs/UPSTREAM-SYNC.md` | pass | | Fragment + guards | `changelog-armed` green; fragment matches spec 6 byte for byte (`cat -A`), both entries 153 chars | pass | I 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/` ranks `runner-isolated.sh` +1619, `issueflow-reconcile.sh` +913, `labels-reconcile.sh` +889 as the top three, in that order — and "step 4 of the procedure below" resolves correctly (`### 4. Audit what the merge brought in that did NOT conflict`, line 127, genuinely below line 41). Both spec blockquotes 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 --porcelain` empty). 1. A 328-character entry → `changelog-armed` exits 1: *"has a 328-character entry … the bound is 300"*. A non-terminal citation (`(#269) trailing.`) → exits 1: *"issue citation is not terminal"*. 2. `**unreleased**` written into the new section without a citation → `marker-check` exits 1, naming `docs/UPSTREAM-SYNC.md:43`. 3. Replacing the stamped measurement with a bare `` `0.7.0` through `0.7.6` `` range → `marker-check` and `changelog-armed` both green, `git grep -c` still `1`. 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 test files passed, 0 failed**. `marker-check`, `self-ref-check`, `vendored-check`, `changelog-armed` all green. Forge CI on this head is green on all seven contexts, including `Refs guard / refs-not-closing`. ### What I could not verify, and what I relied on instead - **`yq` was absent on this box at first**, and the initial suite run reported 4 files / 26 assertions failing — `labels-bootstrap`, `labels-dispatch`, `labels-scope`, `labels-triggers`, all `yq`-driven workflow-YAML parsers. I installed `yq` v4.53.6 and re-ran rather than reporting a green-by-omission suite; the numbers above are from that second run. Worth flagging as an environment gap for any reviewer who reports this suite green without it. - **`actionlint` is not installed here.** No workflow or action YAML changes in this diff, so nothing was in its scope; I relied on forge CI's `self-guards` job for that gate. - **The upstream measurements required a network clone** of `github.com/heavy-duty/ceremony` into a scratch directory. Read-only, and outside 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 ceiling` omits 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 against `origin`, which is this forge, and get the wrong answer. It is spec 1's mandated 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.
kimi-bot-andresmgsl approved these changes 2026-08-27 11:53:51 +00:00
kimi-bot-andresmgsl left a comment
Member

Approve — head 7e967481935b54ff416d63ba2e8d13eb89d6be65 satisfies #269 as amended 2026-08-27

I reviewed the whole PR in a detached worktree at 7e96748 against the acceptance criteria in #269 and the repo's standing constraints.

Verified

  • No stale ceiling or conditional survives in 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/ returns 1, and the single hit is the required sentence in the replacement paragraph that names 0.7.4 as what the old sentence froze.
  • The deferral records the floor 0.7.0 and a stamped measurement. The new paragraph states 0.7.0 onward, 0.7.6 newest as measured 2026-08-27 and tells the reader to run git ls-remote --tags for today's ceiling.
  • ## The next campaign merges is positioned correctly — immediately after ## 0.6.2 port record and immediately before ## The standing resolutions.
  • The next campaign is stated unconditionally as a merge that advances .upstream-ref, cites #268, and records the operator ruling date 2026-08-27.
  • The recorded delta numbers reproduce at the PR head:
    • git diff --shortstat 8c3a4d1dee2bdb5ac06a632a285bb65ab2615214 0.7.692 files changed, 25121 insertions(+), 971 deletions(-)
    • git rev-list --count 8c3a4d1dee2bdb5ac06a632a285bb65ab2615214..0.7.6488
  • .upstream-ref and CHANGELOG.md are untouched: git diff origin/main -- .upstream-ref CHANGELOG.md is empty.
  • The diff contains only the two intended paths: docs/UPSTREAM-SYNC.md and changelog.d/269.md.
  • changelog.d/269.md carries exactly the two entries specified in #269, each under 300 characters and closing on (#269).
  • Local guards are green:
    • bash actions/changelog-armed/changelog-armed.sh
    • bash .github/scripts/marker-check.sh
    • bash .github/scripts/self-ref-check.sh
    • bash .github/scripts/vendored-check.sh
    • bash test/upstream-delta.test.sh
    • bash test/no-runtime-gh.test.sh
    • bash .github/scripts/shellcheck-all.sh
  • CI is green on the PR head (CI / test and the release/docs/self-guards/action exercises all show SUCCESS in the live status rollup).

Not verified locally / relied on instead

  • CEREMONY_REQUIRE_NPM=1 CEREMONY_REQUIRE_YQ=1 bash test/run.sh and the package-json test cases could not be exercised because node/npm are not installed in this box. The bash-only tests all pass; I relied on the green CI / test status for the Node-dependent coverage.
  • bash .github/scripts/actionlint-all.sh could not be run because actionlint is not installed in this box. I relied on CI for workflow syntax validation.

No blocking concerns remain.

## Approve — head `7e967481935b54ff416d63ba2e8d13eb89d6be65` satisfies #269 as amended 2026-08-27 I reviewed the whole PR in a detached worktree at `7e96748` against the acceptance criteria in #269 and the repo's standing constraints. ### Verified - **No stale ceiling or conditional survives in `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/` returns `1`, and the single hit is the required sentence in the replacement paragraph that names `0.7.4` as what the old sentence froze. - **The deferral records the floor `0.7.0` and a stamped measurement.** The new paragraph states `0.7.0 onward, 0.7.6 newest as measured 2026-08-27` and tells the reader to run `git ls-remote --tags` for today's ceiling. - **`## The next campaign merges` is positioned correctly** — immediately after `## 0.6.2 port record` and immediately before `## The standing resolutions`. - **The next campaign is stated unconditionally as a merge that advances `.upstream-ref`**, cites #268, and records the operator ruling date 2026-08-27. - **The recorded delta numbers reproduce at the PR head:** - `git diff --shortstat 8c3a4d1dee2bdb5ac06a632a285bb65ab2615214 0.7.6` → `92 files changed, 25121 insertions(+), 971 deletions(-)` - `git rev-list --count 8c3a4d1dee2bdb5ac06a632a285bb65ab2615214..0.7.6` → `488` - **`.upstream-ref` and `CHANGELOG.md` are untouched:** `git diff origin/main -- .upstream-ref CHANGELOG.md` is empty. - **The diff contains only the two intended paths:** `docs/UPSTREAM-SYNC.md` and `changelog.d/269.md`. - **`changelog.d/269.md` carries exactly the two entries specified in #269**, each under 300 characters and closing on `(#269).` - **Local guards are green:** - `bash actions/changelog-armed/changelog-armed.sh` - `bash .github/scripts/marker-check.sh` - `bash .github/scripts/self-ref-check.sh` - `bash .github/scripts/vendored-check.sh` - `bash test/upstream-delta.test.sh` - `bash test/no-runtime-gh.test.sh` - `bash .github/scripts/shellcheck-all.sh` - **CI is green on the PR head** (`CI / test` and the release/docs/self-guards/action exercises all show `SUCCESS` in the live status rollup). ### Not verified locally / relied on instead - `CEREMONY_REQUIRE_NPM=1 CEREMONY_REQUIRE_YQ=1 bash test/run.sh` and the `package-json` test cases could not be exercised because `node`/`npm` are not installed in this box. The bash-only tests all pass; I relied on the green `CI / test` status for the Node-dependent coverage. - `bash .github/scripts/actionlint-all.sh` could not be run because `actionlint` is not installed in this box. I relied on CI for workflow syntax validation. No blocking concerns remain.
forgejo-actions added
state:needs-human
and removed
state:bots-reviewing
labels 2026-08-27 12:00:19 +00:00
codex-bot-andresmgsl requested review from andres 2026-08-27 12:03:10 +00:00
andres merged commit f5c02fee8f into main 2026-08-27 12:45:00 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: heavy-duty/ceremony#270
No description provided.