This commit is contained in:
@@ -16,9 +16,10 @@ arrives. Process-local session IDs are correlation IDs only; durable IDs are
|
||||
assigned by the persisted runtime protocol later.
|
||||
|
||||
Runtime events contain ordered raw PTY bytes. The UI spike may line-frame plain
|
||||
fixture output for display, but ANSI/VT parsing, screen state, cursor behavior,
|
||||
scrollback, and terminal input modes belong to `lumbridge-terminal`. The UI must
|
||||
not infer terminal semantics from raw strings.
|
||||
fixture output for deterministic surfaces, but the live pane sends bytes through
|
||||
`lumbridge-terminal`. ANSI/VT parsing, screen state, cursor behavior, scrollback,
|
||||
and terminal input modes never belong to the runtime actor or UI. The UI must not
|
||||
infer terminal semantics from raw strings.
|
||||
|
||||
Dropping the UI-side actor disconnects its bounded channels, releases an actor
|
||||
blocked by event backpressure, terminates the process group through
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# 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.
|
||||
@@ -0,0 +1,20 @@
|
||||
# 0006: Every workspace controller uses one typed command plane
|
||||
|
||||
Status: accepted for implementation.
|
||||
|
||||
Human UI, CLI automation, remote clients, and agents submit the same typed
|
||||
workspace commands. Stable request IDs make retries idempotent. Pane IDs, split
|
||||
ratios, surfaces, launch intents, and close dispositions are validated before
|
||||
state changes, and a multi-command setup plan is applied atomically. Reusing an
|
||||
ID with a different origin or command is a conflict, not a silent duplicate.
|
||||
|
||||
Each request has an origin and an explicit Observe, Configure, or Execute grant.
|
||||
The command declares the minimum capability it needs. Creating or terminating a
|
||||
process requires Execute; layout-only changes require Configure. Launch intents
|
||||
refer to a user shell or an approved harness profile and working directory, not
|
||||
arbitrary executable arguments or secret values.
|
||||
|
||||
This reducer is not an authorization bypass. The future IPC layer authenticates
|
||||
the caller and supplies its granted capability; the reducer rechecks it before
|
||||
mutation. Durable audit events record request and object identities, never
|
||||
terminal input, transcript content, provider keys, or pane titles by default.
|
||||
@@ -0,0 +1,27 @@
|
||||
# 0007: Lumbridge Harness is optional, separate, and capability-scoped
|
||||
|
||||
Status: accepted for architecture; implementation and fork policy pending.
|
||||
|
||||
Lumbridge may distribute a separately versioned Lumbridge Harness for prompt
|
||||
refinement, trace analysis, recommendations, and agent coordination. The native
|
||||
Rust terminal workspace remains complete without it, and the Harness does not
|
||||
run inside the UI process.
|
||||
|
||||
The captured DeepSeek Harness is an MIT-licensed and architecturally useful
|
||||
reference, but it is also an unaudited Node/TypeScript developer preview with a
|
||||
web client and broad native dependency closure. A maintained fork, if selected,
|
||||
lives in its own repository/process, preserves required notices, and exposes a
|
||||
small versioned protocol. Its React UI is not embedded in Lumbridge. We can later
|
||||
replace the implementation with a first-party Rust service without changing the
|
||||
desktop contract.
|
||||
|
||||
Model access is provider-neutral and begins with OpenAI-compatible endpoints so
|
||||
development can use a self-hosted Spark/Qwen model or a user-selected service
|
||||
such as Cerebras. Endpoint credentials are opaque secret-store handles.
|
||||
|
||||
Trace analysis is opt-in per workspace. The user chooses the trace projection
|
||||
and destination; local processing stays local, while hosted processing requires
|
||||
an explicit preview and consent. Suggestions and decision-shelf choices carry no
|
||||
authority. Any setup, launch, mutation, or autopilot action becomes a typed
|
||||
workspace plan and can use only the Observe, Configure, or Execute capability
|
||||
granted to that run.
|
||||
Reference in New Issue
Block a user