Skip to content

feat(tri): tri fleet — is the hardware this plan assumes actually attached? - #2250

Merged
gHashTag merged 13 commits into
masterfrom
feat/tri-cli-wave3
Aug 19, 2026
Merged

feat(tri): tri fleet — is the hardware this plan assumes actually attached?#2250
gHashTag merged 13 commits into
masterfrom
feat/tri-cli-wave3

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Carries wave 2 (pr-ready per-check commit-walk baseline + tri now) which #2223 landed without, plus tri fleet scan. Closes #2249

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 19:30:06 UTC

Summary

Status Count
Total Open PRs 29
PRs with Failing Checks 11
PRs with All Checks Green 18
READY 10
FAILING 11
PENDING 0

Seal Status

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

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 19:31:27 UTC

Summary

Status Count
Total Open PRs 28
PRs with Failing Checks 10
PRs with All Checks Green 18
READY 10
FAILING 10
PENDING 0

Seal Status

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

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

1 similar comment
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 20:04:05 UTC

Summary

Status Count
Total Open PRs 28
PRs with Failing Checks 11
PRs with All Checks Green 17
READY 9
FAILING 11
PENDING 0

Seal Status

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

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 20:12:48 UTC

Summary

Status Count
Total Open PRs 27
PRs with Failing Checks 9
PRs with All Checks Green 18
READY 9
FAILING 9
PENDING 0

Seal Status

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

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 20:30:03 UTC

Summary

Status Count
Total Open PRs 26
PRs with Failing Checks 10
PRs with All Checks Green 16
READY 9
FAILING 10
PENDING 0

Seal Status

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

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 21:24:09 UTC

Summary

Status Count
Total Open PRs 24
PRs with Failing Checks 10
PRs with All Checks Green 14
READY 7
FAILING 10
PENDING 0

Seal Status

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

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 21:25:23 UTC

Summary

Status Count
Total Open PRs 24
PRs with Failing Checks 10
PRs with All Checks Green 14
READY 7
FAILING 10
PENDING 0

Seal Status

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

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 21:42:56 UTC

Summary

Status Count
Total Open PRs 25
PRs with Failing Checks 11
PRs with All Checks Green 14
READY 7
FAILING 11
PENDING 0

Seal Status

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

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 22:23:51 UTC

Summary

Status Count
Total Open PRs 23
PRs with Failing Checks 9
PRs with All Checks Green 14
READY 7
FAILING 9
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=375b2f88cc2f != 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 and others added 13 commits August 20, 2026 06:06
…e NOW frame

The default branch's HEAD is not the default branch: a check that did not
run on HEAD shows neither green nor red there, and reading HEAD alone made
a broken master build look green (#2227). pr ready now scores each check by
the most recent of the last 15 default-branch commits it actually ran on.
tri now prepends the rigid docs/NOW.md entry frame; its own NOW entry was
written by the command. Smoke: live verdict against a merged PR is sane.

Closes #2235

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tached?

Three notes in this project claim hardware capability in the present
tense while no board was on the bus: each was true when measured, none
was true that day. A measurement stays true because it happened; a
capability quietly becomes false when the environment regresses, and
nothing announces it. The notes even said 'a configured fleet is a
perishable measurement' -- the instinct was recorded and never turned
into a check.

tri fleet scan reads the USB tree (ioreg) and the serial device nodes,
excludes Bluetooth and the debug console, and reports what is actually
present. On an empty bus it refuses to be useful in the wrong direction:
it prints the sentence to send the owner instead of a problem to code
around. --expect N exits non-zero when the fleet is short. On a
non-macOS host it says it cannot tell, because 'no boards' and 'cannot
tell' are different answers and only one is safe to act on.

Smoke-tested against the real bus: 0 bridges, 0 serial nodes, non-zero
exit under --expect 3.

Closes #2249

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Writing this wave's own NOW entry failed: the bullet describing --expect
was read by clap as an argument. allow_hyphen_values, and the entry that
found it is the entry this commit adds.
The bus was one environment; a deployed site is another, and both go
stale the same way: the note says 'works' because it worked, and nothing
announces the regression. asof HEADs each URL the claim depends on, adds
the bus under --needs-hardware, and reports whether the capability may be
stated in the present tense today -- non-zero exit when it may not.

A curl timeout is reported as 'cannot verify', distinct from a site that
answers with an error: only one of those is the owner's problem.

Verified live: t27.ai and the hiking site reachable, bus empty, exit 1
under --needs-hardware.
…ository

Remembering which environments back which claim is the step that gets
skipped, so the claims live in .tri/environments.json next to the code
they describe. The check answers per claim, not per project: 'is the
project fine' has no answer, because claims rest on different
environments and those fail independently.

Live against this repository's own declaration: three claims SAYABLE
(t27.ai, the hiking site, GitHub), two STALE with the reason printed
next to each (bus empty), exit 1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every 'waiting: N of M' line carried no identity, so two gates logging
to one file produced a transcript where one PR's 'Merged.' read as the
other's verdict — I misread exactly that today. Diagnosing through a
channel shared by two sources is the broken-ruler error this project's
doctrine is named after; the identity now prints before the wait loop
and on every line, which makes the misread impossible rather than
unlikely.

Closes #2249
'merged' and 'closed' both read as success in a pull-request list. A
stack taught this the expensive way: the base squash-merged, its branch
was deleted, the pull request stacked on it auto-closed, and four commits
reached nothing while the list looked fine.

landed fetches the default branch's copy of every file the pull request
touched and reports each probe PRESENT or ABSENT. Whitespace is flattened
on both sides because prose gets re-wrapped; case stays significant
because case is text. Validated against the real case: the orphaned
stack-mate reports ABSENT, the merged rescue reports PRESENT.

Closes #2249
Sweeping eight merged pull requests with landed found one ABSENT that was
the probe's fault again: the string came from a pull request still open,
which had rewritten that sentence. All eight had in fact landed. Probe
with the wording the pull request introduced, not with today's text.
Every pull request must touch docs/NOW.md and it is prepend-only, so two
branches conflict there by construction — seven times in this campaign,
each resolved identically by hand: keep both entries. The union driver
makes that resolution the rule instead of a habit somebody will skip.
…t conflicts

.gitattributes declares `NOW.md merge=theirs`, but the file every branch
touches is docs/NOW.md, and `theirs` is not a built-in driver — it needs
a per-clone .git/config entry a fresh checkout does not have. Both halves
failed silently: docs/NOW.md conflicted on seven branches in this campaign
and was resolved identically by hand each time, keeping both entries.
`docs/NOW.md merge=union` is built in, needs no setup, and is that
resolution.

Closes #2249
gh pr merge exiting zero is not the same as the content being on the
branch — it also succeeds when it merely enables auto-merge, and a
squash-merged stack orphans whatever sat on top of it. The gate now
re-asks the API for merged=true, takes the merge commit sha, and confirms
that commit is contained in the default branch before printing anything.

The message names what was verified ('Merged — <sha> is on the default
branch'), and on a mismatch it says plainly not to report the pull
request as merged. This is the same defect the campaign hit twice: a
verdict that reads as success while the work reached nothing.

Closes #2249
.gitattributes declared merge=append-log for the experience JSONL and
merge=theirs for the NOW.md symlink. Neither is a built-in driver: both
need a merge.<name>.driver entry in .git/config, and nothing in this
checkout installs one — so in any clone but the author's, both lines did
nothing and the files conflicted normally. Union is built in and is
exactly the intended behaviour for append-only files.

Same defect as the docs/NOW.md rule fixed alongside it: a rule that needs
undocumented local setup works only on the machine that wrote it.
The pre-commit gate tested '^NOW.md$' while every pull request updates
docs/NOW.md, so the not-staged warning fired on commits that were doing
exactly the right thing. It now accepts either path.

Root NOW.md is a regular 390-line file last changed 2026-08-09 -- not the
symlink .gitattributes describes -- so the two have been diverging in
silence. Whether the root copy becomes a symlink, is deleted, or keeps
its own content is the owner's call; filed rather than decided here.
@gHashTag
gHashTag force-pushed the feat/tri-cli-wave3 branch from 76c258d to 693564b Compare August 19, 2026 23:07
@gHashTag
gHashTag enabled auto-merge (squash) August 19, 2026 23:07
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

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

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 23:07:57 UTC

Summary

Status Count
Total Open PRs 23
PRs with Failing Checks 9
PRs with All Checks Green 14
READY 7
FAILING 9
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=375b2f88cc2f != 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 b6828b3 into master Aug 19, 2026
18 of 23 checks passed
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.

tri CLI wave 3: tri fleet — is the hardware this plan assumes actually attached?

1 participant