v5.6.0 — V5-7 capability-request matching
MINOR. select_backend() now accepts a required: Capabilities | None = None keyword parameter. When provided, the resolved backend's .capabilities must satisfy every True flag — a subset check. Mismatch raises CapabilityMismatchError (new StorageSelectionError subclass) naming the backend protocol and all unsatisfied fields. Operators can pre-flight requirements without code via doctor --requires <cap1,cap2>. Zero existing callers updated. Gates: 20/20, CI green across Linux/Mac/Windows.
Added
CapabilityMismatchError(03aceb5) — newStorageSelectionErrorsubclass; existingexcept StorageSelectionErrorcatch sites cover it automatically.select_backend(required=)(03aceb5) — subset-check of resolved backend capabilities; 8 new tests.doctor --requires(5a6f94c) — pre-flight CLI flag; unknown field names rejected before backend construction; 5 new tests.
Internal
- ADR 0013 amendment: subset-only matching is fail-loud, never a silent downgrade.
- Closed V5-7 deferral marker in
backend_selection.pymodule docstring.