Skip to content

claw: push_gate.t27 -- skip a fix push that only restarts required checks #10606

Closed

Description

@gHashTag

What

Every push to a PR head restarts all of its checks at the back of the Actions queue, the four required ones included. The queue sat at 800 to 900 runs all of 2026-10-18.

At about 18:46 UTC an Auto-fix event reported claw-sarif red on #10585. Three facts about that red:

The lane merged master and pushed anyway. That push fixed nothing that would land: the squash merge takes master's job regardless. Its only effect was to restart the PR's four pending required checks. #10563 and #10577 show the same red claw-sarif, and the same push would cost them the same.

Proposal

specs/claw/push_gate.t27 decides each lane push before it happens.

  • A new PR, or pushing a held branch: hold it while more than QUEUE_LIMIT runs are queued, or when the queue could not be read. The limit is refresh.t27's constant, imported rather than copied.
  • A fix push:
    • push when a required check is red;
    • push when the PR's own diff causes the red;
    • skip when master already fixed the red job;
    • skip, and fix it on master, when the red belongs to master.
  • A fix push is never held for the queue.
  • An unknown push kind holds.

Each verdict comes with a one-line reason: V TAB push|hold|skip TAB why.

Not in scope

Checklist

Refs #10600, #10585, #10590

🤖 Generated with Claude Code

User Scenarios

  • Given a fix push for a PR where a required check is red and the PR's own diff causes the red, When the push gate evaluates, Then it verdicts push with a reason citing the PR's own changes.
  • Given a fix push for a PR where a non-required check (claw-sarif) is red, master already fixed that job, and the PR does not touch that job, When the push gate evaluates, Then it verdicts skip with a reason citing master's fix.
  • Given a new PR or held-branch push when the Actions queue shows 834 runs queued (above QUEUE_LIMIT), When the push gate evaluates, Then it verdicts hold with a reason citing the queue depth.

Requirements

  • FR-001: The spec MUST import QUEUE_LIMIT from refresh.t27 rather than copying the constant.
  • FR-002: For a new PR or held branch, the spec MUST verdict hold when queued runs exceed QUEUE_LIMIT or the queue could not be read.
  • FR-003: For a fix push, the spec MUST verdict push when a required check is red and the PR's own diff causes the red.
  • FR-004: For a fix push, the spec MUST verdict skip when master already fixed the red job.
  • FR-005: For a fix push, the spec MUST verdict skip when the red belongs to master (and the fix should be applied on master).
  • FR-006: A fix push MUST never be held for queue depth.
  • FR-007: An unknown push kind MUST verdict hold.
  • FR-008: Every verdict MUST emit a one-line reason in the format V TAB push|hold|skip TAB why.

Success Criteria

  • t27c test specs/claw/push_gate.t27 exits 0 with 14 tests passing, 0 vacuous.
  • t27b test specs/claw/push_gate.t27 exits 0 with 14 tests passing (arm64 under qemu).
  • Six mutation runs each fail (mutation testing passes).
  • gen-c specs/claw/push_gate.t27 and gcc build exit 0.
  • Seal saved for the spec.

Boundary

  • specs/claw/push_gate.t27

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: ## Boundary -- list every file this task may touch, one per line (- specs/x.t27); without it the Queen reserves nothing and no bee can take the issue
    • missing: ## User Scenarios -- at least one Given/When/Then scenario
    • 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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions