Skip to content

session: footer echo pump thread — echo-as-you-type during blocking inference - #368

Merged
jeqcho merged 7 commits into
mainfrom
worktree-operator-echo-pump
Aug 11, 2026
Merged

session: footer echo pump thread — echo-as-you-type during blocking inference#368
jeqcho merged 7 commits into
mainfrom
worktree-operator-echo-pump

Conversation

@jeqcho

@jeqcho jeqcho commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Closes #367.

With the footer active (cbreak, ECHO off) the only echo path is the poll pump, and the rollout loop blocks in controller.next_action for a whole LLM inference, so operators type blind until the robot moves. This adds a session-owned echo pump thread, alive only inside the per-trial footer window, ticking on Event.wait(ECHO_INTERVAL_S) and running the existing _pump_input() under a shared RLock. Completed lines still queue for poll(); the console primitive stays threadless; pump-thread errors are re-raised from the next poll() to reuse rollout's degrade path. Amends plan 0042 (operator console) design decision 1; rationale and accepted costs in plans/0066-footer-echo-pump.md.

Plan critique: 4 rounds (12, 9, 7, and 5 findings; rounds 1-3 each had one blocker: self-contradictory docs, wrong test-file name, fixed-signature enable_footer monkeypatch in the enablement matrix). Round 4 clean of blockers; all findings applied. Locking, teardown ordering, degrade path, and coverage reachability independently re-verified each round.

🤖 Generated with Claude Code

jeqcho and others added 6 commits August 10, 2026 18:54
…rence (#367)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nce (#367)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jeqcho
jeqcho marked this pull request as ready for review August 11, 2026 03:34
if self._pump_error is not None:
error = self._pump_error
self._pump_error = None
raise error
…nterrupted join

Fresh-eye review findings on #368: the teardown-ordering test only pinned
join-by-return, and a KeyboardInterrupt inside the new join window skipped
the terminal restore end_trial previously guaranteed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jeqcho
jeqcho merged commit aeefa00 into main Aug 11, 2026
26 checks passed
@jeqcho
jeqcho deleted the worktree-operator-echo-pump branch August 11, 2026 03:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Operator console: typed text invisible until the next poll (LLM inference starves echo)

1 participant