Product Onboarding
Purpose
This document is the maintainer checklist for adding support for another EZO family.
It exists to keep future product work mechanical. New families should extend the repo by following the same process, not by reopening architecture decisions.
Preconditions
Do not start implementation until all of these are true:
- vendor evidence for the family exists outside this repo and is strong enough to support driver work
- the family has been reviewed against the existing transport and product model
- the intended initial support tier is explicit before code is written
Support Tiers
METADATA
- product ID and short-code identification
- timing metadata
- capability and command-family classification
- canonical schema facts where they are stable enough to record
- no typed measurement or product-helper claim
TYPED_READ
- metadata coverage
- typed measurement reads for the main acquisition path
- product-specific parse and command helpers needed for that path
- partial configuration support is acceptable if the docs say so clearly
FULL
- typed reads
- shared control/admin coverage where the family participates
- calibration-transfer coverage where the family supports it
- advanced product-specific helpers that are part of the intended public surface
Required Decisions Up Front
Before implementation, record these conclusions:
- scalar-output or configurable multi-output
- fixed schema, primary-only schema, or query-required schema
- calibration-transfer support: yes or no
- shared control-plane participation: yes or no
- advanced helpers in scope now vs intentionally deferred
- initial tier claim:
METADATA,TYPED_READ, orFULL
If any answer would force a change to the transport architecture or the current product/module split, stop and update the tracked architecture docs first.
File-Level Checklist
Every new family should clear this checklist in order:
- Review vendor evidence and write repo conclusions.
Target files:
docs/ezo/products/<family>.mddocs/ezo/common/*.mdonly if shared protocol conclusions changed
- Add product identity and metadata.
Target files:
src/ezo_product.hsrc/ezo_product.c
- Add schema and parse facts where needed.
Target files:
src/ezo_schema.hsrc/ezo_schema.csrc/ezo_parse.hsrc/ezo_parse.c
- Add the product module.
Target files:
src/ezo_<family>.hsrc/ezo_<family>.c
- Add or update tests.
Minimum targets:
tests/test_ezo_product.ctests/test_ezo_<family>.c- shared parser/schema tests if the family forced shared behavior changes
- Add an example only if the tier justifies it.
Typical targets:
examples/linux/i2c/typed/read_<family>.cexamples/linux/uart/typed/read_<family>.c- Arduino examples only when they add real coverage value
- Update public repo docs.
Target files:
docs/support-matrix.mdREADME.mdCHANGELOG.md
Validation Bar
Minimum validation for any new family:
- metadata lookup and
i-response handling are covered where applicable - parser behavior is covered for the family’s real payload shapes
- I2C and UART helpers are covered when the tier claims both
- support-tier claims in docs match the actual exported surface
- examples compile on the CI paths they are supposed to represent
Recommended validation commands:
cmake --preset host-linux-debug
cmake --build --preset host-linux-debug --parallel
ctest --preset host-linux-debug
cmake --preset host-linux-release
cmake --build --preset host-linux-release --parallel
ctest --preset host-linux-release
git diff --check
If example or packaging surfaces changed, rerun the relevant example or install validation too.
Tier Rules
Do not overclaim maturity:
- use
METADATAwhen the repo can identify the family but does not yet provide typed reads - use
TYPED_READwhen the acquisition path is solid but broader operational coverage is intentionally partial - use
FULLonly when implementation, tests, and docs all reflect the intended public surface
If a family cannot clear a higher tier yet, land it at the lower tier explicitly instead of hiding the gap.
Current Constraint
The current repo only carries vendor source material for the initial six supported families. Until new evidence is added outside this repo, this document is the close-out for growth readiness rather than a mandate to ship another family immediately.