Compatibility¶
Compatibility is the eligibility gate. Even if a device is in a deployment's audience and lands inside the cohort percentage, it will only be offered an artifact whose manifest matches its hardware profile.
Enforced dimensions¶
The decision engine currently enforces these dimensions on every check:
| Dimension | How matched |
|---|---|
framework |
Exact: arduino ≠ esp_idf. |
chip_family |
Exact: esp32 ≠ esp32s3 ≠ esp32c3. |
board_id |
Blank artifact constraint matches anything; otherwise exact. |
hardware_revision |
Artifact's hardware_revision_min/max range (inclusive). Blank bounds mean no constraint. |
Advisory dimensions (not yet enforced)¶
These fields are stored on artifacts and devices but the engine does not use them as a gate today. They are planned for a future phase.
| Dimension | Status |
|---|---|
partition_profile |
Stored; not enforced. Mismatched partitions can still brick a device; validate in your own CI. |
nvs_schema_version |
Stored; not enforced. |
security_mode |
Stored; not enforced. |
Worked rejection example¶
A device reports chip_family = esp32s3, board_id = freenove-cam. An
artifact's manifest declares chip_family = esp32s3, board_id = esp32s3-devkitc-1.
→ Not compatible. board_id mismatch. Even at 100% rollout, this
device sees {"update_available": false} for that artifact.