ADR-0001: Provider Scope and Shared-Bus Safety Model
- Status: Accepted
- Date: 2026-03-27
Context
anolis-provider-ezo is being introduced alongside anolis-provider-bread, with both potentially sharing one Linux I2C adapter (/dev/i2c-X).
The design needs to stay simple, avoid hidden coupling between providers, and remain safe under concurrent runtime behavior.
Decision
- Provider boundaries are strict:
anolis-provider-breadremains BREAD-over-CRUMBS only.anolis-provider-ezohandles EZO devices only.
- v1 transport scope is I2C only.
- v1 discovery mode is manual config only.
- v1 startup behavior is strict identity verification + partial-ready startup:
- type mismatch or unreachable devices are excluded with diagnostics.
- healthy devices remain available.
- v1 function surface is limited to safe controls:
findset_ledsleep
- Shared-bus safety is layered:
- each provider must serialize its own bus operations through a single internal executor.
- runtime must reject duplicate
(bus_path, i2c_address)ownership across providers at startup.
- Cross-process advisory lock is optional hardening and not baseline for v1.
Consequences
- Clear ownership and maintainable provider code boundaries.
- Reduced race risk inside each provider.
- Deterministic startup failure for ambiguous topology.
- Lower initial complexity than a global broker model.
Non-goals for v1
- UART transport support.
- Auto discovery.
- High-risk control/calibration command surface.
- Runtime-global lock manager or broker process.
