Skip to content

Owner decision: let master runs finish, make ledger lag pending, then require the ratchets (epic #6595) #10193

Open

Description

@gHashTag

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 .t27 change: the rules are already written in specs/ci/derived_data.t27, specs/tri/t27b/ledger_steward.t27 and specs/policy/required_contexts.t27.

Scenarios

Measured on 2026-10-18 between 00:00 and 04:00Z:

  1. Master moved 112 first-parent commits in 12.5 hours (about 9 an hour). corpus-ratchet.yml, dupe-ratchet.yml and cli-tri.yml use cancel-in-progress: true on github.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.

  2. The ruleset requires only validate, check-linked-issue, parse-ratchet and own-language. It sets strict_required_status_checks_policy=false and has no merge queue. A PR that turns Corpus ratchet, cli-tri, duplicate-bodies or t27b-native-ratchet red 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).

  3. Ledger lag is red, not pending. t27b-native-ratchet on master reports UNLISTED 263 and nothing else. specs/ci/derived_data.t27 already says lag (UNLISTED, UNEXPECTED PASS, MOVED, STALE) is V_PENDING and 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).

  4. 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 20 shows no cancelled master run.
  • t27b-native-ratchet on 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

  1. added
    shape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it
    on Oct 18, 2026
  2. github-actions commented on Oct 18, 2026

    @github-actions
    Contributor

    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.

    • missing: ## Requirements -- numbered obligations, FR-001: ... MUST ...
    • missing: ## Success Criteria -- an outcome a machine can settle: a number with a unit, a backticked file, exit 0, or a backticked command
  3. removed
    shape-refusedClosed by the issue-shape gate (specs/policy/issue_shape.t27); a passing edit reopens it
    on Oct 18, 2026
  4. github-actions commented on Oct 18, 2026

    @github-actions
    Contributor

    The shape check passes now (specs/policy/issue_shape.t27); reopened.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions