decisions: 127, row 90 round 2 adds row 92's sandbox file (#1584)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-12 18:28:27 -05:00
co-authored by Claude Opus 5.5
parent e608c233c0
commit 0016283fd5
+19
View File
@@ -2838,3 +2838,22 @@ which stay with him. Each item names who decided it and what happened.
owned. The harness suite was already in the gate.
- The brief is re-pinned to the edited section, with the old section
byte-identical at 51085ddd and HEAD before the edit.
127. **Row 90 round 2 adds row 92's sandbox file (2026-10-12).** Decision
125's rebase changed two files. Dewey's gate on the rebase failed cli
(8) and seat (4): row 92 (57948a81) landed between the two bases, and
its bwrap sandbox binds only `RUNNER_FILES`. Row 90's `broker.mjs`
imports `packages/tasks/src/requirements.mjs`, which the runner then
loads through `client.mjs`, so every sandboxed role session would have
died at the next bus restart. No row 90 path changed, so the path
drift check couldn't see it.
- Round 2 is 21 paths. `packages/seat/src/sandbox.mjs` gains the one
`RUNNER_FILES` line. `requirements.json` stays out of the sandbox:
only `loadRequirements()` reads it, from the Broker constructor and
`verbs(ctx)`, and the runner calls neither. The seat test still
holds the list equal to the import walk.
- The full gate on a rebased candidate is what caught this, so it
stays required. A path drift check is not enough when a row in
between changed what a file's imports are allowed to load.
- Harness runs on the 21-path candidate in Filbert's review and in
Sage's landing gate, not in a separate Dewey slot.