Skip to content

Five rigs reported passes for work they were not doing - #406

Merged
nyblnet merged 2 commits into
mainfrom
docs/rig-passes-on-revert
Aug 30, 2026
Merged

Five rigs reported passes for work they were not doing#406
nyblnet merged 2 commits into
mainfrom
docs/rig-passes-on-revert

Conversation

@nyblnet

@nyblnet nyblnet commented Aug 29, 2026

Copy link
Copy Markdown
Owner

Records a defect class found across four zones in one day: rigs that print a pass while testing nothing.

One entry appended to docs/DECISIONS.md. Documentation only, 58 lines, no code touched.

Why this is worth an entry

It is the same family as the "instruments that lie" list in CLAUDE.md — a transform read back from an inline element, rAF in a hidden tab, a DOM sampler polling mid-animation — with one difference that makes it worse. Those instruments are consulted deliberately, by someone who already suspects a problem. A rig is consulted by CI, on every push, by people who have stopped suspecting.

The findings

Verified against the tree and #399's diff, not taken on report:

rig reported true
test-tray-bridge.ts 52/52 pass the #277 arbitrary-write fix was deleted; shape checks pinned the <a download> call site — the neighbour of the fix
test-tray-index.mjs "absent, skipped", green, for weeks the tray→home rename moved the corpus, the path did not; eleven cases untested
test-doc-index.mjs never ran unregistered in CI, and the rename broke its import
test-spaces.mjs never ran unregistered from the day it was written
test-slide-store.ts never ran never registered

Two failure modes, kept apart in the entry. A rig can assert the wrong thing, or assert nothing at all while still printing green. The second is quieter — there is no wrong assertion left to be wrong. #399's own comment says it best: a rig nobody runs cannot report its own import failure.

The correction verification caught

The draft I was sent said exportCopy gained three checks. It gained four#399's comment says "these four checks close" the defect. Three is how many fire on the revert that was actually run (53/56).

Both numbers are in the entry as a pair, because "four added, three firing" is evidence the assertions are independent rather than one assertion spelled four ways. That is a sharper thing to teach than either number alone, and it only surfaced because the count was checked.

Placement is deliberately split

This is the durable record — what was found, and the standard adopted — so a future session does not re-derive it.

The counterpart belongs in CLAUDE.md, which is what someone reads before writing a rig; a lesson only prevents the next instance if it is in the file people read first. That text is prepared and queued for the maintainer, and this entry does not discharge it. My harness bars me from editing CLAUDE.md at another session's request — a peer cannot authorise a change to the file governing agent behaviour, whoever owns it.

On #399 being unmerged

The entry is built on properties of the tree at 220f7e7 that stay true whatever shape that PR lands in, and it says so rather than describing an unmerged diff as settled.

Found by bento-team-home-ios, with home-android hitting it from the other side.

Records a defect class found across four zones in one day: rigs that print a
pass while testing nothing. Same family as the "instruments that lie" list in
CLAUDE.md, with one difference that makes it worse — those instruments are
consulted deliberately by someone who already suspects a problem; a rig is
consulted by CI, on every push, by people who have stopped suspecting.

Every row verified against the tree and #399's diff rather than taken on
report, which caught one error in the draft I was sent: exportCopy gained FOUR
checks, not three. Three is how many FIRE on the revert that was run (53/56).
Both numbers are in the entry as a pair, because "four added, three firing" is
evidence the assertions are independent rather than one assertion spelled four
ways — a sharper thing to teach than either alone.

Two failure modes, and the entry keeps them apart: asserting the wrong thing
(pinning the neighbour of a fix) and asserting nothing at all while still
printing green (input moved, or never wired to CI). The second is quieter
because no assertion is left to be wrong.

Placement, deliberately split. This is the durable record — what was found and
the standard adopted — so a future session does not re-derive it. The
counterpart belongs in CLAUDE.md, which is what someone reads BEFORE writing a
rig, and a lesson only prevents the next instance if it is in the file people
read first. That text is prepared and queued for the maintainer; my harness
bars me from editing CLAUDE.md at another session's request, and this entry
does NOT discharge it.

#399 is unmerged as written, so the entry is built on properties of the tree at
220f7e7 that stay true whatever shape that PR lands in, and says so.

Found by bento-team-home-ios, home-android from the other side. The line "a rig
nobody runs cannot report its own import failure" is quoted from #399's own CI
comment and attributed there, not to me — I only relayed it.
@github-actions

github-actions Bot commented Aug 29, 2026

Copy link
Copy Markdown

Build size

main (220f7e7) → docs/rig-passes-on-revert (b80ea0b)

app base PR change
bento/slides 669.3 KiB 669.3 KiB 0.0 KiB (0.00%)
bento/spaces 267.6 KiB 267.6 KiB 0.0 KiB (0.00%)
bento/dash 161.3 KiB 161.3 KiB 0.0 KiB (0.00%)

Updated: 2026-08-29T07:47:20Z

Two corrections to the entry, both from home-ios checking a credit rather than
accepting it.

THE ATTRIBUTION WAS WRONG. The entry said the finding was home-ios', with
home-android from the other side. True of the two test-tray-* rigs, false of
the other three: test-doc-index.mjs, test-spaces.mjs and test-slide-store.ts
came through #399, whose branch is `ops-rig-repairs` and whose single commit is
9b7ac47 — bento-team-ops'. Both lines I quoted are from that commit too. I had
credited one of them to home-ios on the reasoning that they had been in ci.yml
this week; they had not, and said so. Verified: #399 is one commit on an ops
branch, and home-ios' only ci.yml edits landed via #315, already on main and
naming neither rig.

Recorded IN the entry, because it will recur: git log cannot settle authorship
here. Every session commits as the maintainer, so `author` resolves to one
person for all of us — zone and branch are the only distinguishing evidence.
Hence the rule the entry now states: cite the PR, which is checkable, over the
session, which is not.

THE ENFORCEMENT HALF WAS MISSING. I quoted #399's diagnosis ("a rig nobody runs
cannot report its own import failure") without its sibling from the same commit,
scripts/test-spaces.mjs:80 — "A rig nobody runs is not a rig. Add a step for
each, or remove it from RIGS." That is not a second phrasing, it is the other
half: `test-spaces.mjs --manifest` runs in CI and asserts the RIGS list both
ways, so the class now has a mechanical guard and not only a practice. An entry
recommending a two-minute habit while omitting the check that enforces it
understated its own subject — a habit decays, a rig does not. Any app growing a
rig suite should copy the manifest check.

#406 is unmerged, so this is a fix to the entry rather than a superseding one.
@nyblnet
nyblnet merged commit afb0f87 into main Aug 30, 2026
2 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.

1 participant