duckworth: row 195 manifest round 1 (duckworth-0088) approve on Darkwing 37171f65b

This commit is contained in:
jason.woltje committed 2026-10-21 03:54:21 -05:00
1 parent 58d930f893
commit 6afcee2a5b
2 files changed
+71

No files matched your search

+70
View File
@@ -0,0 +1,70 @@
# Row 195 manifest round 1 (duckworth-0088)
Reviewer Duckworth (Opus 5.5), 2026-10-21. Darkwing asked in darkwing-0100. In-review rev 2756, request
#1693 comment 29985, gate sage-1872. Candidate `darkwing/row195-b` 37171f65b on 4ced5e63d. Manifest
`~/darkwing-scratch/r195/manifest-37171f65b….sha256`, file sha256
c6ba9ac9eab6c87e86846ee231fbd2b0db15532b62c5ebaf614fcc53ea8db8d1, five paths. I approved the design as
r7 5425ea2f3 in duckworth-0087 (REVIEW-r7.md).
## Verdict: approve
1. The manifest holds.
- All five digests match their blobs at 37171f65b, and the path set equals
`git diff --name-only 4ced5e63d 37171f65b`.
- `scripts/case1-accept.sh` is 100755.
- `queue review verify-commit 195 37171f65b…` prints "matches the manifest candidate (5 paths)".
- 4ced5e63d..origin/refactor changes only `docs/plans/DEFERRED.md`, which isn't in the manifest.
2. DESIGN.md is in the manifest because the branch carries r6 and r7. Its blob changes from the approved
17dfbad95 in four one-line hunks: :21, :82, :326 and :340. :82 is my N1 (`broker.mjs:321`). :21 and
:326 give row 226's state, and :340 records gosalyn-0085. All four are doc-only, as sage-1817
allows. Nothing else in the design moved.
3. The script follows §5.
- The args file passes `stack-upgrade.sh`'s read_args rules: root-owned, no group or other write, one
40-hex `--copy`, unknown pre-`--` args refused. It also refuses a non-factory file and one for
another business (BUILD #5). Both are stricter than the design, which is fine.
- The `--root` seam is refused as root, and a user needs it (:40-45). The test covers the user side
(:453-462). The root side can't be tested without root, the same as the hostcheck.
- F3 matches `sent <id> to <role>` (cli.mjs:395). F7's JSON fields `run`, `business`, `instance`
and `live` match `launches list --json` (cli.mjs:478) and `launch.by`. F7 accepts only the fixed
`ok <instance> run <run>` line from the stack's user.
- P9's eight items are the six `^ok N ` hostcheck lines, the jarvis `Permission denied`, the empty
member list of group `mosaic`, and no other account on its gid. A missing item gives one unnamed
line.
- P checks never touch the exit. Mutant 12 and the "every P unnamed" test pin that.
4. The three items Darkwing asked me to check:
- BUILD #1, P4 `accepted Q182+Q183`. One line carries one mark, and P4 is the only Q182 path, so one
token is right. The count list stays consistent.
- BUILD #8, F5 names claude by argv0 basename or `comm`. This can only fail closed. A pass still needs
both labels exactly, on a `/usr/bin/bwrap` owned by `mosaic` with no bwrap parent. A name that
misses gives FAIL, and the window catches it, as BUILD says.
- BUILD #12, `@` in the `--claude` regex. That's needed for `node_modules/@anthropic-ai/...`. F6's
prefix check and `case2-unit.sh`'s root-only rule still bound the path.
5. Tests and mutants. All the cases from §5 are present in the 22 tests, and BUILD names a killing test
for each of the 12 mutants. BUILD explains why mutant 1 survives the F1-variants test, and "each F
alone" kills it. I read the table. I didn't run the tests.
6. Hash and count pins. No test pins a hash of `docs/TOOLS.md` or of the new files. The 64-hex grep over
`packages/*/tests/*` and `scripts/test-*.sh` finds pins in other files, which is the positive control,
but none on these paths. The only TOOLS.md hit in tests is a string inside
`stack-release.test.mjs:76`, not a read. The cli suite (662/0) and every `scripts/test-*.sh` passed on
Sage's gate (sage-1870).
## Notes (no block)
- N1. F9 runs `$ROOT$NODE` as root (`case1-accept.sh:298`) before F10 checks that `--node` is the
`/opt/mosaic-stack/node-<pin>` path (:303-304). The header (:10) and the TOOLS.md entry say root
"only reads". BUILD #6 reasons that node is root's own. That holds because `case2-unit.sh:128-133`
refused a non-root-owned `--node` when it rendered the units, and the args file is root's. So this is
not an escalation path on a host installed as designed. The cheaper shape is to run F9's parse
through `AS_USER` (the file is 0644), or to apply F10's path check first. Either one makes the header
true. A later row can do it.
- N2. The header's "Root itself only reads systemd, ss, /proc..." leaves out the commands root does run:
`curl` (F2), `sudo -l` (P1, P3), the jarvis probe (P9), `hostcheck.sh --check` and `systemctl`.
Doc-only.
- N3. F6's prefix match (:261) accepts a `--claude` with `..` after `claude-<pin>/`, because the path
regex allows `.`. That claude runs only as `mosaic`, and the args file is root's, so nothing is
reached. F10 uses equality, so it's unaffected.
## My runs
None. I read the code, the tests and BUILD.md at 37171f65b. Darkwing ran the single, the mutants and the
gate in Sage's slot (sage-1829, sage-1865), and Sage confirmed them in sage-1870.
+1
View File
@@ -1441,3 +1441,4 @@ are never rewritten or removed; corrections are new entries.
2026-10-21T05:03Z | Duckworth (Opus 5.5) | row 234 r2 rebase check (duckworth-0085) on Gizmoduck b0320d395, manifest 08306afe | approve: 13 = range-diff, runtime.mjs and cli/README.md clean 3-way merges, thread-launch 4/7 in my session left to Sage's gate (sage-1732), recorded against 29923 |
2026-10-21T05:51Z | Duckworth (Opus 5.5) | row 234 r3 schema count tests (duckworth-0086) on Gizmoduck c783d5e39, manifest 4782c8b5 | approve: counts 18/71, two T46 untimed lines only vs 233 blob, five hosts writes each in a tx with a grant.* event, 38 r2 blobs unchanged; no runs of mine; record waits on Sage's comment id |
2026-10-21T07:18Z | Duckworth (Opus 5.5) | row 195 DESIGN r7 review (duckworth-0087) on Darkwing 5425ea2f3 | approve; N1 stale broker.mjs:245 cite (now :321), doc-only; agents/duckworth/work/row195/REVIEW-r7.md |
2026-10-21T08:54Z | Duckworth (Opus 5.5) | row 195 manifest round 1 (duckworth-0088) on Darkwing 37171f65b | approve; N1 F9 runs node as root before F10 path check, N2 header wording, N3 F6 prefix; agents/duckworth/work/row195/REVIEW-m1.md |