Skip to content

fix(tri): a budget half the cost, and a fleet defined twice - #3193

Merged
gHashTag merged 5 commits into
masterfrom
loop/one-fleet-two-lists
Sep 4, 2026
Merged

gHashTag merged 5 commits into
masterfrom
loop/one-fleet-two-lists

Conversation

@gHashTag

@gHashTag gHashTag commented Sep 4, 2026

Copy link
Copy Markdown
Owner

tri whats-open --all returned TIMEOUT after 420s for gates dead.

Measured: that command over its default fleet takes 899 s. The budget was less than half its cost, so --all has never printed this instrument's answer — and the answer is not small: 15 workflows have never succeeded, across 8875 runs, the top three at 1983, 1980 and 1541 runs apiece.

A budget under the measured cost does not make a slow instrument fast. It makes a working instrument unreadable — and in the honest-looking way: TIMEOUT sits where a number belongs, so the page reads as complete and the reading is missing.

Budget set to 1200 from the measurement, with the measurement in the comment. The module docstring said dead "takes over four minutes" where it is fifteen; both now carry the measured number and its date.

And the fleet was two lists

command default
gates dead 3 repos
red now 4 repos

Both doc comments called it "the three/four this fleet uses" — one word, two sets, nothing saying which was right. The difference is gHashTag/ghashtag.github.io.

Priced before closing: that repository has no workflow with a file and ≥ 50 runs at a zero success count, and reading it adds 7 seconds. So the gap hid nothing today. It is still a defect — the next dead workflow there would have been invisible to the command whose entire subject is dead workflows, and no reader could tell which list to believe.

One fleet_repos(), both callers on it, for the reason required_contexts gives one screen above in the same file: a second caller must not become a second literal of the same query.

Three tests: the list holds the disputed repository, every entry is owner/repo (a bare name reads as a different repository to gh), and no slug appears twice (a duplicate would double that repository's runs in every count).

Census

Re-blessed here, and the move is an address: deleting seven lines of literal took red.rs's runs_url from 159 to 152. The buckets are identical — 25 sites, 8 / 0 / 3 / 2 — which is the check that says the move is address and not substance.

Refs #2994

`tri whats-open --all` returned TIMEOUT after 420s for `gates dead`.
Measured: that command over its default fleet takes 899 s. The budget was
less than half its cost, so --all has never printed this instrument's
answer -- and the answer is 15 workflows that have never succeeded across
8875 runs, the top three at 1983, 1980 and 1541 runs apiece.

A budget under the measured cost does not make a slow instrument fast. It
makes a working instrument unreadable, and it does it in the honest-looking
way: TIMEOUT sits where a number belongs and the page reads as complete.
Budget set to 1200 from the measurement, with the measurement in the
comment. The module docstring said `dead` "takes over four minutes" where
it is fifteen; both now carry the measured number and its date.

And the fleet was two lists. `gates dead` defaulted to three repositories,
`red now` to four, both doc comments calling it "the three/four this fleet
uses" -- one word, two sets, and nothing saying which was right. The
difference is gHashTag/ghashtag.github.io.

Priced before closing: that repository has no workflow with a file and
>= 50 runs at a zero success count, and reading it adds 7 seconds. The gap
hid nothing today, and it is still a defect -- the next dead workflow there
would have been invisible to the command whose subject is dead workflows.
One fleet_repos(), both callers on it, for the reason required_contexts
gives one screen above: a second caller must not become a second literal
of the same query.

Three tests: the list holds the repository the two disagreed about, every
entry is owner/repo, and no slug appears twice.

Census re-blessed, and the move is an address: deleting seven lines of
literal took red.rs's runs_url from 159 to 152. Buckets identical at 25
sites, 8 / 0 / 3 / 2.

Refs #2994
@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 18:42:10 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).

@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 18:50:54 UTC

Summary

Status Count
Total Open PRs 12
PRs with Failing Checks 12
PRs with All Checks Green 0
READY 0
FAILING 12
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).

`tri gates dead` prints workflows with a zero lifetime success count. Two
populations were sharing one row.

Of this repository's three, TWO never executed at all:
auto-merge-ready-prs.yml (1541 runs) and format-check.yml (31), with zero
jobs in 8 of 8 sampled runs each. coq-proofs.yml (62 runs) is the control:
one job every time, so it really ran and really failed.

A run that allocates zero jobs is a startup failure -- invalid YAML, a
trigger the file does not declare, a registration for a file that is gone.
auto-merge-ready-prs.yml declares workflow_dispatch only and every sampled
run has event=push: 1541 registrations, none of which ran a line.

The two want opposite repairs -- a broken workflow FILE against a broken
CHECK -- and "never succeeded" printed them identically. Now labelled, at
109 s -> 114 s, because the probe runs only for the rows the report prints.
never_executed returns None when nothing was sampled: a probe that saw no
run must not vote either way.

The new fetch site reads as "asks whether the page filled" and is not:
classify_fetch matches total_count anywhere in the body, and here that
string is a jq path to a job count. What it really is has no bucket -- a
declared sample, where the page size is the caller's own parameter. Named
in the source rather than special-cased.

Census re-blessed: sites 25 -> 26, "asks whether the page filled" 8 -> 9,
both from that one site.

Refs #2994
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-09-04 18:55:14 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)=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).

@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.

Three surfaces claim to gate a commit -- .githooks/pre-commit,
scripts/pre-commit and `tri hooks pre-commit` -- and `grep -c conflict`
answers 0 on all three. In this worktree core.hooksPath is unset and
.git/hooks/pre-commit does not exist, so nothing local ran at all.

The only barrier was CI, and that is how it went wrong the same pass: an
automated conflict resolver fixed one path and then ran `git add -A`,
staging a SECOND conflicted file verbatim. The required Conflict markers
context caught it on the pull request, naming tools/census/fetches.txt
lines 19 and 35 -- one full CI round after a one-second local check would
have refused the commit.

A guard that lives in a procedure stops only the person who remembers it.
This repository's skill file had recorded the very command and said it
"has stopped two commits since"; it was wired nowhere, and mine was not
one of the two.

Not a sixth reader: tools/check_conflict_markers.py already reads every
tracked file from the working tree and honours its own debt baseline, so
a re-implementation would be a second vocabulary that drifts. This calls
it. A missing script or interpreter exits 2 -- this repository's word for
could-not-run -- rather than passing, because a guard that cannot run is
not a guard that agreed.

Three controls, all run: a planted marker gives exit 1 naming the file and
its lines, a moved-aside checker gives exit 2 saying nothing was checked,
and a clean tree gives 0.

Refs #2994
…a control

The first version of the conflict-marker guard used a relative path. A git
hook is invoked at the repository root, but a person typing the command
often is not, and from cli/tri it refused with exit 2 -- safe and useless.
The checker itself needs no help: run from cli/ it still reads all 7870
tracked files, so the only thing that needed fixing was finding it. Now
resolved from `git rev-parse --show-toplevel` and run there.

Four controls, all run: clean tree from the root 0, clean tree from
cli/tri 0, planted marker 1 naming the file and its lines, moved-aside
checker 2.

A fifth was written and withdrawn rather than claimed. An arm returning
exit 2 outside a work tree looked like a good refusal; run from /tmp it
returned 1, because now_gate runs `git rev-parse` first and errors there.
The arm is unreachable through this command, so it is now ordinary defence
and the comment says it is not a control. A guard clause you have not
executed is a comment, and a comment claiming to be a control is worse
than no comment.

Refs #2994
@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 19:02:22 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)=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).

@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 19:03:24 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)=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 c2b0342 into master Sep 4, 2026
38 checks passed
@gHashTag
gHashTag deleted the loop/one-fleet-two-lists branch September 4, 2026 19:22
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