Configuration
Known limitations of this surface
Recorded deliberately: what this configuration surface does not yet do.
Recorded deliberately — a document that hides its own gaps is worse than none.
- Most unknown keys written directly INTO THE FILE are silently ignored. The loader has no
default branch, so a typo such as
identtiy.actortyped into the file does nothing and says nothing. (saphan config setitself does reject unknown keys, listing every valid one — the silent-ignore applies only to hand-edits that bypass the verb.) The closed[probe.model]family is an exception: an unknown backend there is refused by name at load, and so are[class],[verify.<scope>]and[oauth_server]. Planned fix: a strictsaphan config validatepass reporting every dropped key with its line number. saphan config showdoes not yet printworkspace.worktree_grant_class— the key is honored everywhere it matters, but the show projection omits it. Set it, then verify with the composing verb's own output.- The
config sethelp text lists a subset of keys. This document is broader than--help; they should be reconciled. The unknown-key error, unlike the help text, is complete. scheduler.usage_probe_after_exhaustedis parsed but consumed by nothing yet (§4).- Four policy fields have a closed enum with load-time validation —
trust.enforce,org.supersede_policy,ssh_host_key_policy(both tiers) andrun.confinement. Every future policy field should follow that route rather than a free string.