duckworth: row 195 DESIGN r7 (duckworth-0087) approve on Darkwing 5425ea2f3
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# Row 195 DESIGN r7 (duckworth-0087)
|
||||
|
||||
Reviewer Duckworth (Opus 5.5), 2026-10-21. Darkwing asked for this review. Candidate `darkwing/row195-r7`
|
||||
5425ea2f3 on c515273db, `agents/darkwing/work/queue-195/DESIGN.md` blob 17dfbad95b (388 lines). The r6
|
||||
design was approved as b7239bb66 (duckworth-0055, REVIEW-r5.md). 7398b7dd7 carries r6 unchanged, so
|
||||
`git diff 7398b7dd7 5425ea2f3` is the whole r7 change. Gate: this design, then the manifest.
|
||||
|
||||
## Verdict: approve
|
||||
|
||||
1. Business id (§7). `packages/cli/systemd/mosaic-hostcheck.service` at 5425ea2f3 has
|
||||
`[email protected]`. That holds for .53's id `mosaic-stack`, so DEFERRED 240 N1
|
||||
(da3051ccc, an ancestor of the candidate) doesn't bind. Per DEFERRED, the fix is due "before the first
|
||||
install whose business id isn't `mosaic-stack`", and §7 stops the window before W8 if a go names
|
||||
another id. P11 checks `Before=` on the host. N2 stays deferred, and the design doesn't edit the run
|
||||
sheet.
|
||||
2. Nothing touches .53. §6 opens with sage-1809. Every root step is ops-01's and waits on a Jason
|
||||
decision. §9 changes only `case1-accept.sh`, its test, TOOLS.md and BUILD.md. The test fakes every
|
||||
host binary and has no path to .53 or to dragon-lin's live state.
|
||||
3. §1 dev.args is consistent with `scripts/case2-unit.sh`.
|
||||
- The usage is at :54. The unit names are at :51-52 (F1). The factory-only `--tester-port` is at :163,
|
||||
with the 1024..65535 floor at `webui/src/cli.mjs:33`. `--port` and `--business` are at :167. The
|
||||
factory refusals are at :168-169. `ENV_FILE` is at :243 and `MOSAIC_CLAUDE_BIN` at :247.
|
||||
- `stack-upgrade.sh` read_args (:124-148) requires a root-owned args file with no group or other
|
||||
write and exactly one 40-hex `--copy`. It refuses unknown pre-`--` args. The `root:root` 0644
|
||||
file §1 describes passes.
|
||||
4. §4 is consistent with `stack-upgrade.sh`.
|
||||
- The `--no-rehearsal` cites are :323-324 (`no-backup`, `rehearsal-required`).
|
||||
- The exits at :29-30 match: 5 is `args-failed` with the new stack live, and 2 leaves both units
|
||||
stopped (:239-240, :247).
|
||||
- The re-install now stops the Console, then the bus, before the render. That settles row 230 N1
|
||||
(webby-0046), which was on my carry list. `stop_wait` (:211-214) does the same in the driver.
|
||||
5. §5 case1-accept.
|
||||
- F1-F11 and P1-P11 are stated with commands and marks. `curl /healthz` (F2) is
|
||||
`webui/src/serve.mjs:641`. `mosaic talk <role> <text> --wait <seconds> --tester` (F3) is at
|
||||
`cli/src/cli.mjs:56`. `mosaic launches list [--json]` (F7) is at cli.mjs:63, with `launch.by`
|
||||
at `launcher.mjs:236`.
|
||||
- P9's eight items are hostcheck 1-6, the jarvis bwrap refusal and the empty `mosaic` group. They
|
||||
follow from run sheet section 4's `dpkg-statoverride --add root mosaic 0750 /usr/bin/bwrap`. The
|
||||
`^ok [1-6] ` match fits `case1-hostcheck.sh`'s pass() output (:69).
|
||||
- The `--root` seam is refused as root, as at `case1-hostcheck.sh:52`. Every mutant names a killing
|
||||
case, and the cases cover all 12.
|
||||
6. §6 lists W0-W14, each with an owner. The run sheet section cites in W2-W10 match the run sheet's
|
||||
ten headings at 5425ea2f3. The five row 226 items are listed. Item 4 (who writes `dev.args`) is open, as Darkwing
|
||||
says. The run sheet at section 7 says "I2's install writes it", and `mosaic` can't write
|
||||
`/etc/mosaic-stack`. So row 226 has to answer it before W10, and the design says the run sheet takes
|
||||
that answer. That's the right place for it.
|
||||
7. §9's manifest is four paths with no change to the landed scripts, the run sheet or live state. The
|
||||
row 230 r2 N1 exclusion holds: on .53 both the install and the upgrade start from stopped units, so
|
||||
the "still on copy" line isn't reached.
|
||||
|
||||
The carry items in my row195-build-carry list are handled. The A2f `stale-start` line is in §4 point 3.
|
||||
The claude path is `/opt` under sage-1522 (§1 and run sheet section 3). Row 230 N1 is item 4 above.
|
||||
|
||||
## Notes (no block)
|
||||
|
||||
- N1. §1:82 cites `broker.mjs:245` for "human id not `tester`". That cite was carried from r6, and at
|
||||
5425ea2f3 :245 is `THREAD_PAGE`. The check is `broker.mjs:321` (`b.human === 'tester'` →
|
||||
`invalid-business`). Doc-only.
|
||||
- Not a finding: :21 and :326 say row 226 is "unclaimed". Darkwing already flagged this as known. 226 is
|
||||
Gosalyn's, briefed, not started (sage-1814), and it's fixed in the next revision or BUILD.md.
|
||||
|
||||
## My runs
|
||||
|
||||
None. Design review only. All cites were read with `git show 5425ea2f3:<path>`.
|
||||
@@ -1440,3 +1440,4 @@ are never rewritten or removed; corrections are new entries.
|
||||
2026-10-21T04:53Z | Duckworth (Opus 5.5) | row 234 r1 content review (duckworth-0084) on Gizmoduck 861182fa6, manifest 2114a09d | approve on content, N10 hosts verb check by plain-object key, A9 needs no behaviour mutant, record waits on r2 merge check |
|
||||
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 |
|
||||
|
||||
Reference in New Issue
Block a user