The file was a week's record of the transcript work, and everything in its architecture, techniques and rejected sections has landed -- so it was a log of how the code got here, which the code's own comments and AGENTS.md already carry. Kept only what existed nowhere else: stream-bench.sh, trace-draw.sh and the two emulator-loop traps go to AGENTS.md beside transcript-bench.sh, along with the standing rule to run the benches either side of a transcript change; GrapheneOS's broken System Tracing goes to ~/.claude/MACHINE.md, since it is about the phone rather than this project. Its one unfinished item -- the reconnect loop after a restart onto a streaming session, which may already have been fixed by the restore's one-event-per-request fix -- moves to TODO.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
TODO
Working list from Iris, 2026-09-03. Remove an entry when it lands; annotate one in place when it turns out to need a decision.
App — transcript
- Messages received from other agents are inconsistent — sometimes they
appear, sometimes they don't. Needs a rig. Read the code rather than
measured: a live Claude session only learns of a peer message from the
originobject on a turn'sresult(session/claude/translate.rs), which the CLI attaches to a turn the message started. So a message that arrives mid-turn, or a second one within one turn, has nowhere to be reported — while an imported session, which syncs from the CLI's own file, picks up every one of them. That would show exactly as "sometimes". Confirming it means driving a real stream-json session and sending it messages in both states.
App — reconnect
- Restarting the app onto a session with a saved anchor, while a long
reply was streaming, left it reconnecting every 1.5s
(
RECONNECT_DELAY_MS) with the spinner up until the server was restarted.events?after=Nmore thanCATCH_UP_LIMIT(200) behind answersresetplus the newest 200 raw deltas -- a window starting mid-message -- and the reset clearsitems, which is the state the restore loop then pages against. May already be fixed: the restore's one-event-per-request bug was part of what made it so visible and has since been fixed, so the first thing to find out is whether this survives that. Found 2026-09-03.
Session settings
- Autocompact belongs in session settings; empty disables it, which is the
default. Iris chose "hand it to the driver" — only where a driver has
auto-compaction of its own. That option was offered on a false premise
and is not buildable yet. It named pi's
set_auto_compaction, but pi was never built as a driver here:session/llama.rstalks tollama-server's OpenAI-compatible endpoint directly, and itscompact()refuses outright. Claude Code's auto-compaction is the CLI's own and nothing in the stream-json control protocol this app uses configures it. So the setting would be stored, passed to a driver, refused by every one of them, and the field would never appear on any session. What is needed first is either a driver that can take it, or a different rule — the server watchingcontextTokensand running/compactitself is the one that would work today, for Claude sessions, and it is the option that was not chosen.