docs: define the ruling escalation contract #75
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/ceremony#75
Loading…
Reference in a new issue
No description provided.
Delete branch "build/72-escalation-contract"
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 #72
Summary
Defines D11–D14 across the builder, triage, reviewer, and label doctrine: every human-owned trigger, one canonical escalation template, the reversible-default bar, and the four-rung builder-to-triage ladder.
Acceptance criteria
<details>fold; the other three files link to it.Options:,Recommend:,Blocked:,Default:.D1–D10citation readsD1–D14.Worklog
docs-sync --checkfailing against a stale consumer mirror.blob/main.🔎 reviewing head
043aeaf173Verdict: approve
Reviewed head
043aeaf17382d656c9b39a49041fea2f6fa01548against #72's acceptance criteria and the D11–D14 wording in #50.Acceptance criteria
<details>); others link🧭block in BUILDER.md; TRIAGE/REVIEWER/LABELS link toBUILDER.md#the-ruling-askOptions:,Recommend:,Blocked:,Default:D1–D14citationVerification
bash test/run.shat this head: 15/15 test files passed (includingdocs-sync,self-ref,ruling, reconcile suites).blob/mainlinks in the doctrine files.docs/VENDORED.txtunchanged (manifest still the four role files); content-addressed mirror needs no path edit.Non-blocking
Doctrine-only PR; implementation matches the frozen decisions without re-litigating them. Approving.
🔎 reviewing head
043aeaf173🔎 reviewing head
043aeaf173Approve — head
043aeaf.Reviewed the whole PR against #72's acceptance criteria, verifying each in the checked-out head rather than from the diff alone:
BUILDER.md:95-103, as a fencedtextblock with the five above-the-fold lines and the<details>fold. The four labels are verbatimOptions:/Recommend:/Blocked:/Default:—#73's grep targets are intact. The other three files link toBUILDER.md#the-ruling-askinstead of duplicating it (verified one link each in LABELS, TRIAGE, REVIEWER).labeled-event anchoring stated in BUILDER.md and LABELS.md, with the explicit contrast — an active thread still climbs the ladder while the 7-day nudge still resets on activity.D1–D14. Changelog entry present.Test plan, run in a detached worktree at the head:
test/run.sh: 8 files pass, 7 fail — byte-identical per-file results onmain(same 31 failing cases;labels-reconcileaborts onjq: command not found, the rest neednode/npm). Every failure is a missing-tool environment issue that pre-exists this docs-only PR; the files this PR touches are covered byself-ref.test.shanddocs-sync.test.sh, both green.docs-sync.sh --checkdemonstrated against a constructed consumer: with the mirror rolled back tomain's bytes it fails, naming all four drifted files; after--fixit passes ("exact mirror … 5 files").docs/VENDORED.txtis untouched by the PR and still lists all four files, so no manifest change is needed — confirmed.blob/main(or anyblob/) links added; new permalinks are issue links and same-repo relative anchors.Non-blocking note: the PR body's worklog leaves its verification items unchecked; I ran each of them above and they hold, so nothing is owed — but consider checking them off for the human's sake.
Approve — reviewed at head
043aeafagainst #72's spec (D11–D14) and verified mechanically, not just read.What I ran and saw
test/run.sh: 15 test files, all green at this head (includingself-ref.test.sh,docs-sync.test.sh,ruling.test.sh, and the changelog guards)..ceremony/was synced frommain, then randocs-sync.sh --check --source <PR head>. It failed with exit 1, naming exactly the four drifted doctrine files (TRIAGE, BUILDER, REVIEWER, LABELS) — anddocs/VENDORED.txtneeded no change, confirming the content-addressed-mirror claim.Options:,Recommend:,Blocked:,Default:are present verbatim in BUILDER.md's fenced block, and the🧭template appears exactly once repo-wide — LABELS.md, REVIEWER.md, and TRIAGE.md all link toBUILDER.md#the-ruling-ask(anchor matches the## The ruling askheading).<details>fold) — identical.blob/mainlinks added; every citation added is an issue link (#50,#72), no unpinned permalinks.Acceptance criteria
All nine hold: the trigger reads as any human-owned decision in all four files with the panel deadlock as one instance (no file retains the old disagreement-exit framing — I grepped for stragglers); the four field rules and the four-rung ladder with the affirmative-doubt bar and the "nothing merges — the human gates" clause are stated; TRIAGE.md owns past-24h and BUILDER.md owns 0–24h; the D14 anchor plus the "active thread still climbs / 7-day nudge still resets" contrast appear in both BUILDER.md and LABELS.md; D9 is restated intact in both; the LABELS.md citation now reads
D1–D14. Read-through as the builder audience: BUILDER.md alone is sufficient to write a conforming escalation without opening #50.Non-blocking nits (builder's discretion)
Default:governs only the 0–12h rung is carried implicitly by the rung list ("at 24h: proceed regardless") rather than stated outright in BUILDER.md. The semantics survive and the AC doesn't require the sentence; a one-clause addition would make it unmissable if you're touching the file again.Closing round summary
What shipped: The doctrine now defines D11–D14 across
BUILDER.md,TRIAGE.md,REVIEWER.md, andLABELS.md: any human-owned decision triggers escalation; one canonical five-line ruling template carries the exactOptions:/Recommend:/Blocked:/Default:fields; the reversible-default rule and four-rung ownership ladder are explicit; and the ladder anchor/activity semantics and D9 machine boundary are recorded.CHANGELOG.mdincludes the Unreleased entry.Round 1: The panel reviewed head
043aeaf17382d656c9b39a49041fea2f6fa01548. Grok, Kimi, and Claude each approved it. No blocking findings were raised and no follow-up commit was needed. The reviewers’ non-blocking presentation note about unchecked worklog boxes is discharged by the verification record below; the optional wording nit about making the 0–12h scope ofDefault:even more explicit is not required by #72 and does not change the frozen contract.Verified: CI is green, including the full test job, self-guards, action exercise, docs-sync exercise, and release-exercise fixtures/replays. Reviewers independently verified all nine acceptance criteria; the full 15-file suite passed in equipped environments; stale-consumer
docs-sync --checkfailed as intended and named the four drifted doctrine files;docs/VENDORED.txtis unchanged; the canonical template is unique and byte-faithful; its cross-links resolve; and noblob/mainlinks were added. The PR is mergeable with noblocker:*labels.Post-merge residue: #73 and #74 remain intentionally blocked on #72 until this PR merges; triage then owns flipping them per the epic. No residue remains in this PR.