-
Notifications
You must be signed in to change notification settings - Fork 0
Settings foundation: typed registry and CLI management #153
Copy link
Copy link
Closed
Labels
area:cliCLI parser, help, capabilitiesCLI parser, help, capabilitiesarea:core-protocolHeadlessProtocol: wire protocol, validation, transportHeadlessProtocol: wire protocol, validation, transportpriority:mediumScheduled, not blockingScheduled, not blockingstatus:needs-designRequires an architecture-decision entry firstRequires an architecture-decision entry firsttype:featureNew capability or commandNew capability or command
Description
Activity
Metadata
Metadata
Assignees
Labels
area:cliCLI parser, help, capabilitiesCLI parser, help, capabilitiesarea:core-protocolHeadlessProtocol: wire protocol, validation, transportHeadlessProtocol: wire protocol, validation, transportpriority:mediumScheduled, not blockingScheduled, not blockingstatus:needs-designRequires an architecture-decision entry firstRequires an architecture-decision entry firsttype:featureNew capability or commandNew capability or command
Problem
Headless has one local preference,
startup-presentation, implemented directly in the CLI with macOS UserDefaults. There is no central schema, Linux persistence, discovery command, reset behavior, or classification of settings that agents may change.Proposed contract
Define a typed settings registry with key, type, default, platform scope, validation, restart behavior, and access class. Expose:
headless config list headless config describe KEY headless config get KEY headless config set KEY VALUE headless config reset KEYUse UserDefaults on macOS and an XDG config file with mode
0600in a0700directory on Linux. Migratestartup-presentationwithout losing its current value.Boundaries
Security invariants are policies, not settings. The registry must never allow arbitrary JavaScript, TCP control, unsafe schemes, downloads, sandbox weakening, or bypassing sensitive-diagnostics gates. Unknown keys and invalid values fail closed. Settings must be classified as agent-readable, agent-writable, or user-only.
This changes the agent-facing contract and requires an architecture-decision entry before implementation.
Acceptance criteria