Repository navigation
Owner decision: let master runs finish, make ledger lag pending, then require the ratchets (epic #6595) #10193
Description
Owner decision, part of epic #6595 (items A and B). Every item below is a .yml or .py change, so the only-t27 gate correctly refuses it from an agent. Each one needs the owner's commit or the owner-approved-foreign label. The pure-t27 half of the work landed as #10192: the t27b ledger steward now applies the safe rows when one finding is refused.
Boundary
.github/workflows/corpus-ratchet.yml,dupe-ratchet.yml,cli-tri.yml,t27b-native.yml,issue-gate.yml(the issue-shape job),queen-publish.yml(job derived-records).- Ruleset 14813367
t27-master-protection(repo settings). - No
.t27change: the rules are already written inspecs/ci/derived_data.t27,specs/tri/t27b/ledger_steward.t27andspecs/policy/required_contexts.t27.
Scenarios
Measured on 2026-10-18 between 00:00 and 04:00Z:
-
Master moved 112 first-parent commits in 12.5 hours (about 9 an hour).
corpus-ratchet.yml,dupe-ratchet.ymlandcli-tri.ymlusecancel-in-progress: trueongithub.ref, master included. Of their last 100 master runs:- Corpus Ratchet: 88 cancelled, 10 failed, 2 succeeded.
- Duplicate Body Ratchet: 72 cancelled, 12 failed, 16 succeeded.
- t27b native: 73 cancelled, 27 failed, 0 succeeded.
A master commit is almost never judged, so a red that lands is found by the next PR, not by the commit that caused it.
-
The ruleset requires only
validate,check-linked-issue,parse-ratchetandown-language. It setsstrict_required_status_checks_policy=falseand has no merge queue. A PR that turnsCorpus ratchet,cli-tri,duplicate-bodiesort27b-native-ratchetred still merges, and every later PR inherits the red (see ci: master red again -- 8 stale corpus-ledger rows after #10101/#10095, census not re-pinned after #10087 #10171, fix(ci): master green again -- stale corpus-ledger rows, census re-pin, t27mcp duplicate helpers (Closes #10171) #10172). -
Ledger lag is red, not pending.
t27b-native-ratcheton master reports UNLISTED 263 and nothing else.specs/ci/derived_data.t27already says lag (UNLISTED, UNEXPECTED PASS, MOVED, STALE) isV_PENDINGand that one bot re-derives it, but its wiring into the workflows was never done (t27b: repair crypto and rust_convert; distinguish PR ledger lag #9637, open since 10-15, waits on the label). -
The steward's refusal issues (
ledger: the steward refuses master ...) and its APPLY tracking issues carry no Boundary/Scenarios/Requirements/Criteria headings. The issue-shape gate closes each one within about 12 seconds, so no one reads them.
Requirements
FR-001: corpus-ratchet.yml, dupe-ratchet.yml and cli-tri.yml MUST cancel only superseded PR runs: cancel-in-progress: ${{ github.event_name == 'pull_request' }} (the same block as #7569), so every master commit gets a verdict.
FR-002: t27b-native.yml and corpus-ratchet.yml MUST report ledger lag (UNLISTED, UNEXPECTED PASS, MOVED, STALE) as pending, not failure, as specs/ci/derived_data.t27 says; a regression (UNEXPECTED FAILURE, a defect) MUST stay red. #9637 is the candidate and needs the label.
FR-003: The issue-shape job MUST skip issues labelled t27b-ledger-steward, as it already skips epic and roadmap; the alternative is for queen-publish to write the template's sections into the bodies it opens.
FR-004: Once FR-001 to FR-003 hold, the ruleset MUST require Corpus ratchet, cli-tri, duplicate-bodies and t27b-native-ratchet, and the merge queue SHOULD be enabled (#6595 item A). Without FR-002 first, a required ratchet would block every PR on lag no PR caused.
Success Criteria
gh run list -w corpus-ratchet.yml -b master -L 20shows nocancelledmaster run.t27b-native-ratcheton master is neutral or green while only lag is present (its step ends with exit 0), and red on an UNEXPECTED FAILURE.- A steward issue stays open until its PR closes it.
- The ruleset lists the four checks, and a PR that breaks one of them cannot merge.
🤖 Generated with Claude Code
Activity
github-actions commentedon Oct 18, 2026
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
FR-001: ... MUST ...exit 0, or a backticked commandgithub-actions commentedon Oct 18, 2026
The shape check passes now (specs/policy/issue_shape.t27); reopened.