diff --git a/BUILD-LOG.md b/BUILD-LOG.md index fa1c427e7..22641b6c5 100644 --- a/BUILD-LOG.md +++ b/BUILD-LOG.md @@ -4448,3 +4448,9 @@ After (57948a81): Darkwing's round 2, 13 files +800 -106. The launcher spawns ea Before (cca5f23e): the Console unit ran `cli.mjs serve` straight from the canonical checkout, so any landing that touched code the Console loads went live the next time Node read the file or the unit restarted (decision 109). Row 75's review left five gaps in `scripts/webui-service.sh` (Filbert, 27430: install while active, install from a worktree, `uninstall --no-reload`, a silent failed state read, unchecked leading characters), and nothing held decision 101's uid rule. After (0d10cf07): Rocko's round 2, rebased onto row 95 as round 3. 8 files changed, +921 -94. A new `copy COMMIT` verb writes a `git archive` of the paths the Console loads into `mosaic-console//`. It runs only from the canonical checkout and only for commits reachable from `refactor`. Copy directories are 0555 and files are `a-w`. `install` and `render` take `--copy ID` and point `WorkingDirectory` and `ExecStart` at the copy. `serve --checkout` keeps the queue read on the checkout. `status` prints the copy id the unit runs. Row 75's N1 to N5 are closed, and `--auth-header X-authentik-uid` requires a 64-hex `--allow-user`. Round 1's three findings were fixed in round 2. First, `install --copy` refuses unless every bus unit it would call runs from that copy, because the bus accepts human proofs only from its own path (#225). The check reads `systemctl --user show`, so drop-ins count. Second, `COPY_PATHS` adds `packages/tasks`. Third, the copies are read-only. TOOLS.md and the README give the update step, the removal command and the rollback floor. Darkwing (27979) and Filbert (27985) approved manifest d9880f4c, base 2e26fbe1, with no drift on the 8 code paths. Rocko's mutants: 34/34 killed. Sage's gate on 459c4fc6 plus the patch, which includes row 92, ran 22:32:51Z to 22:35:12Z: webui 101, control-board 124, and all nine `scripts/test-*.sh` with 0 failed. `queue review verify-commit 77` matched 10 paths. Row 77 went to done at rev 805 (18c64360), and #1571 was closed with comment 27996. Mos had the decision-109 notice and gave the go. The live unit changes only at Mos's reinstall. Until a later row moves the bus onto a copy, `install --copy` refuses on this machine. Follow-up row 98 (#1592, brief df389685) adds tests for Filbert's round 2 N1 and N2 and Darkwing's round 3 N1 and N2. Correction to comment 27996: it named Filbert's N2 and N3, but the follow-up carries N1 and N2, and N3 needs no test. + +### 2026-10-12 — Sage, row 86 landed: I1 spikes, the container facts the design depends on (#1580) + +Before (ad0bdc20's parent): the I1 containerized-install design rested on assumptions about the rootless Docker daemon that nobody had run: endpoint pinning, uid mapping, socket restarts, a hostile client, an internal network behind an allowlisting proxy, the provider CLIs through that proxy, a read-only root, stdin capability and the hardening flags. + +After (ad0bdc20): Researcher's round 1 packet, `agents/researcher/work/i1-spikes/`: ten spike scripts S0 to S9, their tools, recorded outputs and REPORT.md, 31 files under manifest 0381c233. Darkwing approved it in comment 27986. Sage's gate in a detached worktree of ad0bdc20 ran 22:43:34Z to 22:48:08Z. `sha256sum -c MANIFEST.sha256` inside the spike directory gave rc=0. That check replaces `queue review verify-commit`, which cannot read the manifest's directory-relative paths (Darkwing N6). S1 to S8 and S0 passed, and each reported nothing left with its label. S9 got 31 of 32: the 400 MiB container under a 128 MiB limit exited 137, but `docker inspect` reported OOMKilled=false. S9 alone ran three more times from 22:49:42Z to 22:50:05Z and passed 32 of 32 each time with OOMKilled=true. The kill happened in every run, and Docker missed reporting it once in four. Afterwards the daemon held only alpine:3, the networks were bridge/host/none, and there were no containers, no volumes, a 0 B build cache and no i1spike directories in the scratch tmp. The S9-only reruns pulled the pinned node image, which S0 normally removes, so Sage removed it by id. Row 86 went to done at rev 821 (15ed3513). #1580 is closed with comment 28014. Follow-up for Researcher: S9's memory check should not depend on the OOMKilled flag alone, for example by also reading the cgroup's `memory.events` oom_kill counter. The I1 design should not treat that flag as a reliable signal. The row changes no code, so it needed no Mos notice. diff --git a/docs/SESSIONS.md b/docs/SESSIONS.md index ffb15dee4..e9b01fa09 100644 --- a/docs/SESSIONS.md +++ b/docs/SESSIONS.md @@ -804,3 +804,4 @@ are never rewritten or removed; corrections are new entries. 2026-10-12T22:37:47Z | sage | row 77 (#1571) landing; row 98 (#1592) queued | landed 0d10cf07 after gate 11/11 on 459c4fc6 (row 92 included), rev 805 (18c64360), #1571 closed 27996, Mos notice and go (sage row 77); follow-up brief df389685, rev 806 (2f4b4ea2); comment 27996 misnamed Filbert's notes as N2-N3, corrected in #1592 and BUILD-LOG 2026-10-12T22:43:32Z | darkwing | row 63 round 2 (#1556) | in review, request 28005, revs 809-811 (77f6cc58); packet 557b28fb rebased onto cca5f23e after row 89 touched tools.mjs and tools.test.mjs, candidate 2a22fd3f; four child-path tests, mutants 25/25 killed, gate 15/15 green 2026-10-12T22:48:48Z | dewey | row 90 (#1584) round 1 build | packet 950e8403, manifest 26d1fbdf, base 23338c7b; gate all green, 44 mutants killed after one test fix; review request c28009 and queue request c28013; revs 819-820 in 829c00fb; runner.mjs outside the list per Sage +2026-10-12T22:51:54Z | sage | row 86 (#1580) landing | landed ad0bdc20 after gate rerun of all ten spikes, manifest rc=0 in-dir (N6), S9 OOMKilled report missed once then 3/3 clean, daemon back to baseline; rev 821 (15ed3513), #1580 closed 28014; S9 flag follow-up to Researcher