BUILDER.md: the handed-off PR is the fourth parked shape; the handoff is its declaration #110

Merged
claude-bot-andresmgsl merged 1 commit from build/109-fourth-parked-shape into main 2026-07-24 07:31:14 +00:00
claude-bot-andresmgsl commented 2026-07-24 01:15:29 +00:00 (Migrated from github.com)

Closes #109

Doctrine only — the diff is BUILDER.md and CHANGELOG.md, nothing else. Adds the fourth parked shape (deliverable handed off: round passed, no blocker:*, state:needs-human set), makes the handoff round summary the shape's declaration so no second issue comment is owed, extends shape 2 to the round awaiting its first verdicts, and cross-references the shape from Handoff.

Acceptance criteria

  • BUILDER.md names four parked shapes, the fourth being state:needs-human after a passed round with no blocker standing.
  • No surviving "three" refers to that list (the only remaining "three" is the ruling ask's options-count cap, a different list).
  • Claiming carries the declaration exemption for shape 4 and only for shape 4; "a park is declared, never inferred" is otherwise untouched ("Every other shape still declares as above").
  • Handoff cross-references the shape.
  • Shape 2 covers the round awaiting first verdicts, and the two shapes are stated as non-overlapping ("shape 2 is the live round; shape 4 the passed one — sequential and do not overlap").
  • The diff is BUILDER.md and CHANGELOG.md and nothing else — no label, no workflow, no script.

Test plan (from the issue)

  • Suite: ./test/run.sh — 15/15 test files green locally; docs-sync-exercise validated by CI (this repo holds the source, so the guard stays indifferent).
  • Read-through against the 2026-07-24 board: under the amended text, #101 (PR #106, state:needs-human), rig#105 (rig#125, state:needs-human), #98 (#99, state:needs-human), incubator#44 (incubator#46, state:needs-human) and rig#103 (rig#122, state:needs-human) each come out shape 4 — parked, nothing further owed, their handoffs being their declarations; #104 and #105 come out as each builder's one active build. All seven match the issue's required answers.
  • Must-fail cases stay failing: a PR the reconciler took state:needs-human back from is not shape 4 (the shape requires the label standing per Handoff, and the reconciler's take-back returns the work to the builder); a draft PR is in no round at all; "waiting on CI" remains on the not-parked list, which is untouched.

Worklog

  • Read issue, BUILDER.md at pinned ref 5af1538, LABELS.md, CHANGELOG head
  • Picking: shapes list → four; shape 2 first-verdicts clause + non-overlap pointer
  • Claiming: shape-4 declaration exemption
  • Handoff: cross-reference to shape 4
  • CHANGELOG line under ## Unreleased
  • Full test suite green locally
  • Mark ready-for-review, request panel (codex, grok, kimi)
Closes #109 Doctrine only — the diff is `BUILDER.md` and `CHANGELOG.md`, nothing else. Adds the fourth parked shape (deliverable handed off: round passed, no `blocker:*`, `state:needs-human` set), makes the handoff round summary the shape's declaration so no second issue comment is owed, extends shape 2 to the round awaiting its first verdicts, and cross-references the shape from Handoff. ## Acceptance criteria - [x] BUILDER.md names **four** parked shapes, the fourth being `state:needs-human` after a passed round with no blocker standing. - [x] No surviving "three" refers to that list (the only remaining "three" is the ruling ask's options-count cap, a different list). - [x] Claiming carries the declaration exemption for shape 4 and only for shape 4; "a park is declared, never inferred" is otherwise untouched ("Every other shape still declares as above"). - [x] Handoff cross-references the shape. - [x] Shape 2 covers the round awaiting first verdicts, and the two shapes are stated as non-overlapping ("shape 2 is the live round; shape 4 the passed one — sequential and do not overlap"). - [x] The diff is `BUILDER.md` and `CHANGELOG.md` and nothing else — no label, no workflow, no script. ## Test plan (from the issue) - **Suite**: `./test/run.sh` — 15/15 test files green locally; `docs-sync-exercise` validated by CI (this repo holds the source, so the guard stays indifferent). - **Read-through against the 2026-07-24 board**: under the amended text, #101 (PR #106, `state:needs-human`), rig#105 (rig#125, `state:needs-human`), #98 (#99, `state:needs-human`), incubator#44 (incubator#46, `state:needs-human`) and rig#103 (rig#122, `state:needs-human`) each come out **shape 4 — parked, nothing further owed**, their handoffs being their declarations; #104 and #105 come out as each builder's one active build. All seven match the issue's required answers. - **Must-fail cases stay failing**: a PR the reconciler took `state:needs-human` back from is not shape 4 (the shape requires the label standing per Handoff, and the reconciler's take-back returns the work to the builder); a draft PR is in no round at all; "waiting on CI" remains on the not-parked list, which is untouched. ## Worklog - [x] Read issue, BUILDER.md at pinned ref 5af1538, LABELS.md, CHANGELOG head - [x] Picking: shapes list → four; shape 2 first-verdicts clause + non-overlap pointer - [x] Claiming: shape-4 declaration exemption - [x] Handoff: cross-reference to shape 4 - [x] CHANGELOG line under `## Unreleased` - [x] Full test suite green locally - [x] Mark ready-for-review, request panel (codex, grok, kimi)
danmt (Migrated from github.com) reviewed 2026-07-24 01:15:29 +00:00
codex-bot-andresmgsl commented 2026-07-24 01:20:40 +00:00 (Migrated from github.com)

🔎 reviewing head 072a9a8e9692e67fa8c7edf5d65009782ea49f66

🔎 reviewing head 072a9a8e9692e67fa8c7edf5d65009782ea49f66
codex-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-24 01:21:57 +00:00
codex-bot-andresmgsl (Migrated from github.com) left a comment

The change satisfies #109's doctrine contract. BUILDER.md now defines exactly four parked shapes; shape 2 covers both first-verdict and re-requested live rounds, while shape 4 narrowly requires a passed round, no standing blocker, and the builder's state:needs-human handoff. The declaration exemption applies only to shape 4, Handoff points back to it, and the existing draft/CI exclusions remain intact. The changelog entry is present, and the diff is limited to BUILDER.md and CHANGELOG.md.

Verified at 072a9a8e9692e67fa8c7edf5d65009782ea49f66:

  • git diff --check 5af1538463519577951bdd749f19dfc8f9643cb6..HEAD
  • ./test/run.sh — 15/15 test files passed
  • Current-head GitHub checks are green for the substantive test, guard, action, docs/consumer, and reconciliation jobs
The change satisfies #109's doctrine contract. `BUILDER.md` now defines exactly four parked shapes; shape 2 covers both first-verdict and re-requested live rounds, while shape 4 narrowly requires a passed round, no standing blocker, and the builder's `state:needs-human` handoff. The declaration exemption applies only to shape 4, Handoff points back to it, and the existing draft/CI exclusions remain intact. The changelog entry is present, and the diff is limited to `BUILDER.md` and `CHANGELOG.md`. Verified at `072a9a8e9692e67fa8c7edf5d65009782ea49f66`: - `git diff --check 5af1538463519577951bdd749f19dfc8f9643cb6..HEAD` - `./test/run.sh` — 15/15 test files passed - Current-head GitHub checks are green for the substantive test, guard, action, docs/consumer, and reconciliation jobs
grok-bot-andresmgsl commented 2026-07-24 01:22:04 +00:00 (Migrated from github.com)

🔎 reviewing head 072a9a8e9692e67fa8c7edf5d65009782ea49f66

🔎 reviewing head 072a9a8e9692e67fa8c7edf5d65009782ea49f66
grok-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-24 01:22:58 +00:00
grok-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: approve

Reviewed head 072a9a8e9692e67fa8c7edf5d65009782ea49f66 against issue #109's acceptance criteria and the PR's stated test plan.

Acceptance criteria

Criterion Result
BUILDER.md names four parked shapes; #4 is handed-off (state:needs-human, round passed, no blocker:*) Met — Picking L18–30
No surviving "three" refers to that list Met — only remaining "three" is the ruling-ask options cap (L157), a different list
Claiming: shape-4 declaration exemption only; "a park is declared, never inferred" otherwise untouched Met — L50–62; "Every other shape still declares as above"
Handoff cross-references the shape Met — L200–204
Shape 2 covers first-verdicts await; shapes 2 and 4 stated non-overlapping Met — L21–25
Diff is only BUILDER.md + CHANGELOG.md Met — origin/main...HEAD is those two files only

Spec decisions (issue body)

1–5 map cleanly: fourth shape, handoff-as-declaration exemption, unparking left to the existing unpark rule, shape-2 first-verdicts clause, doctrine-only.

Board read-through (issue test plan)

Under the amended text: #101 / #106, rig#105, #98 / #99, incubator#44, rig#103 each park as shape 4 with nothing further owed (handoff = declaration). #104 and #105 remain each builder's one active build. Matches the required answers.

Must-fail cases stay failing

  • Reconciler take-back of state:needs-human is not shape 4 (shape requires the label standing per Handoff).
  • Draft PR is in no round.
  • "Waiting on CI" remains on the not-parked list (L31–35 untouched).

Verification

  • Full suite in detached worktree at head: 15/15 test files green.
  • CI on the PR: all required jobs green (test, docs-sync-exercise, self-guards, labels, release-exercise fixtures).
  • CHANGELOG line under ## Unreleased cites #109 and is insert-only.

Doctrine-only change that closes the letter/intent gap named in #109 without widening the not-parked list or inventing machinery. Approve.

## Verdict: approve Reviewed head `072a9a8e9692e67fa8c7edf5d65009782ea49f66` against issue #109's acceptance criteria and the PR's stated test plan. ### Acceptance criteria | Criterion | Result | |---|---| | BUILDER.md names **four** parked shapes; #4 is handed-off (`state:needs-human`, round passed, no `blocker:*`) | Met — Picking L18–30 | | No surviving "three" refers to that list | Met — only remaining "three" is the ruling-ask options cap (L157), a different list | | Claiming: shape-4 declaration exemption only; "a park is declared, never inferred" otherwise untouched | Met — L50–62; "Every other shape still declares as above" | | Handoff cross-references the shape | Met — L200–204 | | Shape 2 covers first-verdicts await; shapes 2 and 4 stated non-overlapping | Met — L21–25 | | Diff is only `BUILDER.md` + `CHANGELOG.md` | Met — `origin/main...HEAD` is those two files only | ### Spec decisions (issue body) 1–5 map cleanly: fourth shape, handoff-as-declaration exemption, unparking left to the existing unpark rule, shape-2 first-verdicts clause, doctrine-only. ### Board read-through (issue test plan) Under the amended text: #101 / #106, rig#105, #98 / #99, incubator#44, rig#103 each park as **shape 4** with nothing further owed (handoff = declaration). #104 and #105 remain each builder's one active build. Matches the required answers. ### Must-fail cases stay failing - Reconciler take-back of `state:needs-human` is not shape 4 (shape requires the label standing per Handoff). - Draft PR is in no round. - "Waiting on CI" remains on the not-parked list (L31–35 untouched). ### Verification - Full suite in detached worktree at head: **15/15 test files green**. - CI on the PR: all required jobs green (`test`, `docs-sync-exercise`, self-guards, labels, release-exercise fixtures). - CHANGELOG line under `## Unreleased` cites #109 and is insert-only. Doctrine-only change that closes the letter/intent gap named in #109 without widening the not-parked list or inventing machinery. Approve.
kimi-bot-andresmgsl commented 2026-07-24 01:24:47 +00:00 (Migrated from github.com)

🔎 reviewing head 072a9a8e9692e67fa8c7edf5d65009782ea49f66

🔎 reviewing head 072a9a8e9692e67fa8c7edf5d65009782ea49f66
kimi-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-24 01:29:07 +00:00
kimi-bot-andresmgsl (Migrated from github.com) left a comment

Approve head 072a9a8e9692e67fa8c7edf5d65009782ea49f66.

Verified every acceptance criterion from #109 against the diff and the full file at head:

  • Four shapes named — Picking now says "Exactly four shapes qualify" and shape 4 is the handed-off deliverable: round passed, no blocker:* standing, state:needs-human set per Handoff. ✓
  • No surviving "three" — grep over BUILDER.md at head finds exactly two count words: "Exactly four" (L18) and "more than three" in the ruling ask (L157), the options-count cap, a different list. ✓
  • Declaration exemption scoped to shape 4 — Claiming keeps "A park is declared, never inferred" untouched and closes with "Every other shape still declares as above." ✓
  • Handoff cross-references the shape — "The claim is now parked as shape 4 (Picking, above) — the handoff you just posted is its declaration, and your build slot is free." ✓
  • Shape 2 covers the round awaiting first verdicts and the non-overlap is stated ("This is the live round; shape 4 is the passed one — they are sequential and do not overlap"). The new pointer "(the review round, steps 1–2)" is accurate: step 1 is requesting the panel, step 2 is waiting for verdicts / re-requesting non-approvers. ✓
  • Diff scopeBUILDER.md and CHANGELOG.md only; changelog line present under ## Unreleased. No label, workflow, or script touched. ✓

Guard rails from the test plan held: the not-parked list (waiting on yourself, on CI, on a good moment; abandonment) is verbatim intact, and shape 4's own definition requires the state:needs-human write — a label the reconciler has taken back does not satisfy it, so the must-fail cases stay must-fail.

Ran the suite in a detached worktree at this head: test files: 8 passed, 7 failedbyte-identical failures on main at 5af1538 (all environmental: node and jq are absent here, killing the package-json version cases and the jq-dependent reconcile/ruling fixtures). The one file the issue's test plan names, docs-sync.test.sh, is green on the head: 59 passed, 0 failed — the guard stays indifferent to a source-repo doctrine change, as required.

Read-through of the seven board claims: the five state:needs-human PRs come out shape 4 — parked, handoff as declaration, nothing further owed; #104 and #105 remain the one active build each. The amended text produces the answer the issue demands for all seven.

Approve head 072a9a8e9692e67fa8c7edf5d65009782ea49f66. Verified every acceptance criterion from #109 against the diff and the full file at head: - **Four shapes named** — Picking now says "Exactly four shapes qualify" and shape 4 is the handed-off deliverable: round passed, no `blocker:*` standing, `state:needs-human` set per Handoff. ✓ - **No surviving "three"** — grep over BUILDER.md at head finds exactly two count words: "Exactly four" (L18) and "more than three" in the ruling ask (L157), the options-count cap, a different list. ✓ - **Declaration exemption scoped to shape 4** — Claiming keeps "A park is declared, never inferred" untouched and closes with "Every other shape still declares as above." ✓ - **Handoff cross-references the shape** — "The claim is now parked as shape 4 (Picking, above) — the handoff you just posted is its declaration, and your build slot is free." ✓ - **Shape 2 covers the round awaiting first verdicts** and the non-overlap is stated ("This is the *live* round; shape 4 is the *passed* one — they are sequential and do not overlap"). The new pointer "(the review round, steps 1–2)" is accurate: step 1 is requesting the panel, step 2 is waiting for verdicts / re-requesting non-approvers. ✓ - **Diff scope** — `BUILDER.md` and `CHANGELOG.md` only; changelog line present under `## Unreleased`. No label, workflow, or script touched. ✓ Guard rails from the test plan held: the not-parked list (waiting on yourself, on CI, on a good moment; abandonment) is verbatim intact, and shape 4's own definition requires the `state:needs-human` write — a label the reconciler has taken back does not satisfy it, so the must-fail cases stay must-fail. Ran the suite in a detached worktree at this head: `test files: 8 passed, 7 failed` — **byte-identical failures on `main` at 5af1538** (all environmental: `node` and `jq` are absent here, killing the package-json version cases and the jq-dependent reconcile/ruling fixtures). The one file the issue's test plan names, `docs-sync.test.sh`, is green on the head: 59 passed, 0 failed — the guard stays indifferent to a source-repo doctrine change, as required. Read-through of the seven board claims: the five `state:needs-human` PRs come out shape 4 — parked, handoff as declaration, nothing further owed; #104 and #105 remain the one active build each. The amended text produces the answer the issue demands for all seven.
claude-bot-andresmgsl commented 2026-07-24 01:31:47 +00:00 (Migrated from github.com)

Round summary — handoff

What shipped (head 072a9a8, the only head this PR ever had): doctrine only — BUILDER.md plus one CHANGELOG.md line. The Picking shapes list now names four parked shapes, the fourth being the handed-off deliverable: round passed, no blocker:* standing, state:needs-human set per Handoff. The handoff round summary is that shape's declaration, so no second issue comment is owed — the declaration exemption applies to shape 4 and only shape 4. Shape 2 now covers the round awaiting its first verdicts, with the two shapes stated as sequential and non-overlapping, and Handoff cross-references the shape.

Rounds: one. The panel (codex, grok, kimi) each reviewed head 072a9a8 and approved with no changes requested; the head never moved, so no round-over-round changes exist to report.

What was verified:

  • ./test/run.sh — 15/15 test files green locally; CI fully green on head: test, self-guards, action-exercise, docs-sync-exercise, labels (reconcile + scope), release-exercise (fixture-chain, step-replay consumer + dogfood). Mergeable, merge state CLEAN, no blocker:* standing.
  • Read-through against the 2026-07-24 board: all seven claims classify per #109's required answers — #101 (#106), rig#105 (rig#125), #98 (#99), incubator#44 (incubator#46), and rig#103 (rig#122) come out shape 4 (parked, nothing further owed, the handoff being the declaration); #104 and #105 come out as each builder's one active build.
  • Must-fail cases stay failing: a reconciler take-back of state:needs-human is not shape 4, a draft PR is in no round, and "waiting on CI" remains on the untouched not-parked list.
  • All three reviewers checked the acceptance criteria individually against the head, including the grep confirming the only surviving "three" is the ruling ask's options count — a different list.

Post-merge residue: none in this repo — no label, workflow, or script changed. Governed repos consuming .ceremony/BUILDER.md pick up the amended doctrine on their next docs sync (this repo holds the source, so docs-sync-exercise stays indifferent by design). #109 closes on merge via Closes #109.

Handing off: requesting @danmt's review and setting state:needs-human. Per the doctrine this PR itself ships, this comment is the shape-4 declaration.

## Round summary — handoff **What shipped** (head `072a9a8`, the only head this PR ever had): doctrine only — `BUILDER.md` plus one `CHANGELOG.md` line. The Picking shapes list now names **four** parked shapes, the fourth being the handed-off deliverable: round passed, no `blocker:*` standing, `state:needs-human` set per Handoff. The handoff round summary is that shape's declaration, so no second issue comment is owed — the declaration exemption applies to shape 4 and only shape 4. Shape 2 now covers the round awaiting its first verdicts, with the two shapes stated as sequential and non-overlapping, and Handoff cross-references the shape. **Rounds**: one. The panel (codex, grok, kimi) each reviewed head `072a9a8` and approved with no changes requested; the head never moved, so no round-over-round changes exist to report. **What was verified**: - `./test/run.sh` — 15/15 test files green locally; CI fully green on head: test, self-guards, action-exercise, docs-sync-exercise, labels (reconcile + scope), release-exercise (fixture-chain, step-replay consumer + dogfood). Mergeable, merge state CLEAN, no `blocker:*` standing. - Read-through against the 2026-07-24 board: all seven claims classify per #109's required answers — #101 (#106), rig#105 (rig#125), #98 (#99), incubator#44 (incubator#46), and rig#103 (rig#122) come out shape 4 (parked, nothing further owed, the handoff being the declaration); #104 and #105 come out as each builder's one active build. - Must-fail cases stay failing: a reconciler take-back of `state:needs-human` is not shape 4, a draft PR is in no round, and "waiting on CI" remains on the untouched not-parked list. - All three reviewers checked the acceptance criteria individually against the head, including the grep confirming the only surviving "three" is the ruling ask's options count — a different list. **Post-merge residue**: none in this repo — no label, workflow, or script changed. Governed repos consuming `.ceremony/BUILDER.md` pick up the amended doctrine on their next docs sync (this repo holds the source, so `docs-sync-exercise` stays indifferent by design). #109 closes on merge via `Closes #109`. Handing off: requesting @danmt's review and setting `state:needs-human`. Per the doctrine this PR itself ships, this comment is the shape-4 declaration.
claude-bot-andresmgsl commented 2026-07-24 07:01:40 +00:00 (Migrated from github.com)

Rebased onto current main (ad04eaf) to resolve the CHANGELOG.md conflict with #99; new head is 2422604, diff unchanged (BUILDER.md + CHANGELOG.md only), 15/15 test files green — re-requesting the panel since the push staled the approvals.

Rebased onto current main (ad04eaf) to resolve the CHANGELOG.md conflict with #99; new head is 2422604, diff unchanged (BUILDER.md + CHANGELOG.md only), 15/15 test files green — re-requesting the panel since the push staled the approvals.
grok-bot-andresmgsl commented 2026-07-24 07:06:00 +00:00 (Migrated from github.com)

🔎 reviewing head 2422604f50

🔎 reviewing head 2422604f50f7a0f9d066b2c1bca7db2a7603a84e
grok-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-24 07:07:32 +00:00
grok-bot-andresmgsl (Migrated from github.com) left a comment

Verdict: approve

Closes #109. Reviewed head 2422604f50f7a0f9d066b2c1bca7db2a7603a84e — doctrine-only diff (BUILDER.md + CHANGELOG.md).

Acceptance criteria

AC Result
Four parked shapes; #4 = handed off (state:needs-human, no blocker, round passed) Met — "Exactly four shapes qualify" + shape 4 text
No surviving "three" for that list Met — only remaining "three" is the ruling-ask options-count cap (L158), a different list
Claiming: shape-4 declaration exemption only; "park is declared, never inferred" otherwise untouched Met — "Shape 4 alone is exempt… Every other shape still declares as above"
Handoff cross-references shape 4 Met — "parked as shape 4 (Picking, above)… handoff you just posted is its declaration"
Shape 2 covers first-verdicts wait; shapes 2 and 4 non-overlapping Met — explicit sequential/non-overlap wording
Diff is BUILDER.md + CHANGELOG only Met

Read-through (issue test plan)

Under the amended shapes: handed-off state:needs-human claims are shape 4 (parked, nothing further owed); live rounds awaiting verdicts are shape 2; not-parked list (self/CI/good-moment/abandonment) is intact and not softened. Reconciler take-back of state:needs-human correctly falls out of shape 4 because the shape requires the label standing.

Verification

bash test/run.sh  # 15/15 (docs-sync indifferent; this repo is the source)

Approve.

## Verdict: approve Closes #109. Reviewed head `2422604f50f7a0f9d066b2c1bca7db2a7603a84e` — doctrine-only diff (`BUILDER.md` + `CHANGELOG.md`). ### Acceptance criteria | AC | Result | |---|---| | Four parked shapes; #4 = handed off (`state:needs-human`, no blocker, round passed) | Met — "Exactly four shapes qualify" + shape 4 text | | No surviving "three" for that list | Met — only remaining "three" is the ruling-ask options-count cap (L158), a different list | | Claiming: shape-4 declaration exemption only; "park is declared, never inferred" otherwise untouched | Met — "Shape 4 alone is exempt… Every other shape still declares as above" | | Handoff cross-references shape 4 | Met — "parked as shape 4 (Picking, above)… handoff you just posted is its declaration" | | Shape 2 covers first-verdicts wait; shapes 2 and 4 non-overlapping | Met — explicit sequential/non-overlap wording | | Diff is BUILDER.md + CHANGELOG only | Met | ### Read-through (issue test plan) Under the amended shapes: handed-off `state:needs-human` claims are shape 4 (parked, nothing further owed); live rounds awaiting verdicts are shape 2; not-parked list (self/CI/good-moment/abandonment) is intact and not softened. Reconciler take-back of `state:needs-human` correctly falls out of shape 4 because the shape requires the label standing. ### Verification ``` bash test/run.sh # 15/15 (docs-sync indifferent; this repo is the source) ``` Approve.
codex-bot-andresmgsl commented 2026-07-24 07:10:57 +00:00 (Migrated from github.com)

🔎 reviewing head 2422604f50

🔎 reviewing head 2422604f50f7a0f9d066b2c1bca7db2a7603a84e
codex-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-24 07:11:53 +00:00
codex-bot-andresmgsl (Migrated from github.com) left a comment

The rebased head still satisfies #109's doctrine contract. BUILDER.md defines exactly four parked shapes; shape 2 covers both a round awaiting first verdicts and an answered/re-requested live round, while shape 4 narrowly requires a passed round, no standing blocker:*, and the builder's state:needs-human handoff. The text explicitly makes shapes 2 and 4 sequential and non-overlapping.

The declaration exemption is limited to shape 4, leaves “A park is declared, never inferred” intact for every other shape, and Handoff points back to shape 4 while identifying its round summary as the declaration. The existing exclusions for drafts, CI waits, and a taken-back state:needs-human remain intact. The changelog entry is present, and the PR diff against current base is limited to BUILDER.md and CHANGELOG.md.

Verified at 2422604f50f7a0f9d066b2c1bca7db2a7603a84e:

  • git diff --check ad04eaf9903821d3ecef8aaec0eeca8ef05fd385..HEAD
  • ./test/run.sh — 15/15 test files passed
  • Current-head GitHub checks are green, including test, docs-sync-exercise, self-guards, action/release exercises, and label jobs

Approve.

The rebased head still satisfies #109's doctrine contract. `BUILDER.md` defines exactly four parked shapes; shape 2 covers both a round awaiting first verdicts and an answered/re-requested live round, while shape 4 narrowly requires a passed round, no standing `blocker:*`, and the builder's `state:needs-human` handoff. The text explicitly makes shapes 2 and 4 sequential and non-overlapping. The declaration exemption is limited to shape 4, leaves “A park is declared, never inferred” intact for every other shape, and Handoff points back to shape 4 while identifying its round summary as the declaration. The existing exclusions for drafts, CI waits, and a taken-back `state:needs-human` remain intact. The changelog entry is present, and the PR diff against current base is limited to `BUILDER.md` and `CHANGELOG.md`. Verified at `2422604f50f7a0f9d066b2c1bca7db2a7603a84e`: - `git diff --check ad04eaf9903821d3ecef8aaec0eeca8ef05fd385..HEAD` - `./test/run.sh` — 15/15 test files passed - Current-head GitHub checks are green, including `test`, `docs-sync-exercise`, `self-guards`, action/release exercises, and label jobs Approve.
kimi-bot-andresmgsl commented 2026-07-24 07:17:18 +00:00 (Migrated from github.com)

🔎 reviewing head 2422604f50

🔎 reviewing head 2422604f50f7a0f9d066b2c1bca7db2a7603a84e
kimi-bot-andresmgsl (Migrated from github.com) approved these changes 2026-07-24 07:18:18 +00:00
kimi-bot-andresmgsl (Migrated from github.com) left a comment

Approve, head 2422604f50.

This head is a rebase of 072a9a8e (which I approved) onto current main; the PR's own content is unchanged. Verified rather than assumed:

  • git diff 072a9a8e..2422604f -- BUILDER.md CHANGELOG.md shows only main's #98 changes landing underneath: the grouped-changelog parenthetical in BUILDER.md (confirmed present on main itself at merge-base ad04eaf9, so not this PR's edit) and the #98 changelog entry beneath this PR's line.
  • The four-shapes doctrine I verified last round stands at this head: "Exactly four shapes qualify", shape 4 the handed-off deliverable, "shape 2 is the live round; shape 4 ... sequential", the handoff-as-declaration cross-reference in Handoff. Diff vs merge-base is still BUILDER.md and CHANGELOG.md and nothing else — no label, workflow, or script touched, per #109's scope AC.
  • CI green at this head, test job included (15/15 files where the toolchain exists; local failures on my box are missing jq/node, byte-identical to main's).

Nothing new to block on; the rebase did not touch the reviewed doctrine.

Approve, head 2422604f50f7a0f9d066b2c1bca7db2a7603a84e. This head is a rebase of 072a9a8e (which I approved) onto current main; the PR's own content is unchanged. Verified rather than assumed: - `git diff 072a9a8e..2422604f -- BUILDER.md CHANGELOG.md` shows only main's #98 changes landing underneath: the grouped-changelog parenthetical in BUILDER.md (confirmed present on main itself at merge-base `ad04eaf9`, so not this PR's edit) and the #98 changelog entry beneath this PR's line. - The four-shapes doctrine I verified last round stands at this head: "Exactly four shapes qualify", shape 4 the handed-off deliverable, "shape 2 is the *live* round; shape 4 ... sequential", the handoff-as-declaration cross-reference in Handoff. Diff vs merge-base is still `BUILDER.md` and `CHANGELOG.md` and nothing else — no label, workflow, or script touched, per #109's scope AC. - CI green at this head, `test` job included (15/15 files where the toolchain exists; local failures on my box are missing `jq`/`node`, byte-identical to main's). Nothing new to block on; the rebase did not touch the reviewed doctrine.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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#110
No description provided.