From a78f64b1cf21e46be5a856bd6180391d747d321d Mon Sep 17 00:00:00 2001 From: Jason Woltje Date: Fri, 9 Oct 2026 07:49:52 -0500 Subject: [PATCH] docs: BUILD-LOG, S4 round 1 and round 2 entries, the M28 correction and the row 39 landing Co-Authored-By: Claude Opus 5.5 --- BUILD-LOG.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/BUILD-LOG.md b/BUILD-LOG.md index 97adf9c7..331cb452 100644 --- a/BUILD-LOG.md +++ b/BUILD-LOG.md @@ -3620,3 +3620,49 @@ Integration gate in a worktree on c4baf779 with build-r2.patch applied (manifest - Conversation fails 149/3: cohort kill cases K1, K3 and K10. The unpatched base fails the same three, and the patch doesn't touch the package. They passed at the row 44 gate on 2026-10-05, so this is new on the host and gets a follow-up. - Every scripts/test-*.sh passes. The first test-release and test-task run failed only because Docker couldn't create a compose network ("all predefined address pools have been fully subnetted"). The rerun used the existing gate2 compose network and passed test-release 14/14 and test-task 98/98. No network was created or pruned, and the host stayed at 33 networks. - Load average was 1.61 at the start and 2.32 at the end, with a peak of 4.81 during the shell suites. + +### 2026-10-08 — Rocko, S4 row 39 candidate (#1521, lead decision 70) + +Before: `scripts/mosaic` dispatched only to seat, queue and business. There was no human front door, no broker host, and no route for a blocking decision to reach Jason. After, as a candidate on d68aa20f: + +- `packages/cli` provides `inbox`, `decide`, `tasks`, `agents` and `trail` over the human-cli transport, and `bus start|stop|status` as the trusted host. The unit is `mosaic-bus@`, installed by `scripts/bus-service.sh`. +- The notifier child DMs each open blocking decision once and sends a digest at 08:00 America/Chicago, with late-start catch-up. Its journal is `notify//sent.jsonl`, mode 0600, and holds no Discord ids. +- `packages/discord` gains `dmRecipient`, `createDm` and `notify.mjs`. +- No `packages/bus` change. + +Evidence: + +- cli 37/37, bus 58/58, business 60/60 and discord 178/178. +- Every `scripts/test-*.sh` passes except test-task, which fails 26/2. The two failures are the live-recall assertions with Docker disabled, and they fail identically on the unpatched base. + +Untested by design: the real `human-cli.mjs` and the live Discord path, both of which belong to Sage's live run, and the trackers boot case, which waits for S3. Packet: `agents/rocko/work/slice1-s4/BUILD.md`. There is no commit, push or Gitea post. Filbert's and Darkwing's reviews and Sage's gate remain. + +### 2026-10-09 — Rocko, S4 row 39 round 2 candidate (#1521, lead decision 71) + +Before: the round 1 candidate on d68aa20f. A torn final journal line refused the notifier, the journal directory mode was not checked, the digest nonce came from the day alone, a child that exited before its listener attached went unnoticed, a symlinked `sent.jsonl` was followed, and the unit waited for network-online.target. After, as a candidate on b9b6cf00: + +- A torn tail is copied to `torn-.bin` (0600, fsynced), then the journal is truncated to its last newline and fsynced, with a log line at each step. A malformed complete line refuses with exit 3. +- The journal refuses a directory looser than 0700 and a symlinked file. +- The digest nonce hashes business and day. +- `watchChildren` checks each child's exit state after the listeners attach. +- The unit no longer names network-online.target. +- New tests cover these fixes and the round 1 test gaps M22–M24, M26 and M29. F2 and J4 stay follow-ups. + +Evidence: cli 49/49, bus 58/58, business 60/60 and discord 178/178. Every `scripts/test-*.sh` passes except test-task, 26/2, with the same two live-recall failures on the unpatched b9b6cf00. Mutants: all nine round 2 mutants were killed. Of Filbert's set, the round 1 gaps are now killed; M18 and M33 survive, as rated in round 1; M19 hangs on the readline prompt, as in round 1; and M5, M6 and M27 no longer apply. A refusal test that left a host running under M13 was fixed. Packet: `agents/rocko/work/slice1-s4/BUILD.md`, section "Round 2". There is no commit, push or Gitea post. + +Correction: M28 survived; it was not killed. The packet's BUILD.md mutant table is wrong on this point and stays as approved. In the gate run, the only failure under M28 was the unrelated discord test `packages/discord/tests/journal.test.mjs:120` ('unknown' !== 'dead'). A rerun at 2026-10-09T01:17Z on b9b6cf00 with the candidate applied passed 227/227. No host test covers the "already runs" refusal. The BUILD.md fix and an M28 test go in the post-landing follow-up. + +### 2026-10-09 — Sage, S4 row 39 lands (#1521) + +Before: S4 was an approved round 2 candidate. Darkwing approved on #1521 (comment 26855) and Filbert approved (comment 26856). After: landed as 2f5303c1 on refactor. + +Integration gate in a worktree on 2557e29d with build.patch applied (manifest e858504e, 29/29): + +- Node package suites, all with no failures: bus 67, business 60, cli 49, control-board 124, discord 178, ledger 78, mosaic 69, queue 148, seat 19, tasks 51, webui 14. +- Conversation fails 149/3, the same K1, K3 and K10 cases as the row 38 gate. S4 doesn't touch the package. +- Every scripts/test-*.sh passes. test-release 14/14 and test-task 98/98 ran with COMPOSE_PROJECT_NAME=gate2 on Darkwing's existing network. No network was created or pruned. +- Load average was 1.98 at the start and 2.41 at the end. + +The trackers boot case was the one combined-tree check neither packet could run. A scratch test in the gate worktree, not committed, built a business with tracker.baseUrl and a project naming a tracker project, pointed it at S3's FakeVikunja over HTTP, and booted the real host. bootConfig emitted trackers, process.mjs loaded the adapter, and startup made 18 requests and went ready. As a pm launch, task.close on a missing task answered task-not-found after GET /tasks/999. That test moves into the S4 follow-up as a committed case. + +The index was checked blob by blob against the candidate manifest before the commit. The patch's 18-digit ids are padded fixtures, and no token pattern matched.