You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A refused dispatch reads as a missing one, so the tool advises undoing it #3355
tri gates unmeasured prints dispatch: NO beside the advice "add workflow_dispatch: first" for every workflow that has no dispatch. It cannot
tell a workflow that is MISSING one from a workflow that REFUSED one.
#3325 removed the dispatch from release.yml because it could only ever fail:
every job keys off github.event.release.tag_name, which is empty on a
dispatch, so preflight takes its *) branch, prints "Tag '' names no product",
exits 1, and every publishing job is skipped. The reason was written in a YAML
comment. This tool does not read YAML comments.
2026-08-28 NO - Release Pipeline (gHashTag/t27)
...
`dispatch: NO` means the reading cannot be taken on purpose
-- add `workflow_dispatch:` first.
So the tool tells the next reader to put a dispatch back in front of cargo publish and npm publish against live registries, where a version is
permanent — undoing a decision made one pass earlier, for a reason the tool
never sees. The only thing standing between that advice and a re-added
dispatch is a comment addressed to humans.
A refusal has to be recorded where the tool looks. This is the shape of
"a new cron cycle must not break the previous one's work": the guard against
undoing a decision cannot live only in prose.
Verified on origin/master, with a tri built from master itself — not from the merge message:
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.
has_dispatch returns three states (Yes / No / Refused); .github/workflows/release.yml carries the # tri:no-dispatch marker (1 occurrence on master).
Both dispatch tables now explain refused in their footnote — the second one was caught by a structural test, because my first patch of it was a silent no-op.
cargo test -p tri --bin tri dispatch_refusal: 6 passed, 0 failed.
A present workflow_dispatch: still wins over the marker, so a stale comment cannot hide a real dispatch — asserted by a_present_dispatch_wins_over_a_stale_marker.
Activity
fix(tri): a refused dispatch is not a missing one (Refs #3355)
docs(now): a refused dispatch is not a missing one (Refs #3355)
fix(tri): a refused dispatch is not a missing one (#3356)
gHashTag commentedon Sep 6, 2026
Closed by #3356, merged as
c8b48a3.Verified on
origin/master, with atribuilt from master itself — not from the merge message:has_dispatchreturns three states (Yes/No/Refused);.github/workflows/release.ymlcarries the# tri:no-dispatchmarker (1 occurrence on master).refusedin their footnote — the second one was caught by a structural test, because my first patch of it was a silent no-op.cargo test -p tri --bin tri dispatch_refusal: 6 passed, 0 failed.A present
workflow_dispatch:still wins over the marker, so a stale comment cannot hide a real dispatch — asserted bya_present_dispatch_wins_over_a_stale_marker.fix(tri): a seal is a digest and a path, not a line (Refs #3366) (#3367)
docs(loop): R12 denied a spelling the gate accepts (Refs #3368) (#3369)