Skip to content

fix(tri): a refused dispatch is not a missing one - #3356

Merged
gHashTag merged 4 commits into
masterfrom
s2-pass119
Sep 6, 2026
Merged

fix(tri): a refused dispatch is not a missing one#3356
gHashTag merged 4 commits into
masterfrom
s2-pass119

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Refs #3355

The defect

tri gates unmeasured prints a dispatch: column and a footnote telling the
reader to add workflow_dispatch: wherever it says NO. The column was a
bool, so it could not tell a workflow that is missing a dispatch from one
that refused one.

Measured on #3325's head, before this change:

2026-08-28  NO   -   Release Pipeline  (gHashTag/t27)
...
`dispatch: NO` means the reading cannot be taken on purpose
-- add `workflow_dispatch:` first.

#3325 had just removed that dispatch, deliberately: every job in release.yml
keys off github.event.release.tag_name, which is empty on a dispatch, so
preflight refuses and every publishing job is skipped. The reason was written in
a YAML comment. This tool does not read YAML comments — so it went on advising
the next reader to put a dispatch back in front of cargo publish and npm publish against live registries, where a version is permanent.

That is one cron pass instructing the next one to undo its work.

The change

has_dispatch returns three states, because the domain has three. A workflow
records a deliberate refusal with # tri:no-dispatch <reason> — in the file,
where the tool looks, not only in prose addressed to humans. release.yml
carries it now and reads refused:

2026-08-28  refused   -   Release Pipeline  (gHashTag/t27)
...
`dispatch: refused` means the workflow declined one ON PURPOSE and
says so with a `# tri:no-dispatch` comment. Do not add one.

A present workflow_dispatch: still wins over the marker, so a stale comment
cannot hide a real dispatch.

Tests

Six, and two of them ask the wiring rather than the reader — the defect
lived in a print site and a footnote, not in the predicate:

  • both_dispatch_columns_ask_the_three_state_reader — no column still prints a bool
  • the_advice_explains_a_refusal_wherever_a_column_prints_one — each table's footnote explains refused

The second one failed first, on a footnote I had silently failed to patch: the
edit was a no-op and I had asserted only that the anchor existed, not that
anything moved. Without that test the table would have printed refused under
a footnote that still said "add workflow_dispatch: first".

Census

fetches moved, gates.rs:3596 fn unmeasuredgates.rs:3651 — the function
is unchanged, the enum and its doc comment were added above it. quiet and
shell did not move. Re-blessed in the same commit.

lab and others added 2 commits September 6, 2026 12:07
`gates unmeasured` printed `dispatch: NO` for every workflow without a
`workflow_dispatch:`, beside a footnote saying to add one. It could not tell a
workflow that is missing a dispatch from one that refused a dispatch on purpose.

#3325 removed the dispatch from `release.yml` -- every job keys off the release
tag, which is empty on a dispatch, so preflight refuses and nothing publishes --
and recorded the reason in a YAML comment this tool does not read. The tool went
on advising the next reader to put that dispatch back, in front of `cargo
publish` and `npm publish` against live registries. Measured on #3325's head
before this change: `2026-08-28  NO  -  Release Pipeline`.

`has_dispatch` now returns three states instead of a bool, because the domain
has three. A workflow records a deliberate refusal with `# tri:no-dispatch`,
which is where the tool looks; `release.yml` now carries it. A present dispatch
still wins over the marker, so a stale comment cannot hide a real one.

Two of the six tests ask the wiring rather than the reader: the defect lived in
a print site and a footnote, not in the predicate. The footnote test failed
first, on a footnote I had silently failed to patch -- the python replace was a
no-op and I had asserted only that the anchor existed, not that anything moved.

CENSUS: `fetches` moved, `gates.rs:3596 fn unmeasured` -> `gates.rs:3651`. The
function did not change; the three-state enum and its doc comment were added
above it. `quiet` and `shell` did not move. Re-blessed in this commit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The NOW entry for the change in the previous commit. The pre-push gate refused
the range without one, which is the gate paying for itself: that refusal cost a
second here instead of a CI round.

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

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-06 05:09:47 UTC

Summary

Status Count
Total Open PRs 14
PRs with Failing Checks 10
PRs with All Checks Green 4
READY 2
FAILING 10
PENDING 0
NO CHECKS YET 0

These columns do not partition: 2 + 10 + 0 + 0 = 12, and there are 14 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=23f03e8a97d5 != 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).

@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-06 05:24:19 UTC

Summary

Status Count
Total Open PRs 15
PRs with Failing Checks 10
PRs with All Checks Green 5
READY 3
FAILING 10
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 10 + 0 + 0 = 13, and there are 15 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=23f03e8a97d5 != 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).

@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-06 05:50:35 UTC

Summary

Status Count
Total Open PRs 15
PRs with Failing Checks 10
PRs with All Checks Green 5
READY 4
FAILING 10
PENDING 0
NO CHECKS YET 0

These columns do not partition: 4 + 10 + 0 + 0 = 14, and there are 15 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=23f03e8a97d5 != 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).

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