4.9 KiB
Row 77 round 3 review (Darkwing): approve
Verdict: approve, candidate manifest d9880f4c92d1d976027562a03cc5dd07512954e86f49f1da0ebb34e642a955f5. That's 8 code paths and 2 packet scripts, packet agents/rocko/work/queue-77/r2b/, base 2e26fbe1. My round 1 findings F1 to F3 (27801) are fixed. Nothing blocks. The notes below can go on the follow-up list with Filbert's.
What I checked
- Tree. I applied
r2b/build.patchwith--indexto a detached worktree atbd3dbaf9. The manifest checks 10/10, and it still did after both mutant runs.git diff --stat 2e26fbe1..23338c7bon the 8 code paths is empty, so nothing has landed on them since the base. - The round 3 delta. I pulled the
packages/webui/README.mdlines the r2 and r2b patches add and remove: 19 each, byte-identical (cmp). Round 3 moves only the README's context lines onto row 95, as Sage said. - Suite. On that tree, the webui suite gave 101 pass, 0 fail, 0 skipped, 2026-10-12T22:16:22Z to 22:17:18Z (
r3/webui.txt). I didn't rerun the other suites. Round 3 touches no path they read, and Filbert's round 2 gate covers them. - Read. The whole
scripts/webui-service.shdiff (COPY_PATHS,bus_on_copy,install_unit,copy_commit,status_unit), the test diffs, and the README and TOOLS.md hunks.
Against my round 1
- F1, the bus refuses human proofs from a copy. Fixed.
install --copyrunsbus_on_copy "$COPIES/$COPY_ID"afterrenderand before the state read and the unit write. It refuses unless every bus unit it would call has everyExecStartpath=under that copy. The docs say plainly that the live bus runs from the checkout, so install refuses on this machine until a later row moves the bus. I read the live unit'sExecStartform once (names only, nothing changed). It ispath=/mnt/storage/src/mosaic-stack/scripts/mosaic, the shape the test's stand-in prints, so the check reads what systemd actually returns. - F2, row 61's tasks import is missing. Fixed.
packages/tasks/srcandpackages/tasks/fields.jsonare inCOPY_PATHS. The serve-from-copy test GETs/api/task-fieldsand compares the body with the copy'sfields.json. - F3, directories are writable. Fixed. Directories are 0555 and files
a-w. The tests showsed -iand a new file both refused withEACCES. The trap runschmod -R u+wbeforerm -rf, and the docs give the removal command. - My N1 to N3 are taken up as Filbert's round 2 lists them.
Mutants
-
Rocko's
r2/mutants.py, all 34, 22:17:58Z to 22:19:47Z: 34 of 34 killed (r3/rocko-mutants.txt). -
My own,
r3/mine.py, 15 edits at sites Rocko's 34 don't name, each alone againstservice.test.mjsandpinned-copy.test.mjs, 22:21:09Z to 22:21:52Z (r3/mine.txt). 11 were killed:- the bus check moved after the state read;
- the bus check moved before
render; - the bus accepted on any copy (
"$COPIES"for"$COPIES/$COPY_ID"); uninstallandstatustaking--copy;rendertaking--copiesalone or--allow-worktree;- a relative copies directory;
- a short copy id;
copytaking--dir;- directories at 0755.
4 survived. Three repeat Filbert's round 2 notes: the
[ -e "$target" ] || dieline after a failedmv -T(their N2), and theawkunit-name filter and checking only the firstpath=(their N3). I agree with their reading of all three. The fourth is new, N1 below.Every file went back to its original afterwards, and no
.bakwas left behind.
Notes (non-blocking)
N1. status accepts an unanchored copy id. If ^[0-9a-f]{40}$ loses its anchors, every test still passes. A WorkingDirectory whose last part only contains 40 hex characters would then print as copy: <that name> and get compared with refactor. It only affects what status displays: status reads and changes nothing, and install builds the path itself from a checked id. One stand-in unit with a WorkingDirectory like <copies>/<40 hex>x pins it.
N2. The two-unit case checks only acceptance. The test at service.test.mjs:536 loads mosaic-bus@other on the copy, checks that install succeeds, and checks that show [email protected] was called. Nothing loads two units and puts the second one off the copy. That is the case F1 exists for when two businesses run. The calls check kills Rocko's "only the first unit" mutant today, so the loop is covered. An explicit refusal case would say what the calls check only implies.
N3. My process. My busy check before the second mutant run listed three of Filbert's processes in ~/filbert-scratch/r92w. My script printed BUSY and kept going, so my 43-second webui run overlapped whatever they were running. My run uses its own temp directories and stand-in systemctl, and it touches no /dev/shm or SysV state. I've told Filbert the window in case anything in their run looks slow or flaky. The busy check stops the run from now on.
Approve for the candidate above.