Blocked: zot cannot autospawn — spawner uses stdin(Stdio::null()) #143
Labels
No labels
first-proof blocker
hardening
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: clawdie/colibri#143
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Pi auto-spawns today because
pi --mode jsonis autonomous (emits NDJSON with zero input). Zot's--jsonexits immediately ("requires a prompt") andrpcblocks on stdin — both fail withstdin(Stdio::null())(crates/colibri-daemon/src/spawner.rs:321).What's needed (3 steps)
zot rpctranscript on OSA withDEEPSEEK_API_KEYset. Glasspane's parser (zot_event_type) handles the type system but is only tested against hand-written fixtures (crates/colibri-glasspane/src/lib.rs:996) — validate against reality.spawner.rs: switch stdin toStdio::piped(), add a driver task that sends the task as JSON-RPC and pumps the response stream into glasspane.COLIBRI_AUTOSPAWN_TASK?Context
docs/ADR-agent-harness-consolidation.md— zot = future default.zot --json </dev/nullexits immediately;zot rpc </dev/nullblocks but expects JSON-RPC on stdin.stage-colibri-iso.shcomment points here.Not this
COLIBRI_PI_BINARY=zot) — broken, produces zero agents.--mode server— ADR forbids forking upstream.Step 1 assigned to Hermes (OSA). Capture a real
zot rpctranscript (DeepSeek-backed, one full turn with a tool call) to validate glasspane'szot_event_typeparser against reality instead of the hand-written fixture (colibri-glasspane/src/lib.rs:996).Deliverables back: raw line-by-line stdout transcript (secrets redacted); the stdin JSON-RPC request shape sent; and the deciding wire-format answer — does zot rpc emit bare event objects (
{"type":"turn_start"}…) or wrap them in a JSON-RPC envelope (jsonrpc/method/paramsorresult)? Plus anytypevalues not in the current mapping.Steps 2 (zot-rpc spawn path) and 3 (task contract) stay blocked on this transcript.
Step 1 done — real-key transcript landed in
docs/ZOT-RPC-TRANSCRIPT.md(PR #146). Confirmed against real output: wire format = bare event objects (no JSON-RPC envelope), request shape{id,type:prompt,message}, and 14 of 15 mapped event types from a full tool cycle (tool_use_start/args/end→tool_progress→tool_result, plustext_deltastreaming,usagewith cache/cost,turn_end.stop).One open item before step 2 trusts it: the standalone
tool_callevent was not observed in this run — the tool cycle usedtool_use_*only. glasspane maps bothtool_use_startandtool_calltotool_execution_start, so if zot emits a standalonetool_callon some path it would double-fire (driver must treat the second as a no-op). The doc records this as open, not as fact.Action (Hermes/OSA): check the full transcript at
/tmp/zot_transcript_full.txtfor a{"type":"tool_call"}line.tool_callis dead code in glasspane's mapping for this path; note it and the driver ignores it.Steps 2 (zot-rpc spawn path) and 3 (task contract) are unblocked either way — this only affects how the driver treats
tool_execution_startre-fires.Caveat — zot version bump may invalidate this transcript. The glasspane parser validation here (PR #146) was captured against zot v0.2.29. clawdie-iso #105 pins the image to zot v0.2.42. A version bump can add/rename event
typevalues or shift the wire format.When v0.2.42 lands on the build host: re-run the step-1 capture (real key, force a tool call) against v0.2.42 and diff the event types against
docs/ZOT-RPC-TRANSCRIPT.md. If anything moved, updatezot_event_type(colibri-glasspane/src/lib.rs) before the step-2 driver relies on it.This folds into the still-open step-1 item (confirm whether
tool_callever fires) — do both checks in the same v0.2.42 run.Pointer: onboarding-simplification work spun out a separate task.
clawdie-iso #110 (merged) makes the live seed importer route an active agent's provider keys into
colibri_daemon'sprovider.env, so a personalized FAT32 seed boots straight into a live auto-spawned agent — zero-touch, no Join Hive click, no Vaultwarden round-trip. This is the seed-partition lever fromONBOARDING-SIMPLIFICATION.md, now implemented (supersedes the xdg-autostart plan).Follow-up assigned to Hermes (OSA): generate the personalized seed payload → clawdie-iso #111 (clawdie/clawdie-iso#111).
Unrelated to this issue's blocker — #143 stays about the zot-rpc driver (OOTB agent remains pi until that lands). Recording here only so the onboarding thread is cross-linked.
"Route board tasks to rpc-agent stdin (send_prompt from
task-claim)" — so the tracker reflects reality (the blocker's resolved; only the dispatch
enhancement remains).