Skip to content

red: tri red why -- which step each failure died at, and where that changed - #3271

Merged
gHashTag merged 2 commits into
masterfrom
w111-red-why
Sep 5, 2026
Merged

red: tri red why -- which step each failure died at, and where that changed#3271
gHashTag merged 2 commits into
masterfrom
w111-red-why

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 5, 2026

Copy link
Copy Markdown
Owner

tri red now answers whether a workflow is red. Nothing answered why,
or whether the why had changed.

The incident this comes from

cli-tri.yml was red on master for nine consecutive runs. I read the failing
step once — "No two skill sections share a number" — fixed the collisions in
#3266, and expected green.

It stayed red. The cause had moved to "No census moved without saying so", a
ratchet that had been correct since #3256 three passes earlier, when my own L8
fix took a step out of the quiet-shape class without re-blessing.

Reading only the oldest failure hid that the numbering was repaired. Reading
only the newest would have hidden that numbering was ever the cause.

What it prints

cli-tri.yml on master, in gHashTag/t27
read 10 run(s) of 217 available -- this is a WINDOW, not the history

  80d43e20  failure  No two skill sections share a number
  f4605029  failure  No two skill sections share a number
  f1ce9c49  failure  No two skill sections share a number
  67045be6  failure  No two skill sections share a number
  1bd28062  failure  No two skill sections share a number
  0784be52  failure  No two skill sections share a number
  be9a03bd  failure  No two skill sections share a number
  36288fd3  failure  No two skill sections share a number
  92638ab0  failure  No census moved without saying so   <-- THE CAUSE CHANGED HERE
  26a83b4b  running

  9 failure(s) in this window and the cause changed 1 time(s).

Three details that are not decoration

  • The window is namedread 10 run(s) of 217 available. A page is not a
    history, and this command exists precisely because I mistook one reading for
    the state.
  • A green run resets the comparison. Two failures separated by a success
    are two incidents whatever their steps say.
  • A run that fails with no failing step — a cancelled job, a start-up
    failure, a matrix leg that never ran — prints (no step reported failure)
    rather than an empty cell that reads as "nothing failed".

Mutation

Four killed: a success not resetting · the first failure counted as a shift ·
shifts never detected · the call site ignoring the helper.

Two needed the control fixed before they could kill anything.
failure(x), success, failure(x) cannot test the reset — with identical steps
either side, resetting and not resetting give the same answer. It had to become
failure(x), success, failure(y). And the shift array only feeds a printed
marker, so nothing read it until a call-site test was added; replacing the call
with vec![false; rows.len()] had left all 781 tests green.

cargo test -p tri --bin tri: 782 passed, 0 failed.

Refs #3270

… changed

`tri red now` answers whether a workflow is red. Nothing answered why, or
whether the why had CHANGED.

cli-tri.yml was red on master for nine consecutive runs. I read the failing
step once -- "No two skill sections share a number" -- fixed the collisions,
and expected green. It stayed red: the cause had moved to "No census moved
without saying so", a ratchet that had been correct since my own L8 fix three
passes earlier took a step out of the quiet-shape class without re-blessing.

Reading only the oldest failure hid that the numbering was repaired; reading
only the newest would have hidden that numbering was ever the cause.

`tri red why <workflow>` prints the failing step of each run, oldest first, and
marks the point where it changes. On the real repository it shows eight runs at
the numbering step and then the shift, in one command.

Three details that are not decoration:

  - the window is NAMED (`read 10 run(s) of 217 available`), because a page is
    not a history and this command exists because I mistook one for the state;
  - a green run RESETS the comparison, since two failures separated by a
    success are two incidents whatever their steps say;
  - a run that fails with no failing step -- a cancelled job, a start-up
    failure, a matrix leg that never ran -- says so rather than printing an
    empty cell that reads as "nothing failed".

Four mutants killed, two of which needed the CONTROL fixed first.
`failure(x), success, failure(x)` cannot test the reset: with identical steps
either side, resetting and not resetting give the same answer. And the shift
array only feeds a printed marker, so nothing read it until a call-site test
was added -- replacing the call with `vec![false; rows.len()]` had left all 781
tests green.

Refs #3270

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) September 5, 2026 10:23
@github-actions

github-actions Bot commented Sep 5, 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 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 10:23:31 UTC

Summary

Status Count
Total Open PRs 13
PRs with Failing Checks 12
PRs with All Checks Green 1
READY 0
FAILING 12
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=ab7505edd6ab != 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 5, 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 5, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-05 10:45:36 UTC

Summary

Status Count
Total Open PRs 12
PRs with Failing Checks 11
PRs with All Checks Green 1
READY 0
FAILING 11
PENDING 0

Seal Status

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