kyo-experiment: a Kyo session with real interrupt, and the SDK verdict (slice 02-kyo-session) #88
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
iterative-works/claude-code-query!88
Loading…
Reference in a new issue
No description provided.
Delete branch "kyo-experiment"
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?
Slice 02-kyo-session (kyo-experiment, step 1: the SDK)
Goal. Hold a live, multi-turn conversation with the real Claude CLI through a Kyo session (send while a turn runs, interrupt a turn for real and keep talking, see completion as state), then read the Kyo code beside
zio's session and write the SDK verdict.Fit test. Michal chats and interrupts in the terminal runner (
./mill -i kyo.runMain works.iterative.claude.kyo.ChatRunner), reads Kyo besidezio, and writes the verdict with file:line on both sides. Fit called by Michal on 2026-10-01.Verdict (Michal). Hold the adoption of Kyo for now. Watch Kyo for updates in the areas where it is missing (a live stdin write, a sliding fan-out, an exact wait on a
Signal), and possibly contribute. Go on to the Kyo UI slice. The evidence is the reading index at the top ofproject-management/efforts/kyo-experiment/slices/02-kyo-session/friction.md.Done
Session:send,interruptover the control protocol,state/resultsSeen,awaitResultAfter/sendAndAwait,info,terminated,events,stateChanges, death with the stderr tail, and the process tree ended with the scope. Spawn and tree kill are shared with the query path (CliProcess).LossyBroadcast: eacheventssubscriber has its own buffer and drops its oldest messages. Kyo's back-pressuredHubstalled every reader behind one slow reader.SignalAwait: one wait on aSignalwith a repair interval, used by the session and the chat. The chat waits on changes, with no sleep loops.Chat,ChatCommand,ChatRunner) with/interruptand/quit.SessionIntegrationTest(18),SessionErrorIntegrationTest(2),SessionInterruptIntegrationTest(6) andChatIntegrationTest(12) against bash stand-ins. Real-CLISessionE2ETest(4) andStopAndKeepTalkingE2ETest(1), each in an isolated config directory that is deleted after the test. New unit suites forLossyBroadcast,SignalAwait,SessionRules,ChatCommandandSessionDisplay.core:SessionStateandInterruptOutcomederiveCanEqual(approved, no change in behaviour).Review
Seven skills: style, testing, security, scala3, composition, architecture and error-handling. They found no critical issues and 11 warnings. Five were fixed in
0bbc81d:/tmp.The other warnings are filed as issues. Report:
project-management/efforts/kyo-experiment/slices/02-kyo-session/review-slice-20261001-1525.md.Follow-ups
zio.Parked (moved to the effort map)
kyo-archiveSessionshost registry, and the "is the CLI working?" activity state →kyo-ui-chatSessionProcess(large refactor)directsession parity bar,effectfulbaseline, publication, fullziounit-suite portGates
__.compile,__.testandkyo.itest(66/66, including the real-CLI E2E tests) pass with no warnings.__.itestrun, timing tests ineffectfulanddirectfail under load and pass alone (#81). This branch does not changeeffectfulordirect.🤖 Generated with Claude Code