Merge pull request 'docs: record OSA real Pi binary proof' (#9) from docs/osa-real-pi-binary-proof into main

This commit is contained in:
clawdie 2026-05-31 17:15:23 +02:00
commit ad5e03f1dc

View file

@ -0,0 +1,156 @@
# OSA real Pi binary spawn proof
**Date:** 2026-05-31
**Host:** `osa.smilepowered.org`
**Colibri commit:** `44865f3` — main after PR #8
**Pi binary:** `/home/clawdie/.npm-global/bin/pi`, version `0.76.0`
## Verdict
Real Pi binary spawn path was proven on OSA through `colibri-daemon`.
The daemon spawned a local executable wrapper, the wrapper executed the real
`pi` binary in JSON mode, Colibri streamed Pi JSONL stdout into glasspane, and
the pane reached `done` with a captured Pi session id.
This proves the runtime path:
```text
colibri-daemon spawn-local
→ wrapper executable
→ real pi --mode json --no-tools --no-context-files --no-session -p ...
→ Pi JSONL stdout
→ colibri glasspane ingestion
→ snapshot state=done + pi_session_id captured
```
## Environment
```text
host: osa.smilepowered.org
rustc: rustc 1.94.0 (4a4ef493e 2026-03-02) (built from a source tarball)
cargo: cargo 1.94.0 (85eff7c80 2026-01-15) (built from a source tarball)
freebsd-version -k: 15.0-RELEASE-p9
freebsd-version -u: 15.0-RELEASE-p9
uname: FreeBSD osa.smilepowered.org 15.0-RELEASE-p8 FreeBSD 15.0-RELEASE-p8 releng/15.0-n281036-53054229dcb3 GENERIC amd64
```
Caveat: OSA has p9 installed, but the running kernel is still p8 pending
operator reboot.
## Direct Pi smoke
Before the daemon proof, direct Pi JSON mode was verified:
```sh
pi --version
# 0.76.0
pi --mode json --no-tools --no-context-files --no-session -p 'Reply with exactly: OK'
```
Result: exit status 0, JSONL emitted, including:
- `session`
- `agent_start`
- `turn_start`
- `message_start` / `message_update` / `message_end`
- `turn_end`
- `agent_end`
## Daemon proof setup
A temporary daemon instance was started with temp-only paths:
```sh
COLIBRI_DAEMON_DATA_DIR=/tmp/colibri-real-pi-daemon-...
COLIBRI_DAEMON_SOCKET=/tmp/colibri-real-pi-daemon-.../colibri.sock
COLIBRI_DB_PATH=/tmp/colibri-real-pi-daemon-.../colibri.sqlite
COLIBRI_HOST=osa-real-pi-proof
target/debug/colibri-daemon
```
The local spawn target was a temporary wrapper script:
```sh
#!/bin/sh
set -eu
WORKDIR="${TMPDIR:-/tmp}/colibri-real-pi-work-$$"
mkdir -p "$WORKDIR"
cd "$WORKDIR"
exec pi --mode json --no-tools --no-context-files --no-session -p 'Reply with exactly: OK'
```
Then Colibri CLI spawned it through the daemon:
```sh
target/debug/colibri --socket "$SOCKET" spawn-local "$WRAPPER" --session-id real-pi-osa-proof
```
Spawn response:
```json
{
"agent_id": "f8d07954-b66d-4008-9da2-783818935b22",
"status": "running"
}
```
## Observed state transitions
Polling `colibri snapshot` showed:
```text
poll 1: idle None None
poll 2: idle None None
poll 3: working 019e7e95-cc0b-751a-8c0b-e6fd3ffab08f None
poll 4: working 019e7e95-cc0b-751a-8c0b-e6fd3ffab08f None
poll 5: done 019e7e95-cc0b-751a-8c0b-e6fd3ffab08f None
```
Final snapshot excerpt:
```json
{
"schema": "clawdie.glasspane.snapshot.v1",
"host": "osa-real-pi-proof",
"panes": [
{
"id": "f8d07954-b66d-4008-9da2-783818935b22",
"agent": "/tmp/colibri-real-pi-daemon-.../run-real-pi.sh",
"state": "done",
"pi_session_id": "019e7e95-cc0b-751a-8c0b-e6fd3ffab08f",
"cwd": "/tmp/colibri-real-pi-work-62462"
}
]
}
```
## What this proves
- OSA has a working `pi` binary.
- `pi --mode json` emits JSONL that Colibri glasspane can ingest.
- `colibri-daemon` can spawn an executable that runs real Pi.
- JSONL stdout streaming from real Pi reaches glasspane.
- Glasspane captures Pi session id separately from Colibri pane id.
- The pane reaches `done` after a real Pi turn completes.
## Remaining limitations
- This used a wrapper because `spawn-local` currently treats `model` as a single
executable path and does not pass argv.
- This did not prove a first-class Pi provider command shape in the daemon.
- This did not prove a long-running interactive Pi session, only one noninteractive
JSON-mode turn.
- This did not prove cache warming or scheduler injection behavior with real Pi.
Suggested follow-up if needed:
- add first-class argv support for `spawn-local`, or
- add a dedicated Pi provider path that invokes:
```text
pi --mode json --no-tools --no-context-files --no-session -p <prompt>
```
with deterministic prompt/config handling.