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

25 lines
1.3 KiB
Markdown

# 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.