Skip to content

verify-satisfied: PR-minus-base — check 4 (introduced alerts) + inherited vs new red checks #117

Open

Description

@hyperpolymath

squabble verify-satisfied (stacked on #114) evaluates D1 checks 1–3 and 5–7. Two judgements it makes are still not PR-minus-base, and both need the same second read (the base ref's head), so they belong together.

1. Check 4 — code-scanning alerts the PR introduces

Today it is a note: "code-scanning alerts introduced by this PR are NOT yet evaluated". Requiring every alert on the PR ref would recreate the deadlock recorded at standards/.github/workflows/hypatia-scan-reusable.yml:211-214 (147 open PRs across 91 repos held by 1,777 alerts, none introduced by the PR they blocked). Only the set difference may block.

2. A red non-required check: inherited or new?

Today a red non-required check is agent work until the PR body names it with an issue link (the 2026-09-15 ruling in machine-readable form). A red that is equally red on the base is inherited; it should be a note, not agent work, without the author having to write a line. (The body acknowledgement still covers a new red the author chooses to defer.)

Acceptance criteria

  • One base-ref read shared by both judgements. No second implementation.
  • Positive control first: launch-scaffolder#46 must see its hypatia/content_patterns/hardcoded_tmp alert. Pin empirically which ref carries PR alerts (refs/pull/N/merge vs /head, or the alerts API pr= parameter). A gate reading the wrong ref reads an empty set and passes vacuously.
  • Negative control: a PR introducing no alerts, in a repo with open alerts on main, passes check 4.
  • An alert new on the PR is cleared by dismissal-with-reason or a linked issue. Inherited alerts never block.
  • A red non-required check also red on the base's latest completed run is a note. The cicd-squabbler#114 rust-ci case (red on main b12657f) is the fixture.
  • Each rule has a killed mutant.
  • Also accept the acknowledgement in a PR comment, not only the body (a body is easy to overwrite; comments are append-only history).

🤖 Generated with Claude Code

https://claude.ai/code/session_0136eszqrQ53Kj7aBH1D4rXK

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew capability or improvement to existing behaviourpriority:p2Normal - queue itscope:estateAffects many or all repos across the estate

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions