Accepted
SOVD servers expose varying sets of capabilities depending on configuration, licensing, and the connected vehicle. The client must adapt dynamically rather than assuming a fixed feature set.
All workflows are capability-driven:
- On connection, the client discovers capabilities via
GET /sovd/v1/capabilities. - The
CapabilityResolverinterprets the result and determines available operations. - UI and CLI commands check capability availability before execution.
- Missing capabilities produce clear error messages, not crashes.
- Works with any SOVD-compliant server regardless of feature set
- Graceful degradation when capabilities are unavailable
- No hardcoded assumptions about server behavior
- Supports forward compatibility with future SOVD extensions
- Slightly more complex initialization flow
- UI must handle dynamic feature availability
- Testing requires capability fixtures
- ADR-0001: Open Core