Skip to content

Eight gates were green because nobody asked them - #2763

Merged
gHashTag merged 5 commits into
masterfrom
w699-ghost-workflows
Aug 28, 2026
Merged

Eight gates were green because nobody asked them#2763
gHashTag merged 5 commits into
masterfrom
w699-ghost-workflows

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Refs #2762

tri gates unmeasured named 28 workflows with no default-branch run in 30 days. All 27 that could be were dispatched at master. This is what came back.

Twelve refused: they have no file

13 of 59 workflows GitHub lists as active have no file in the tree — deleted from the repository, never deregistered. They can never run, so they can never be measured, and they inflate the count of gates someone might go and fix.

tri gates unmeasured reports them under their own heading now and excludes them from the total:

before:  28 of 58 unmeasured
after:   13 ghosts, and 1 of 46 unmeasured

The 1 is Issue Gate. The other 26 got a real reading — which is what the workflow_dispatch added in #2759 was for, used once.

Eight ran and failed

Every one had been true and invisible since June. The full table is in #2762; one cause is fixed here: Build Agent Runner and Build & Push Sandbox Image both build contrib/backend/agent-runner, whose Dockerfile pinned rust:1.82 while a dependency now needs edition 2024 — which arrived in 1.85. Moved to the floating rust:1 tag that bootstrap/Dockerfile already uses.

The most interesting of the rest: Brain Seal Refresh fails with GH013: Repository rule violations found for refs/heads/master. It exists to push refreshed seals to master, and the branch ruleset forbids exactly that. It cannot succeed as written.

Two red dispatches were correct

  • check_now_entry_shape.py reads the docs/now/ entry a pull request adds. A dispatch has no pull request, so failing there was failing at something outside its subject. It now says NOT APPLICABLE and exits 0, while a pull_request event with no base SHA still exits 2.
  • The release pipeline refused on an empty tag and skipped every publishing job. An accidental dispatch of the pipeline that writes to four registries did nothing — the preflight from The release pipeline published the wrong product, unsequenced, and could not package t27c #2753, tested by accident.

tri: 208 tests passing.

🤖 Generated with Claude Code

gHashTag and others added 3 commits August 29, 2026 02:34
…y ran

Dispatching all 27 unmeasured workflows at master, twelve refused. They are
registered with Actions, listed as active, and have no file in the tree:

    13 of 59 active workflow(s) have NO FILE
      .github/workflows/ci.yml           (CI)
      .github/workflows/coq-ci.yml       (Coq Verification)
      .github/workflows/test.yml         (t27 CI)
      ...

Deleted from the repository, never deregistered. Calling them unmeasured is
wrong twice: they can never run, so they will never be measured, and they
inflate the count of gates someone might go and fix. `tri gates unmeasured`
reports them under their own heading now and excludes them from the total.

    before: 28 of 58 unmeasured
    after:  13 ghosts, and 1 of 46 unmeasured

The 1 is Issue Gate. The other 26 got a real reading from the dispatches --
which is the whole point of yesterday's `workflow_dispatch` change, used once.

Also: check_now_entry_shape.py went red on those dispatches, correctly and
uselessly. Its subject is a pull request; a dispatch is not one, so there is no
set of added entries to read. That is not the same as a run that should have had
one and did not, and it now says NOT APPLICABLE and exits 0, while a
pull_request event with no base SHA still exits 2. Found by the dispatch sweep,
which is what a dispatch is for.

Refs #2754

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ndencies

Both Build Agent Runner and Build & Push Sandbox Image build
contrib/backend/agent-runner, whose Dockerfile pinned rust:1.82-bookworm. A
dependency now requires edition 2024, which arrived in 1.85:

    error: failed to parse manifest ... feature `edition2024` is required

Neither workflow had run since June -- both were in the 28 that
`tri gates unmeasured` named -- so the pin went stale with nobody watching.
Dispatching them is what surfaced it.

Moved to the floating `rust:1` tag, which bootstrap/Dockerfile and Dockerfile
already use and which cannot go stale the same way again.

Refs #2754

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Refs #2762

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-28 19:38:23 UTC

Summary

Status Count
Total Open PRs 9
PRs with Failing Checks 8
PRs with All Checks Green 1
READY 0
FAILING 8
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=33df0f208cee != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

…-140)

-o /dev/null is not a free discard: rustc writes metadata through a temp file
beside the output, so the Rust column read 0 of 559 for its whole life. A column
at exactly zero while its siblings are not is a claim about the instrument.

Dispatch every gate once -- the readings are the payload. Twelve refused because
their file is gone; eight ran and failed, none of them new; two failed
correctly, which is worth checking before filing. And NOT APPLICABLE is a third
answer a gate needs when its subject is absent.

A gate catching its author is the gate working, and worth saying out loud.

Refs #2762

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-28 19:39:00 UTC

Summary

Status Count
Total Open PRs 9
PRs with Failing Checks 8
PRs with All Checks Green 1
READY 0
FAILING 8
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=33df0f208cee != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

Up to date for the ruleset after #2761.
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-28 19:50:34 UTC

Summary

Status Count
Total Open PRs 8
PRs with Failing Checks 7
PRs with All Checks Green 1
READY 0
FAILING 7
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=33df0f208cee != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 95deeb4 into master Aug 28, 2026
32 of 33 checks passed
@gHashTag
gHashTag deleted the w699-ghost-workflows branch August 28, 2026 20:00
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