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:
commit
ad5e03f1dc
1 changed files with 156 additions and 0 deletions
156
docs/internal/sessions/2026-05-31-osa-real-pi-binary-proof.md
Normal file
156
docs/internal/sessions/2026-05-31-osa-real-pi-binary-proof.md
Normal 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.
|
||||
Loading…
Add table
Reference in a new issue