Skip to content

A streak counts; it does not date — and I reported a repaired outage as live - #3190

Merged
gHashTag merged 1 commit into
masterfrom
loop/red-needs-an-age
Sep 4, 2026
Merged

gHashTag merged 1 commit into
masterfrom
loop/red-needs-an-age

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 4, 2026

Copy link
Copy Markdown
Owner

I put a settled outage on the dashboard as the pass's largest live finding

tri red now listed Auto Merge Ready PRs at 260+ in a row, no pass on record. It was settled.

Its whole history: 1541 runs, every one a failure, never a success. The cause was not the gate's logic — .github/workflows/auto-merge-ready-prs.yml had not parsed since 2026-07-07 (yaml.safe_load fails at line 62), so GitHub could not read its on: block and created a failed run on every push. #2256 repaired the parse on 2026-08-20. Of the 96 runs after that date, 95 came from one stale branch and 1 from another; zero came from master. Dormant since 2026-08-28.

The tell was in the data the whole time: 1541 runs recorded as event: push, from a file whose on: block has never in five commits contained push. A workflow firing on an event it does not declare is not a puzzle to reason about — it is a file the parser could not read.

The command could not have known, and that is the defect

It reports the LATEST run — the newest that exists, not a recent one. Every row now carries the instant of its latest run, from the same single request that already asked for the verdict. It cost nothing and reclassifies the list on sight:

30+ in a row  last run 2026-09-04T17:23   OpenSSF Scorecard      <- live
30+ in a row  last run 2026-08-19T22:21   Auto Merge Ready PRs   <- settled, 16 days
 8 in a row   last run 2026-04-08T08:07   Issue Gate             <- five months

Only one of eleven rows was failing now. The other ten are history that reads like news, in a command whose closing line asks you to read it before merging.

This is the "repaired defect reported as live" shape already in SKILL.md — committed by me, one pass later, from this command's own output, because the output had a count and no date and I did not ask for one. When a number says HOW MANY, ask what it says about WHEN.

The sweep that produced it: 3 candidates, 1 defect

#3189 left "sweep for other matchers reading human-written strings". Run: 45 lines read a commit message, branch name or PR title; 3 compare one against a literal. The class is not "reads prose" — it is "reads prose where a structural property decides the same question":

  • gates.rs:4630 reads commit messages against a pattern extracted from issue-gate.yml itself, and labels the row PROXY saying the gate does not read them. It reads prose because the gate reads prose. Not a defect — and it already says so.
  • rule_observance.py:125 matches headRefName.startswith("w699-"): 0 of 40 merged PRs comply; live prefixes are w (24) and loop (19). But the command already prints that zero and names the clause as enforced by nothing. The rule is dead, not the practice, and resolving it belongs to whoever owns LOOP-RULES.md.
  • auto-merge-ready-prs.yml reads a PR title — and turned out to be the finding above.

A sweep finding one defect in three has still earned itself: the two non-defects are recorded as non-defects with the reason, so the next pass will not re-open them.

Mutation: dropping created_at from the request turns the structural test red. Census moved and is re-blessed in the same commit. 671 crate tests pass.

SKILL.md 532–533.

Refs #3176

… instant (#3176)

tri red now listed `Auto Merge Ready PRs` at 260+ in a row and I put that on
the dashboard as a live finding one pass ago. It was settled.

Its whole history: 1541 runs, every one a failure, never a success. The cause
was not the gate's logic -- the workflow file had not parsed since 2026-07-07,
so GitHub could not read its `on:` block and made a failed run on every push.
#2256 repaired the parse on 2026-08-20; of the 96 runs after that date, 95
came from one stale branch and 1 from another, and ZERO from master. Dormant
since 2026-08-28.

The tell was in the data all along: 1541 runs recorded as event=push, from a
file whose `on:` block has never in five commits contained push.

The command could not have known, and that is the defect: it reports the
LATEST run, which is the newest that exists rather than a recent one. Every
row now carries the instant of its latest run, from the same single request
that already asked for the verdict. Only one of eleven rows was failing NOW;
Issue Gate's newest run is five months old.

Mutation: dropping created_at from the request turns the structural test red.

Also the sweep that produced this. 45 lines read a commit message, branch or
PR title; 3 compare against a literal; 1 was a defect. gates.rs reads prose
because the GATE reads prose and labels the row PROXY -- not a defect, and it
says so. rule_observance's `w699-` prefix matches 0 of 40 merged PRs, but the
command already prints that zero and names the clause as enforced by nothing:
the rule is dead, not the practice, and resolving it owns to LOOP-RULES.md.

Census moved and is re-blessed here. 671 crate tests pass. SKILL.md 532-533.

Refs #3176

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

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

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-04 17:38:49 UTC

Summary

Status Count
Total Open PRs 13
PRs with Failing Checks 11
PRs with All Checks Green 2
READY 0
FAILING 11
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=9b8875f1c9d4 != 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 6e242b5 into master Sep 4, 2026
30 checks passed
@gHashTag
gHashTag deleted the loop/red-needs-an-age branch September 4, 2026 17:41
gHashTag added a commit that referenced this pull request Sep 4, 2026
… are 11, and 3 are live (#3192)

* fix(tri): red now counts incidents, not workflow files

Six loop passes carried "50 red workflows in gHashTag/trinity-fpga" as
outstanding work. #3190 gave every row a date; re-running against that
repository answers the item, and the answer is not 50.

405 active workflows, 50 red on the default branch, 11 distinct
latest-run instants, 3 of them inside a week. 39 of the 50 are four
batches from one afternoon of 2026-07-09/10: files generated together,
run once on the commit that added them, failed, never triggered since.
FPGA HSLM Bitstream has one run in its entire history, 139 days old.

The count was right and its unit was wrong. 50 counts FILES; a reader of
"50 red" takes away 50 PROBLEMS. The tell was in the next column all
along -- 47 of the 50 rows read `1 in a row`, and a one-long streak is a
single event, not an outage.

  - sort by latest-run instant, not streak length. The old order put a
    July fossil with 30+ failures ABOVE a live 3.
  - headline states the split: "50 ... -- 3 of them in the last 7 days".
  - a divider names the fossils' batch structure, not their file count.
  - STALE_AFTER_DAYS = 7 is printed. Nagios freshness_threshold and the
    Prometheus staleness delta both make the threshold a stated number;
    a policy that is not stated is a policy that is not reviewable.

Grouping to the printed minute can split one push across a minute
boundary and so over-count batches. That direction never merges two
events into one, so the incident count is never understated.

Census re-blessed in this commit: fetches red.rs:159 -> 160, a line
shift from the added chrono import. No fetch was added or removed.

SKILL 534 (the unit of the count) and 535 (pass 86 fixed pagination in
the tool; on 2026-09-05 I asked the same question in a raw shell probe
and reproduced the defect inside 24 hours, as a false NOT REGISTERED).

Refs #3191

* docs: the streak count was 43, not 47 -- two populations, one number

The previous commit's message, this PR's body, issue #3191 and the
dashboard all said "47 of the 50 rows read `1 in a row`". Counted: 43.

47 is how many rows are DORMANT (last run over seven days ago). 43 is
how many read `1 in a row`. The sets are nested, not equal: all 43
one-streak rows are dormant, and the other four dormant rows carry real
streaks of 2, 3, 5 and 13 -- Decode RTL exhaustive verification among
them, the one genuine regression in the list (66 runs, 49 successes,
then 13 consecutive failures ending 2026-08-01). 43 + 4 = 47 dormant,
plus 3 live = 50.

I reached for a number already on the page instead of counting the thing
I had just named, in the section whose whole subject is a count answering
a different question than the one it is put to. The earlier commit
message cannot be corrected without a force-push, which is forbidden, so
this commit is the correction of record.

Refs #3191

* docs: 44 of the 50 never succeeded once; "one genuine regression" was six

The previous commit called Decode RTL exhaustive verification "the one
genuine regression in the list". That rested on looking up exactly one
workflow. Looking up all fifty:

  1 run ever, never a success ................ 42
  2-5 runs, never a success ..................  2
  succeeded, then regressed, now dormant .....  3
  succeeded, then regressed, LIVE ............  3

44 of the 50 have never had a single successful run in their whole
recorded history. A check that never once passed is not a broken check;
it is an unfinished file. The regressions number six, three of them
live: S3AI Brain CI (2654 runs / 1570 successes), Orphaned artefacts
(1241/264), Withdrawn numbers (1256/682); dormant Decode RTL (66/49),
TRI-NET Baud Ladder (3/2), TRI-NET Node v2 (8/4).

Also now measured rather than inferred: all 39 of the July batch have
exactly one run in their entire history and none has ever succeeded.
That sentence was in the previous commit as a generalisation from one
sample; it happens to hold, and now it is counted.

Two wrong claims in one change, both from generalising a single lookup,
and the second was found only because the first prompted me to check its
neighbours. Neither was reachable by a test.

Refs #3191

* docs(now): 2026-09-05 entry for the tri red incident-count change

The check-now-freshness gate refused this PR because it added no
docs/now/ entry. It was right: I had not written one.

Refs #3191
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