Machine Profile Baseline
Status: Locked.
Purpose
Define machine profile manifest structure and lock manifest behavior for validation tooling.
Canonical Artifacts
- Manifest schema:
schemas/machine/machine-profile.schema.json - Validator:
tests/contracts/machine-profile/validate-machine-profiles.py - Fixtures:
tests/contracts/machine-profile/ - Runtime config schema dependency:
schemas/runtime/runtime-config.schema.json
Locked Behavior Summary
- Machine realizations live in external repos (e.g.,
anolis-projects). - Manifest file is
machine-profile.yaml. - Manifest declares:
- identity (
schema_version,machine_id,display_name) - runtime profile entrypoints (
manualrequired; optionaltelemetry,automation,full) - provider config references
- optional behavior asset references
- runtime contract references and compatibility notes
- optional pinned component versions (
components: runtime/provider/optional artifactrepo+versionpairs, read bytools/install.shand auto-bumped by Renovate) - optional informational safety facts (
safety.estop_topology: power_cut | signal— how the physical e-stop is wired, so operators and monitoring can interpret an e-stop event's software signature:power_cutshows as device blackout withio_failedaccrual and recovery on release;signalshows asestop=truein device state with the bus alive. Both wirings are first-class; nothing may branch runtime behavior on this field beyond presentation/interpretation, and absence is valid)
- identity (
- Validator enforces:
- schema correctness
- referenced file existence
- referenced runtime profile schema compatibility
Validation Gates
python3 tests/contracts/machine-profile/validate-machine-profiles.py- Runtime config contract validation remains in place for referenced profiles.
Consumers
The schema in this repo is the single source; it ships in every release as anolis-<version>-machine-profile-schema.tar.gz. Downstream consumers (a schema change here must be released, then propagated):
anolis-workbench— vendored copy byte-locked to a release artifact (contracts/upstream/anolis/machine-profile.lock.json); re-lock on schema-bearing releases.anolis-projects— CI fetches the artifact at the release pinned inschema-source.json(Renovate bumps the pin).- Docs site (
anolishq.github.io) — injects the artifact at its pinned release for the published contract page.
Drift Notes and Change Rule
- Keep machine profile schema additive when possible.
- Path/layout changes require coordinated updates to manifest schema, validator, package docs, and fixtures.
- Do not introduce packaging-repo split semantics in this baseline.
