review(41): recorded acceptance run met, ACCEPTANCE.md and run evidence (filbert)
Jason ran run.sh (sha256 c609c682) from a human shell on fe5c68fa,
2026-10-11T18:32:45Z to 18:32:54Z. The PM launched coder r2810c6373900,
recorded by pm in the launch log, and mosaic agents shows it.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# Row 41 (#1523): the recorded acceptance run
|
||||
|
||||
Author: Filbert, the row's owner, at Sage's request. Sage is the gate owner. Jason ran
|
||||
`run.sh` from an ordinary terminal on 2026-10-11 (Q57). Agent seats can't run it,
|
||||
because `talk` and `agents` refuse inside an agent (REQ-DEC-3).
|
||||
|
||||
## Verdict
|
||||
|
||||
**Met.** The queue gate's last part is "recorded PM launch of a coder". The brief's
|
||||
Gate puts it as "a recorded run where the PM launches a coder session and `mosaic
|
||||
agents` shows it". `run/run.log` meets it.
|
||||
|
||||
The brief's "What ships" list has items this run does not exercise. They are listed as
|
||||
misses below. The gate doesn't ask this run for them, and they are not claimed from it.
|
||||
The gate's other two parts are outside this log: Darkwing approved round 4 in comment
|
||||
27034 on manifest `08a78972…`, and the suites ran on Sage's gate.
|
||||
|
||||
## What ran
|
||||
|
||||
- `run/run.sh`, sha256 `c609c682…`, the same bytes Sage gave Jason.
|
||||
- It ran in `~/filbert-scratch/r41a`, a detached worktree that is clean at `fe5c68fa`.
|
||||
All 42 entries of `candidate-manifest.sha256` (`08a78972…`, the approved round 4
|
||||
candidate) check OK there.
|
||||
- It used a scratch config and data root with business `acme`, placeholder token
|
||||
files and no tracker. The live `mosaic-bus@mosaic-stack` unit was not used.
|
||||
- `run/host.out` and `run/acme.jsonl` are byte-equal to the copies that `run.log`
|
||||
prints at lines 33–37 and 53–56.
|
||||
|
||||
## The gate, line by line
|
||||
|
||||
| Criterion | run.log | Met |
|
||||
|---|---|---|
|
||||
| A recorded run | 1–2: start `18:32:45Z`, commit `fe5c68fa`. 57: end `18:32:54Z`. Every step's exit code is logged. | yes |
|
||||
| From a human shell | 10, 16, 21: `agents` and `talk` exit 0. Inside an agent they exit 3. | yes |
|
||||
| The PM launches | 14–15: the PM replies that its launch tool returned `r2810c6373900`. That reply is the PM's own claim. The proof is lines 25 and 54: the host records `r2810c6373900` as launched `by pm` (`launchedBy":"pm"`). | yes |
|
||||
| A coder session | 25, 54: instance `coder`, claude-code, claude-sonnet-5-5. 36, 56: it ran until the stop. | yes |
|
||||
| `mosaic agents` shows it | 19: `coder r2810c6373900 claude-code since 2026-10-11T18:32:50.389Z` | yes |
|
||||
|
||||
`launchedBy` is not taken from anything the PM says. The host asks the broker for the
|
||||
identity behind the session's capability (`packages/cli/src/launcher.mjs` 253) and
|
||||
records that role (278). The `jason` on line 53 is the business's human: the `--pm`
|
||||
start has no caller capability (launcher.mjs 29, 294).
|
||||
|
||||
## "What ships", against this log
|
||||
|
||||
| Item | run.log | Met by this run |
|
||||
|---|---|---|
|
||||
| The stack launches the PM without a window | 4–6: `bus start acme --pm` gives `launched pm: run r4ce932f8e049`. 53: launched by `jason`. | yes |
|
||||
| `mosaic talk` reaches it | 12–16: sent `6af7087a`, RESULT `7ec84e44` in reply, exit 0 | yes |
|
||||
| Every launch logged | 53–56: both launches and both ends. Lines 24–25 agree. | yes, for the two launches in this run |
|
||||
| The PM launches through the broker, within `launch` | 25, 54: the launch went through the host and was allowed. No refusal, and no `launch.max` limit, was exercised. | only the allowed path |
|
||||
| Role instances only; at most 4 Opus and 4 Sonnet | none | no |
|
||||
| One word from Jason stops new launches (`mosaic launches off`) | none | no |
|
||||
| `mosaic stop` ends a running session | none. Line 28 is `mosaic bus stop`, which stops the host and every session (35–36), not `mosaic stop <run>`. | no |
|
||||
| Founder credentials only: the session stops (REQ-CRED-2) | none | no |
|
||||
| Bundles for Pi, then Claude Code | 6, 25: Claude Code only. No Pi session ran. | Claude Code only |
|
||||
| Sage's T3 thread hands over; the product no longer depends on T3 | none. This run shows the mechanism (lines 4–16) but not a handover. | no |
|
||||
|
||||
The run also left nothing behind: 40 no process names the scratch root, 43 `no
|
||||
sessions`, 47–49 host none, socket absent, writer.lock absent. 55–56: both sessions
|
||||
ended `stopped` with exit 0.
|
||||
|
||||
## Files
|
||||
|
||||
The copies are byte-equal to the originals in `~/filbert-scratch/r41run/`. Before
|
||||
committing, I checked each copy in-process against all 18 placeholder token files under
|
||||
the scratch `secrets/` directories (this run and the dry run). No token value appears
|
||||
in any copy, and none was printed. There are no UUIDs, tracker hosts, email addresses or
|
||||
IP addresses. The only "token" match is run.sh's comment "placeholder token files". The
|
||||
home path in socket paths is the same one already in many committed records.
|
||||
|
||||
```
|
||||
c609c682002c7801727e915a1e6376998652f4146e5485189643e0b1e19924a3 run/run.sh
|
||||
a1197cddb549f3ee75f856ff8aff579d28f90ffac836af6ccba4daa31f918480 run/run.log
|
||||
1d14be21cec0d5fafd01d304662ed29cfa38a9ab2d7600b9230a2e539b76628b run/host.out
|
||||
d3496d18cd2ff19f7e4d7f09afb3a49288201825012c59379ebd3494349feaa7 run/acme.jsonl
|
||||
```
|
||||
@@ -0,0 +1,4 @@
|
||||
{"at":"2026-10-11T18:32:45.919Z","event":"launch","instance":"pm","run":"r4ce932f8e049","launchedBy":"jason","harness":"claude-code","model":"claude-sonnet-5-5","family":"sonnet","pid":1413455,"runnerPid":1413459,"manifest":"/home/jwoltje/filbert-scratch/r41run/run/data/launches/acme/r4ce932f8e049/bundle/manifest.json"}
|
||||
{"at":"2026-10-11T18:32:50.375Z","event":"launch","instance":"coder","run":"r2810c6373900","launchedBy":"pm","harness":"claude-code","model":"claude-sonnet-5-5","family":"sonnet","pid":1416072,"runnerPid":1416073,"manifest":"/home/jwoltje/filbert-scratch/r41run/run/data/launches/acme/r2810c6373900/bundle/manifest.json"}
|
||||
{"at":"2026-10-11T18:32:53.525Z","event":"end","instance":"pm","run":"r4ce932f8e049","reason":"stopped","exitCode":0,"signal":null}
|
||||
{"at":"2026-10-11T18:32:53.535Z","event":"end","instance":"coder","run":"r2810c6373900","reason":"stopped","exitCode":0,"signal":null}
|
||||
@@ -0,0 +1,5 @@
|
||||
bus host up: business acme, socket /home/jwoltje/filbert-scratch/r41run/run/data/bus/broker.sock, notifier off
|
||||
launched pm: run r4ce932f8e049, claude-code claude-sonnet-5-5
|
||||
mosaic-bus: run r4ce932f8e049 (pm) ended: stopped
|
||||
mosaic-bus: run r2810c6373900 (coder) ended: stopped
|
||||
bus host stopped (0)
|
||||
@@ -0,0 +1,57 @@
|
||||
2026-10-11T18:32:45Z
|
||||
fe5c68fa031923ff79cbd8aeebb4c8925eb5af23
|
||||
|
||||
$ scripts/mosaic bus start acme --pm &
|
||||
bus host up: business acme, socket /home/jwoltje/filbert-scratch/r41run/run/data/bus/broker.sock, notifier off
|
||||
launched pm: run r4ce932f8e049, claude-code claude-sonnet-5-5
|
||||
|
||||
$ scripts/mosaic agents
|
||||
pm r4ce932f8e049 claude-code since 2026-10-11T18:32:45.955Z
|
||||
(exit 0)
|
||||
|
||||
$ scripts/mosaic talk pm Launch the coder instance with your launch tool. Then reply with the run id the tool returned. --wait 300
|
||||
sent 6af7087a to pm
|
||||
pm (RESULT, re 6af7087a) 7ec84e44:
|
||||
The launch tool returned run id **r2810c6373900**. It started the coder instance on the claude-code harness with model claude-sonnet-5-5.
|
||||
(exit 0)
|
||||
|
||||
$ scripts/mosaic agents
|
||||
coder r2810c6373900 claude-code since 2026-10-11T18:32:50.389Z
|
||||
pm r4ce932f8e049 claude-code since 2026-10-11T18:32:45.955Z
|
||||
(exit 0)
|
||||
|
||||
$ scripts/mosaic launches list
|
||||
r4ce932f8e049 acme/pm claude-code claude-sonnet-5-5 by jason since 2026-10-11T18:32:45.918Z running
|
||||
r2810c6373900 acme/coder claude-code claude-sonnet-5-5 by pm since 2026-10-11T18:32:50.375Z running
|
||||
(exit 0)
|
||||
|
||||
$ scripts/mosaic bus stop
|
||||
stopped bus host for acme (pid 1413128)
|
||||
(exit 0)
|
||||
|
||||
$ cat host.out
|
||||
bus host up: business acme, socket /home/jwoltje/filbert-scratch/r41run/run/data/bus/broker.sock, notifier off
|
||||
launched pm: run r4ce932f8e049, claude-code claude-sonnet-5-5
|
||||
mosaic-bus: run r4ce932f8e049 (pm) ended: stopped
|
||||
mosaic-bus: run r2810c6373900 (coder) ended: stopped
|
||||
bus host stopped (0)
|
||||
|
||||
$ ps (processes naming the scratch root)
|
||||
none
|
||||
|
||||
$ scripts/mosaic launches list
|
||||
no sessions
|
||||
(exit 0)
|
||||
|
||||
$ scripts/mosaic bus status
|
||||
host: none
|
||||
socket: absent
|
||||
writer.lock: absent
|
||||
(exit 0)
|
||||
|
||||
$ cat launches/acme.jsonl
|
||||
{"at":"2026-10-11T18:32:45.919Z","event":"launch","instance":"pm","run":"r4ce932f8e049","launchedBy":"jason","harness":"claude-code","model":"claude-sonnet-5-5","family":"sonnet","pid":1413455,"runnerPid":1413459,"manifest":"/home/jwoltje/filbert-scratch/r41run/run/data/launches/acme/r4ce932f8e049/bundle/manifest.json"}
|
||||
{"at":"2026-10-11T18:32:50.375Z","event":"launch","instance":"coder","run":"r2810c6373900","launchedBy":"pm","harness":"claude-code","model":"claude-sonnet-5-5","family":"sonnet","pid":1416072,"runnerPid":1416073,"manifest":"/home/jwoltje/filbert-scratch/r41run/run/data/launches/acme/r2810c6373900/bundle/manifest.json"}
|
||||
{"at":"2026-10-11T18:32:53.525Z","event":"end","instance":"pm","run":"r4ce932f8e049","reason":"stopped","exitCode":0,"signal":null}
|
||||
{"at":"2026-10-11T18:32:53.535Z","event":"end","instance":"coder","run":"r2810c6373900","reason":"stopped","exitCode":0,"signal":null}
|
||||
2026-10-11T18:32:54Z
|
||||
@@ -0,0 +1,49 @@
|
||||
#!/bin/sh
|
||||
# Row 41 (#1523) recorded acceptance run. Run it from a human shell, not
|
||||
# inside Claude Code, T3, Codex or pi: `talk` and `agents` refuse inside an
|
||||
# agent (REQ-DEC-3), and the broker checks the whole process ancestry.
|
||||
# sh ~/filbert-scratch/r41run/run.sh
|
||||
# Scratch data root, business acme with placeholder token files, no tracker.
|
||||
# Not the live mosaic-bus@mosaic-stack unit. Everything goes to run.log.
|
||||
set -u
|
||||
W=/home/jwoltje/filbert-scratch/r41a # detached worktree of fe5c68fa
|
||||
S=${R41_ROOT:-/home/jwoltje/filbert-scratch/r41run/run} # scratch config and data root
|
||||
L=${R41_LOG:-/home/jwoltje/filbert-scratch/r41run/run.log}
|
||||
export MOSAIC_CONFIG="$S/config/config.json" MOSAIC_ROLES_DIR="$S/roles"
|
||||
cd "$W" || exit 1
|
||||
: > "$L"
|
||||
step() {
|
||||
printf '\n$ %s\n' "$*" | tee -a "$L"
|
||||
"$@" > "$S/step.out" 2>&1
|
||||
rc=$?
|
||||
cat "$S/step.out" | tee -a "$L"
|
||||
echo "(exit $rc)" | tee -a "$L"
|
||||
}
|
||||
date -u +%FT%TZ | tee -a "$L"
|
||||
git rev-parse HEAD | tee -a "$L"
|
||||
printf '\n$ scripts/mosaic bus start acme --pm &\n' | tee -a "$L"
|
||||
scripts/mosaic bus start acme --pm > "$S/host.out" 2>&1 &
|
||||
HOST=$!
|
||||
i=0
|
||||
until grep -q '^launched pm' "$S/host.out" 2>/dev/null; do
|
||||
i=$((i + 1))
|
||||
if [ "$i" -gt 60 ] || ! kill -0 "$HOST" 2>/dev/null; then cat "$S/host.out" | tee -a "$L"; kill "$HOST" 2>/dev/null; exit 1; fi
|
||||
sleep 0.5
|
||||
done
|
||||
cat "$S/host.out" | tee -a "$L"
|
||||
step scripts/mosaic agents
|
||||
echo "(talk waits up to 300 s for the PM's reply)"
|
||||
step scripts/mosaic talk pm "Launch the coder instance with your launch tool. Then reply with the run id the tool returned." --wait 300
|
||||
step scripts/mosaic agents
|
||||
step scripts/mosaic launches list
|
||||
step scripts/mosaic bus stop
|
||||
wait "$HOST"
|
||||
printf '\n$ cat host.out\n' | tee -a "$L"; cat "$S/host.out" | tee -a "$L"
|
||||
printf '\n$ ps (processes naming the scratch root)\n' | tee -a "$L"
|
||||
left=$(ps -eo pid,args | grep -F "$S/" | grep -v grep)
|
||||
echo "${left:-none}" | tee -a "$L"
|
||||
step scripts/mosaic launches list
|
||||
step scripts/mosaic bus status
|
||||
printf '\n$ cat launches/acme.jsonl\n' | tee -a "$L"; cat "$S/data/launches/acme.jsonl" | tee -a "$L"
|
||||
date -u +%FT%TZ | tee -a "$L"
|
||||
echo "done: $L"
|
||||
Reference in New Issue
Block a user