Skip to content

docs: D6 engine-side headless VT spike — recommend "not now" (WI-130) - #673

Closed
thedancingdeveloper wants to merge 1 commit into
feat/terminal-attach-f5-serialize-statefrom
feat/terminal-attach-d6-vt-spike
Closed

thedancingdeveloper wants to merge 1 commit into
feat/terminal-attach-f5-serialize-statefrom
feat/terminal-attach-d6-vt-spike

Conversation

@thedancingdeveloper

Copy link
Copy Markdown
Contributor

Seventh PR of the terminal-attach-budget initiative (WI-121). Stacked on #672 (F5); all land on feat/terminal-attach-budget. Docs only, no runtime change.

What this is (D6 / WI-130)

The design-spike answer to: should the engine run a headless terminal emulator per session so a cold attach ships screen state (tmux-style) instead of byte history? Written up in a new docs/ROADMAP.md.

  • Crate comparisonvt100 (best fit: minimal grid, smallest surface), alacritty_terminal / termwiz (heavier renderer/feature surface a snapshot server doesn't need).
  • Grounded cost at 8 sessions — ~1.7–3.4 MB grid each (~14–27 MB total) on top of the raw ring, plus continuous VT parse CPU on the PTY hot path (a cost the raw-ring design pays only per attach). No live number taken — no stack is reachable from an agent session; H1's load session is the measurement path if revisited.
  • Wire shape (snapshot-start kind:"screen" + a server escape stream), the server-VT-vs-xterm fidelity risk and how the H2 harness proves it, and the modest mobile win (F5 already gives a bounded one-write restore).

Recommendation: not now

F1–F5 (and F4) address both operator symptoms — switch re-stream and slow fresh open — by bounding and client-side serialization, without doubling engine memory or adding hot-path CPU. Revisit only if, once shipped and measured on prod, mobile cold attach is still bottlenecked on the tail, the client cache proves untenable, or a new server-authoritative-screen requirement appears. No new work items filed.

scripts/check_docs.py clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UtEFLJAhLiq4NfZCN2vuBb

…now"

Answer the D6 design question (WI-130) in a new docs/ROADMAP.md: should the
engine run a headless terminal emulator per session so a cold attach ships
screen state instead of byte history?

- Crate comparison: vt100 (best fit — minimal grid, smallest surface),
  alacritty_terminal and termwiz (heavier, renderer/feature surface a snapshot
  server does not need).
- Grounded per-session cost at 8 sessions: ~1.7–3.4 MB grid each (~14–27 MB
  total) ON TOP of the raw ring, plus continuous VT parse CPU on the PTY hot
  path — a cost the raw-ring design pays only per attach. No live number taken
  (no stack reachable); H1's load session is the measurement path if revisited.
- Wire shape (snapshot-start kind:"screen" + server escape stream), the
  server-VT-vs-xterm fidelity risk and how the H2 harness proves it, and the
  modest mobile win (F5 already gives a bounded one-write restore).

Recommendation: not now. F1–F5 (+F4) address both operator symptoms by bounding
and client-side serialization without doubling engine memory or adding hot-path
CPU. Revisit only if, once shipped and measured, mobile cold attach is still
bottlenecked on the tail, the client cache proves untenable, or a new
server-authoritative-screen requirement appears. No new work items filed. WI-130.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UtEFLJAhLiq4NfZCN2vuBb
@thedancingdeveloper

Copy link
Copy Markdown
Contributor Author

Cleanup: superseded by the single promotion PR #676. All of this work is already integrated into feat/terminal-attach-budget and is reviewable there per-commit (each commit is one initiative item with a full message). Closing to keep the initiative to one PR; the commit is preserved.

@thedancingdeveloper
thedancingdeveloper deleted the feat/terminal-attach-d6-vt-spike branch September 9, 2026 20:59
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.

1 participant