Files
lumbridge-code/docs/decisions/0005-terminal-engine-boundary.md
T
2026-08-31 17:05:49 -07:00

1.3 KiB

0005: Terminal semantics stay behind a Lumbridge-owned contract

Status: accepted for the first terminal slice.

Lumbridge uses alacritty_terminal with default features disabled as its first VT state engine. The dependency is mature enough to cover substantially more terminal behavior than a new parser, but its types do not cross into runtime, storage, IPC, or UI APIs.

lumbridge-terminal accepts ordered raw PTY bytes and exposes immutable Lumbridge snapshots containing cells, styles, colors, cursor, terminal modes, and sanitized title state. It owns terminal key and paste encoding. Protocol replies such as device-status responses return as bytes and enter the same bounded actor queue as all other PTY input, preserving ordering.

Clipboard writes such as OSC 52 are disabled by default. Transcript-bearing snapshots deliberately omit Debug, and terminal titles are bounded and stripped of controls. A renderer may derive plain rows for a spike, but that is not the terminal model and must not become the persistence or automation contract.

Adopting this engine is reversible: conformance fixtures target the Lumbridge contract, and no upstream application code is copied into this repository. Kitty keyboard/graphics behavior, OSC 8 links, mouse modes, IME, selection, and platform rendering remain explicit qualification work.