Conversation
…ruleset requires
A required status check is named in repository settings. No file in the tree can
read it, so a comment claiming a gate blocks cannot go stale against anything.
This is the only drift class here with no detector, which is why it is a command.
CLAIMED REQUIRED vs ACTUALLY REQUIRED (gHashTag/t27, branch master)
ruleset requires 4 context(s):
check-now-freshness validate check check-linked-issue
Claimed required, emits no required context -- cannot block a merge:
build-paper.yml emits: Build LaTeX PDF
catalog-count-gate.yml emits: count-invariant
coq-kernel.yml emits: build
...
seal-coverage.yml emits: coverage
claimed in check_pr_branch_filters.py MERGE_CRITICAL and docs/BRANCH-PROTECTION.md
15 claim(s), 11 of them hollow; 4 required context(s), 0 unclaimed.
`seal-coverage.yml` records learning "the hard way in #2191" that renaming its
job id made a PR go BLOCKED with every visible check green. That is true evidence
its context WAS required and no evidence that it still is. It is not: `coverage`
concluded failure on 32 of the last 40 merged pull requests, and all 40 merged.
Contexts are read as GitHub matches them -- a job's `name:` when it has one, else
its id. Matching by file name would report every workflow as unrequired.
The parser carries its own trap as a test. `MERGE_CRITICAL` appears in the
checker's docstring thirty lines before the assignment, and the text between
holds an ODD number of quotes: the docstring's closing `"""` plus one quoted
phrase. Pairing quotes from the wrong start inverts the parity, every filename
lands on an even index, and `.skip(1).step_by(2)` sees none. Anchored on the bare
name this reported 5 claims; anchored on `MERGE_CRITICAL = (` it reports 15. The
mutation is exactly that substitution.
Refuses rather than answering when the ruleset comes back empty (a branch with no
required checks and a token that cannot read rules are different facts) or when
no claim is found in the tree at all.
Refs #2919
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
gHashTag
enabled auto-merge (squash)
August 29, 2026 23:33
Contributor
PR DashboardGenerated at: 2026-08-29 23:37:06 UTC
Summary
Seal Status
|
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
# Conflicts: # cli/tri/src/gates.rs
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
PR DashboardGenerated at: 2026-08-29 23:50:33 UTC
Summary
Seal Status
|
Contributor
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Contributor
PR DashboardGenerated at: 2026-08-29 23:53:02 UTC
Summary
Seal Status
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A required status check is named in repository settings. No file in the tree
can read it, so a comment claiming a gate blocks cannot go stale against
anything. That is the only drift class here with no detector.
Why the claims are individually true and jointly wrong
seal-coverage.ymlrecords learning "the hard way in #2191" that renaming itsjob id made a PR go BLOCKED with every visible check green. That is real evidence
its context was required — and no evidence that it still is. It is not:
coverageconcluded failure on 32 of the last 40 merged pull requests, andall 40 merged.
The parser's own trap, kept as a test
MERGE_CRITICALappears in the checker's docstring thirty lines before theassignment, and the gap holds an odd number of quotes — the docstring's
closing
"""plus one quoted phrase. Pairing quotes from the wrong start invertsthe parity, every filename lands on an even index, and
.skip(1).step_by(2)seesnone of them.
MERGE_CRITICALMERGE_CRITICAL = (the_tuple_is_found_by_its_assignment_not_its_nameasserts the gap's quote countis odd, then asserts both readings — so it fails if the fixture stops reproducing
the trap, not only if the parser regresses.
Contexts are read as GitHub matches them: a job's
name:when it has one, elseits id.
Refuses rather than answering when the ruleset comes back empty, or when the tree
holds no claim at all.
Refs #2919