Prove active-turn continuity across daemon restart #5

Closed
opened 2026-08-22 22:21:17 -04:00 by jb · 1 comment
Owner

Part of #1

Blocked by: #2, #3

Question

What is the smallest throwaway prototype that can prove or falsify active Pi turn continuity across a Paseo daemon restart using the topology and reconnect mechanism found by research? The artifact must make stream ownership, buffering/replay, duplicate suppression, cancellation after reattachment, and process/container cleanup observable.

Part of #1 Blocked by: #2, #3 ## Question What is the smallest throwaway prototype that can prove or falsify active Pi turn continuity across a Paseo daemon restart using the topology and reconnect mechanism found by research? The artifact must make stream ownership, buffering/replay, duplicate suppression, cancellation after reattachment, and process/container cleanup observable.
jb added the wayfinder:prototype label 2026-08-22 22:21:17 -04:00
jb self-assigned this 2026-08-22 22:42:39 -04:00
Author
Owner

Resolution

A supervisor-owned reconnectable bridge is feasible and is the required transport shape for active-turn continuity.

The throwaway prototype launched Pi 0.84.2 inside runsc release-20260817.0, retained Pi's pipes below the daemon-client boundary, and killed the first daemon client with SIGKILL during a long-running real Pi RPC operation. The replacement client attached using the last durable cursor and proved:

  • the bridge PID, foreground runsc PID, runsc state PID, container ID, and Pi session ID remained unchanged;
  • a concurrent writer was rejected;
  • the unacknowledged frame was replayed;
  • one duplicate delivery was suppressed by bridge sequence;
  • abort_bash reached and canceled the original Pi process after reconnect; and
  • explicit close removed the runsc container state.

Human verdict: accept this as the transport-feasibility proof. It did not execute an authenticated model turn. Authenticated model/tool-turn continuity and pending extension-UI replay remain mandatory checks in the proof-of-concept verification matrix.

Prototype asset: active-turn continuity under runsc
Branch: prototype/pi-active-turn-runsc
Commit: 5c79a7ec9b84b9cabf79128bf107e01b449c9cf2

Verification: two end-to-end runs passed; targeted lint, formatting, syntax checks, and Markdown/JavaScript diagnostics passed; the installed main checkout typecheck passed. The isolated worktree's full typecheck could not resolve workspace dependencies through a shared node_modules symlink, so its unrelated failures were not used as evidence.

## Resolution A supervisor-owned reconnectable bridge is feasible and is the required transport shape for active-turn continuity. The throwaway prototype launched Pi 0.84.2 inside `runsc release-20260817.0`, retained Pi's pipes below the daemon-client boundary, and killed the first daemon client with `SIGKILL` during a long-running real Pi RPC operation. The replacement client attached using the last durable cursor and proved: - the bridge PID, foreground runsc PID, runsc state PID, container ID, and Pi session ID remained unchanged; - a concurrent writer was rejected; - the unacknowledged frame was replayed; - one duplicate delivery was suppressed by bridge sequence; - `abort_bash` reached and canceled the original Pi process after reconnect; and - explicit close removed the runsc container state. Human verdict: accept this as the transport-feasibility proof. It did not execute an authenticated model turn. Authenticated model/tool-turn continuity and pending extension-UI replay remain mandatory checks in the proof-of-concept verification matrix. Prototype asset: [active-turn continuity under runsc](https://git.jb.codes/jb/paseo/src/branch/prototype/pi-active-turn-runsc/packages/server/src/server/agent/providers/pi/prototypes/active-turn-runsc/RESULT.md) Branch: `prototype/pi-active-turn-runsc` Commit: `5c79a7ec9b84b9cabf79128bf107e01b449c9cf2` Verification: two end-to-end runs passed; targeted lint, formatting, syntax checks, and Markdown/JavaScript diagnostics passed; the installed main checkout typecheck passed. The isolated worktree's full typecheck could not resolve workspace dependencies through a shared `node_modules` symlink, so its unrelated failures were not used as evidence.
jb closed this issue 2026-08-22 23:04:51 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jb/paseo#5