Summary
A provider key that Raven cannot resolve to a known vendor -- a typo such as
mistrall, or a hand-edited section name -- makes the whole CLI unusable, with
no way to fix it from inside Raven.
Mechanism
Reading the config resolves every providers section to a schema class. An
unresolvable section raised, and the raise propagated through the paths that run
before any command does its work: the startup gate that decides whether
onboarding is required, provider list, and raven status.
Impact
raven exits with a traceback. The wizard cannot start, so the one tool that
would rewrite the offending section is unreachable, and provider list cannot
even show which section is at fault. Recovery requires hand-editing
~/.raven/config.json, which is exactly what the user should not have to do.
Fix
Listing is a read-only report and now skips a section it cannot resolve rather
than failing the whole read, so the CLI keeps working and the wizard remains
reachable. The write paths still reject an unknown name, because that is where
saying "this is a typo" is useful.
Summary
A provider key that Raven cannot resolve to a known vendor -- a typo such as
mistrall, or a hand-edited section name -- makes the whole CLI unusable, withno way to fix it from inside Raven.
Mechanism
Reading the config resolves every
providerssection to a schema class. Anunresolvable section raised, and the raise propagated through the paths that run
before any command does its work: the startup gate that decides whether
onboarding is required,
provider list, andraven status.Impact
ravenexits with a traceback. The wizard cannot start, so the one tool thatwould rewrite the offending section is unreachable, and
provider listcannoteven show which section is at fault. Recovery requires hand-editing
~/.raven/config.json, which is exactly what the user should not have to do.Fix
Listing is a read-only report and now skips a section it cannot resolve rather
than failing the whole read, so the CLI keeps working and the wizard remains
reachable. The write paths still reject an unknown name, because that is where
saying "this is a typo" is useful.