Unclaimed files left in the canonical checkout. Inventory: canonical-cleanup-inventory.md (commit-as-evidence groups). detect-secrets scan clean on 2026-11-02: hits are sha256 pins, git object ids, test sentinels already in tracked tests and unit-file lines.
4.5 KiB
4.5 KiB
Filbert review: row 181 round 1 (#1679), approve
Request 29370. Candidate manifest 46a4433ca4108682af2027dc27ad72359b45709006f809fbf45c4b45dfacc283 on base a757f8fe6. The brief is blob aafa471ae, and the rulings are in sage-1163.
Verdict: approve. No findings block. N1 and N2 are notes. F1 from BUILD.md stays a follow-up.
What I ran
- I built
~/filbert-scratch/r181-r1/wtfroma757f8fe6, then rangit apply --index build.patch.sha256sum -con the manifest passed 3/3, and the manifest file hashes to46a4433c...dfacc283.- The patch-id is
1fef78100554: 3 files, +129/-16.
- Base drift:
git log a757f8fe6..refactor(fcfb82da2) on the three paths is empty. - Hash pins and path readers: no test under packages//tests or scripts/test-.sh reads
scripts/stack-release.shordocs/TOOLS.md, or pins a 64-hex hash of them, exceptstack-release.test.mjsitself. - I took the slot after sage-1185, with the /proc busy check CLEAR before and after, and TMPDIR
~/fs177.stack-release.test.mjs: 116/116 pass, 0 fail, rc 0, from 04:29:04Z to 04:32:48Z. The counts are an awk sum over the spec log.
- I ran two mutants of my own on
scripts/stack-release.sh, each against T45 only. Each was restored bygit checkout, and the tree went back to the 3 staged paths.- M1: a table's rows go into the text but not the total (
if(n){text+=...}). Killed: rc 1, 5 of 6 failed. Every subtest failed except (c). - M2: a missing listed table throws instead of counting 0 (the
sqlite_mastercheck removed). Killed: rc 1, 5 of 6 failed, the same subtests.
- M1: a table's rows go into the text but not the total (
- Darkwing's run (116/116 and 14 mutants killed) is their receipt, not mine.
Item 1: the lists, checked at a757f8fe6
- I grepped the INSERTs in packages/bus/src. They match BUILD.md's table:
- broker.mjs: :561 for events, plus :999, :1129, :1159, :1551, :1575, :1687, :1696, :1734, :1769, :1806, :1894, :2257, :2301, :2331, :2362, :2377, :2470, :2483, :2518, :2535, :2565, :2596 and :2645.
- usage.mjs:92.
- store.mjs, for meta.
- No other code under packages/ or scripts/ inserts into these tables.
- Every counted broker writer stamps
atwiththis.#now(), the monotonic ISO clock. usage.mjs stamps it withnew Date().toISOString()inside its own transaction (:88-98). - decision_events is rightly in COUNTED: the decision.resolve event at :1778 is written only
if (s.human). - decisions (list 3): the insert at :1696 and the
action.allowedevent at :1716 both run insiderequest'sthis.#store.transaction(() => ...)(:1295). The claim holds. - The UPDATE list is empty, as BUILD.md says. schema.sql has 16 CREATE TABLE statements, 16 BEFORE UPDATE triggers and 16 BEFORE DELETE triggers. The only UPDATEs are the migration step at store.mjs:213-214.
- I agree with deviations 1-3 (deliveries, projects
at, 13 tables).
Items 2 and 3
- Every caller of the count gets COUNTED:
countat :912;heldcountat :907;- the in-run recount at :845.
- The two
versionreads (:736, :743, :831) are unchanged. - The refusal at :917 prints the full text, and
--eventsmust equal the total. The usage text (:39) and TOOLS.md (:375, step 7) say so. - T45:
- (a) covers both modes for each of the 11 tables from a literal list, and the brief's 1/1/1 case. A 3f store counts 0 for the missing table.
- (b) refuses with no
--eventsand with--events 2, before any stop and with the fingerprint unchanged.--events 1then restores to B/3g. Both tables are covered. - (c) covers the unreadable table.
- (d) covers the in-run recount through the
stop-writes-rowfault (:139).
- On comparing only the total in-run (Darkwing's point): I agree it's enough. Every listed table has an abort trigger on UPDATE and DELETE, so between the pre-stop count and the recount, counts can only rise.
Item 4
- T46 (:1268) builds packages/bus/schema.sql in memory. It checks that every table is in exactly one of the four lists, that no listed table is missing from the schema, and that the
atsplit is right. - It reads lists 1-2 from the script, so a COUNTED change shows up there.
Notes
- N1 (code text, not doc-only, doesn't block): the heldcount recheck's refusal at stack-release.sh:909 still says "the bus stopped while the events after STAMP were counted". It now counts rows in 12 tables, so "the rows after" would match the new :914 text. It's still true as written, and no test pins it.
- N2: F1 (task_comment_cursors, :1129) stays the follow-up BUILD.md names. I checked that the table has no
atcolumn, so the guard can't count it without a schema change or an event.