Skip to content

[Decision · ruled C] .github/workflows/** landing: split workflow PRs, keep high-risk edits Tier H, move the rest to Tier S #31538

Open

Description

@objectstack-fleet

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Path: none

Question

Every PR that touches .github/workflows/** is Tier H: the maintainer's approval is needed before landing (B2 ruling, 2026-10-13; GOVERNED_SURFACES row workflows). Is that review worth what it costs?

Measured (main, 2026-10-08 → 2026-11-08)

40 merges touched .github/workflows/**.

Most of the edits are low-risk: path filters, shard counts, timeouts, budget ceilings, cache keys.

Why the review matters: workflows are the one surface that can switch off every other gate. A continue-on-error: true, a dropped required job, or an if: false turns a check off while CI still reads green. permissions:, secrets.* or a new third-party action reaches credentials. Release and deploy workflows publish.

Options

  • A — Keep everything as it is.
  • B — Do only C1: workflow edits ride their own PR.
  • C — Do C1, C2 and C3:
    • C1. Workflow edits ride their own PR (already [Decision] Keep domain:devx and domain:server as separate lanes, or merge them? Measured load and boundary friction, 2026-11-08 #31424 rule 3: .github/workflows/** is devx by path). A product PR no longer waits on the maintainer because of one workflow line.
    • C2. These stay Tier H (the maintainer's approval):
      • release, publish and deploy workflows;
      • any added or changed permissions:, secrets.* reference or pull_request_target;
      • a new third-party uses: (one not already used in the repo);
      • a deleted job, or a change to the required-context set;
      • a new continue-on-error, or an if: that disables a job or step.
    • C3. Every other workflow edit becomes Tier S, like .claude/**:
      • a ## Contract review record with a PASS verdict for the current head, and every check green;
      • then the owning seat lands it through the queue;
      • the post-merge audit lists it, and a miss is rolled back.

Ruling

Ruled C. The stamped ruling record is the first comment below. The maintainer asked in triage's session 「现在改 workflow 文件都需要我审核,这个价值大嘛?」, and answered 「同意」 to triage's lean, C.

Execution (domain:skills, per #31424 rule 6: internal rules have their own flow)

  1. scripts/pm/check-governed-merges.mjs. The workflows row gets a content-aware tier.
    • Path-based Tier H for release, publish and deploy workflow files. List them from the register; don't guess.
    • Diff-based Tier H for the C2 triggers. Otherwise Tier S.
    • Self-tests cover each trigger, plus the near-misses.
    • The queue guard (check-governed-queue-guard.mjs) and CODEOWNERS (whose mirror self-test must stay green) follow.
    • Fail closed: if the classifier can't parse the diff, the PR is Tier H.
  2. AGENTS.md §14. Name the workflows row's split tier. pnpm check:pm-governed-prose must stay green.
  3. pm-dispatch SKILL.md (L186/L203). Update the Tier H/S lines.
  4. Do the same in cloud and objectui, where the row exists. A cross-repo card follows once the objectstack PR lands.

This PR touches AGENTS.md and .github/CODEOWNERS-routed surfaces, so it lands Tier H by the maintainer's hand.

No new gate: this relaxes an existing landing rule; it adds no check.


Generated by Claude Code

Activity

  1. added
    pm:queueReady for the PM dispatch loop
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    on Nov 8, 2026
  2. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Ruling: #31538 · letter C · maintainer 「同意」 2026-11-08T13:39Z

    The maintainer's words in triage's session, in order:

    • 「现在改 workflow 文件都需要我审核,这个价值大嘛?」
    • 「同意」, to triage's lean, C (C1 + C2 + C3).

    Execution is as the body sets it out. domain:skills, pm:queue.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 8, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw

    Claim: PM loop round 12 · 2026-11-08T16:17Z
    Session: session_01QsR2jT34CXs5fCn3BDirZw
    Account: zhuangjianguo (the seat's linked user; the card's assignee)
    Branch: claude/project-thread-hzucdt (the card thread's designated branch, a measured platform exception to claude/issue-<n>-<slug>; dev session session_01QsR2jU8C3iu8fsXdU4Rm8o)
    Worktree: objectstack-issue-31538
    Domain: domain:skills
    Seat: domain:skills#2
    File surface: scripts/pm/check-governed-merges.mjs, scripts/pm/check-governed-queue-guard.mjs (and their self-test files), .github/CODEOWNERS (only if its mirror needs it), AGENTS.md §14, .claude/skills/pm-dispatch/SKILL.md L183–L203 (stop on breach; explain in the report)
    Container & model: L, mode:thread, model: TIER_DEFAULT (Tier H via AGENTS.md; the CONTRACT_REVIEW_TIER review runs on the lane's isolated reviewer per the maintainer's 16:12Z word), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the governed-surface landing register (GOVERNED_SURFACES workflows row) | ruling 6722205630, letter C: 40 workflow-touching merges in a month, 30 of them product PRs held on the maintainer for one workflow line
    Thread-read: 6722205630
    Premise: holds. On main 5ee59f5e the workflows row (check-governed-merges.mjs L1214) is path-only GOVERNED_TIER_H, and the queue-guard pin (L3051–3053) asserts a workflow path is Tier H. AGENTS.md §14 names .github/workflows/** as Tier H.
    Serial constraints cleared: PR #31522 (#31505, held on a user card) also edits SKILL.md, in other lines. Whichever lands second merges main and re-reads the ratchet. Card item 4 (cloud and objectui) is out of scope here; a follow-up card is owed after this lands.

    Dispatch order: pasted verbatim into the card thread's opening message (common rules + order, from the seat folder skills-seat-2/ of the project files). Writes: PR only via relay pr_create; comments, labels and bodies only via scripts/pm write tools; no GitHub MCP writes.

  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

domain:skillsDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions