Skip to content

chore(#649): the required check's name stops being a prose string - #653

Merged
gsdali merged 1 commit into
refactor/381-pass1bfrom
chore/649-require-gate-scripts
Aug 2, 2026
Merged

chore(#649): the required check's name stops being a prose string#653
gsdali merged 1 commit into
refactor/381-pass1bfrom
chore/649-require-gate-scripts

Conversation

@gsdali

@gsdali gsdali commented Aug 2, 2026

Copy link
Copy Markdown
Collaborator

Part of #649 — the rename that must land before the ruleset is applied.

Why

gate-scripts is becoming a required status check on refactor/**. The context such a rule matches is the check-run name, which GitHub takes from the job's name: when it has one and from the job id otherwise.

Today that name is the prose string gate scripts (static, no build). It reads like a comment. If anyone rewords it for clarity, the ruleset keeps pointing at the old string, the check quietly stops being required, and the PR UI looks identical to a working gate.

That is the #618 failure class — a detector reporting all clear because it is blind, indistinguishable from one reporting all clear because the tree is clean — reproduced one level up, in the enforcement rather than the detector. Three gate scripts on this branch already shipped confidently wrong; this makes the thing that enforces them harder to disarm by accident.

Dropping the key makes the required context the job id, which nobody edits for readability. Cost: a less readable label in the checks list.

Ordering

This must merge before the ruleset is created. Applying a rule that requires gate-scripts while the job still publishes gate scripts (static, no build) would block every PR into refactor/** with an unclearable "Expected, waiting for status to be reported" — including this one.

Also recorded in CLAUDE.md

Verification

YAML parses; jobs unchanged at gate-scripts, build-and-test, ios-simulator-build; gate-scripts now has no name: key. All four gates pass locally (exit 0). The check-run name this PR's own CI run publishes is the confirmation that matters, and it is read from the API rather than the PR UI before the ruleset goes anywhere near the repo.

build-and-test is expected red (#585, signature Issue570HealingApproxTests (fitted.uDegree → 1) > 1).

`gate-scripts` is becoming a required status check on `refactor/**`. The context a
required-status-check rule matches is the check-run name, which GitHub takes from the
job's `name:` when it has one and from the job id otherwise.

`name: gate scripts (static, no build)` reads like a comment. Reworded for clarity by
anyone, the ruleset would keep pointing at the old string, the check would quietly stop
being required, and the PR UI would look identical to a working gate — the #618 failure
class (a detector reporting all-clear because it is blind, indistinguishable from one
reporting all-clear because the tree is clean) reproduced one level up, in the
enforcement rather than the detector.

Dropping the key makes the required context the job id, which nobody edits for
readability. The cost is a less readable label in the checks list.

CLAUDE.md records the requirement, why the key is absent, and the ordering constraint:
the check cannot be required on `main` until `ci.yml` carrying this job lands there,
because a required check that never reports blocks a PR permanently with no way to
clear it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gsdali
gsdali merged commit d6ba0ca into refactor/381-pass1b Aug 2, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant