config: validate only this client's overlay in the JSON schema #155
No reviewers
Labels
No labels
priority/P0
priority/P1
priority/P2
release/v0.1.0
status/blocked
status/planned
type/bug
type/design
type/test-gap
type/tracker
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
natsukium/felis!155
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/client-overlay-schema-140"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #140.
The runtime carries every
[client.<name>]section as raw TOML and nevervalidates a foreign one, but the published JSON schema described the map as
BTreeMap<String, EffectiveConfig>— so an editor validated every client'ssection against felis' own vocabulary. The schema now names the
felisoverlay explicitly and leaves the rest of the map open, reproducing the
runtime split the file is published to describe. The root object and the
config sections stay open, for the same reason the loader warns instead of
rejecting an unknown key; the schema's
$commentcarries that reason where areader of the published file finds it.
Doc cascade:
docs/reference/config.mdnow states that a malformed foreignsection is ignored too — the property a third-party frontend depends on and
the one a 1.0 freeze has to name — and what the published schema validates.
docs/explanation/architecture/control-surfaces.mdgains the trigger thatwould reopen the one-document decision: a second first-party client whose
top-level vocabulary diverges from the GUI's, where
config.d/<client>.tomldrop-ins buy back strict per-file validation with nothing left to drift.
CHANGELOG.mdrecords the user-visible schema change.Verified: just check green (fmt, clippy, nextest, deny, proto-compat);
reviewed by pi luna + pi sol; docs proofread by Gemini gemini-3.8-flash-high
Deferred
just check's skill-check step cannot run in this harness shell (yq: command not found). Environment gap only: flake.nix already provides yq-go for the dev shell and the script passes whenYQpoints at it. Pre-existing and unrelated to #140.