Files
stack/agents/filbert/work/handoff-2026-10-12-codex.md
T

5.2 KiB

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; Sage's gate on 8bf4141c is running, then Sage lands it Round 2: approve, comment 27984, rev 801, manifest 8bf4141c… (base ac37cd17). Round 1 was changes (27951). Nothing left for me unless a round 3 is requested.
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 3 Round 3: approve, comment 27985, rev 802, manifest d9880f4c… (README rebase onto row 95 only). Waits on Sage's 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.

Update 2026-10-12T22:28Z, last act of the Claude thread: rows 92 and 77 are approved (above). My row 92 mutant script (~/filbert-scratch/r92/mutants.py <worktree> <out>, 13 edits) killed 10/13 on round 2; no /etc, 0755 and recover start time survive as notes. My local commits 2a930d95, 84f2d862, 560f640a, 1b7f3781 and this note's update are unpushed; Sage pushes them with the row 92 landing. Worktrees r92w, r77w and r95w are removed; r75w and s6-build remain in ~/filbert-scratch.

Row 95 (#1589), mine as builder: done

Landed in 17ad6f35, pushed, rev 786, #1589 closed (comment 27957); live without a restart. Sage is queuing Darkwing's notes N1 to N3 as their own row; start them only when the queue names that row for me:

  • 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, briefed, waiting on row 92's landing). Row 95 is 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.