filbert: Codex move handoff note (decision 122)

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-12 16:52:46 -05:00
co-authored by Claude Opus 5.5
parent da7c4cb709
commit 2624d1897c
@@ -0,0 +1,81 @@
# Filbert handoff: Claude thread to Codex gpt-6.1-sol
Written 2026-10-12 by Filbert on the Claude thread
(9cb9731e-a10f-4c8f-a212-c4fa1f5f4731), per lead decision 122 (Jason's Q129).
The move takes effect after row 95 lands and after my row 92 round 2 verdict
is posted, whichever comes later. Run `scripts/mosaic queue next filbert`
before trusting anything below; the queue wins over this note.
## Open reviews (filbert is a reviewer)
| Row | Issue | State | Mine |
| --- | --- | --- | --- |
| 92 | #1586 | in review, Darkwing building round 2 | Round 1: **changes**, comment 27951, rev 772. Dewey approved round 1. **The Claude thread reviews round 2 before the move.** |
| 13 | #1508 | in review | approved, comment 26589. Waits on others. |
| 63 | #1556 | in review | approved, comment 27846. Dewey asked for changes (27847). Review round 2 when Darkwing requests it. |
| 77 | #1571 | in review, round 2 | approved, comment 27898. Waits on the gate. |
| 88 | #1582 | briefed (Researcher builds) | Review when requested. I am the only reviewer. Items 7 and 8 must kill my row 61 survivors: `in` used for `Object.hasOwn`, and the dropped `txt()`. |
The other rows that list me as a reviewer are briefed or parked; the queue
names them when they're ready.
Row 92 round 1 asked for six things (details in 27951):
1. Confined-shell table rows proving `/proc`, `/dev` and IPC are private. Today `--ro-bind /proc`, `--dev-bind /dev` and a dropped `--unshare-ipc` all survive. Host `/dev/shm` holds 0600 PostgreSQL segments.
2. A row running pi in the sandbox. The dropped `node_modules` bind survives.
3. A launcher test where a runner is SIGKILLed from the host and the end reason is `killed`. `resolve({ code, signal })` survives.
4. A pi launch with no credential succeeds.
5. The cli README refusal row adds `ANTHROPIC_AUTH_TOKEN` with `ANTHROPIC_BASE_URL`.
6. A README sentence: pi logs in only through `ENV_ALLOW`, since `~/.pi/agent` is gone.
My mutant script is `~/filbert-scratch/r92/mutants.py <worktree> <out>`, with
13 edits. Round 2 should kill everything except `no /etc`, `0755` and
`recover start time`, which are notes.
## Row 95 (#1589), mine as builder
Darkwing approved round 1 (comment 27953, rev 773), naming manifest
`246c0557…`. There is no round 2 (Sage, 2026-10-12). Sage is running the gate
rerun and lands it. Mos is notified before landing, and it goes live after
the Console restart Mos approves.
**Follow-up after landing** (Sage agreed), for Darkwing's notes:
- N1: `browser-edge.test.mjs` line 29 awaits `boardRequested` with no bound. A toggle regression stalls the file for 120 s instead of failing it. Bound it.
- N2: test 2's 600 ms settle never reaches the 10 s poll, so "no further request on the poll" claims more than it tests. That is why mutants 13 and 27 survive.
- N3: the README test paragraph should also list the conversations, seen and queue redirects.
The packet is `agents/filbert/work/queue-95/`. My scratch worktree is
`~/filbert-scratch/r95w`.
## Row 93 (#1587), mine to build on Codex
- Brief: `docs/plans/2026-10-12_pm-test-fixes.md`, section "A review loop through the bus" (blob ae867dfa).
- It needs row 91 done (Darkwing's project checkout per workspace, which itself waits on row 92) and row 95 done. Not started; nothing is drafted.
- Reviewers are Darkwing and Dewey, both required. Gate owner is Sage.
- Scope: a bare working repository per business and project, under the data root, that only the host writes. Plus four verbs and tools:
- `push_working`: fast-forward only, to `work/<task ref>`;
- `request_review`: the commit must be in the working repository;
- `fetch_review`: into the reviewer's clone as a remote-tracking ref;
- `review_verdict`: approve or changes, citing the request event.
The role paragraphs and the session text name the steps. The packet argues whether `task_close` checks the verdict citation.
- Read the brief's full file list and its out-of-scope section before starting. The host runs git for a session, so this crosses row 92's sandbox; build on whatever row 92 lands.
## Working rules I follow (not all in AGENTS.md)
- Gitea writes: `MOSAIC_GITEA_CREDENTIAL_FILE=$HOME/.mosaic/fleet/agents/filbert/secrets/gitea-mosaicstack-filbert.token`, with `scripts/gitea-api.sh` run from the repo. Check that `GET user` returns `filbert` first. Never print the token.
- Verdicts:
1. Post the comment, then read it back and compare the body to the file.
2. Record it: `scripts/mosaic queue review record <row> --verdict approve|changes --comment ID --candidate <manifest sha> --op filbert-<row>-review-<n> --by filbert`.
3. Commit the rev with `scripts/queue-commit.sh -m ...`, naming other seats' swept revs.
4. Only after it says committed, write the SESSIONS line.
- I commit only my own records, packets and queue revs. Sage commits candidates and pushes. I push nothing.
- Gates:
- Use a detached `git worktree` at the base, apply the patch with `git apply --index`, symlink `node_modules`, then run `sha256sum -c` on the manifest and check BASE..HEAD for drift.
- Run suites sequentially with output teed, `TMPDIR=~/filbert-scratch/tmp` and `DOCKER_HOST=unix:///nonexistent.sock`.
- Mutant runs:
- Each run gets `start_new_session=True`, with `killpg` on timeout.
- Afterwards, kill my leftover node or chromium processes (cwd under `~/filbert-scratch`) by PID. Other seats wait for a quiet machine.
- To remove a worktree: `rm -f` its `node_modules` symlink, then `git worktree remove --force`.
- Never start, stop or restart the Console or the bus unit. No writes under `~/.mosaic`. Agent seats never run the human verbs against a real bus.