Telemetry Timeseries Baseline
Status: Locked (v1) with release-artifact distribution path implemented.
Purpose
Freeze the telemetry row contract used between runtime emission (anolis_signal) and telemetry exporter query/normalization logic.
Canonical Artifacts
- Machine schema:
schemas/telemetry/telemetry-timeseries.schema.v1.json - Contract fixtures:
tests/contracts/telemetry-timeseries/examples/ - Fixture manifest:
tests/contracts/telemetry-timeseries/examples/manifest.yaml - Contract validator:
tests/contracts/telemetry-timeseries/validate-telemetry-timeseries.py - Runtime emission implementation:
core/telemetry/influx_sink.hpp - Runtime emission unit coverage:
tests/unit/influx_sink_test.cpp
Scope
This baseline covers only measurement anolis_signal.
Out of scope in this wave:
mode_changeparameter_change
Locked Contract Summary
Measurement
measurementmust beanolis_signal.
Required tags
runtime_nameprovider_iddevice_idsignal_id
All required tags are non-empty strings.
Required fields
qualityis required on every row.qualityvalues are limited to:OKSTALEUNAVAILABLEFAULT
Typed value fields
Typed value fields are:
value_doublevalue_intvalue_uintvalue_boolvalue_string
Cardinality rule:
- At most one typed value field may be present.
- Zero typed value fields are allowed for exceptional runtime cases (for example non-finite doubles where runtime omits the value field and still emits quality).
Timestamp
- Runtime writes timestamp as epoch milliseconds (
timestamp_msin logical contract representation).
Compatibility Rule
For this baseline wave:
- Additive changes to optional metadata are backward-compatible.
- Removing required keys or changing key semantics is breaking.
Validation Gate
Run:
bash
python3 tests/contracts/telemetry-timeseries/validate-telemetry-timeseries.pyThe gate must remain green in CI.
Distribution Note
Canonical source of truth:
anolisis schema source of truth.- release workflow publishes telemetry schema bundle and
telemetry-schema-manifest.json.
Release-pinned consumer model (anolis-telemetry-export):
scripts/sync-upstream-schema-from-release.py --tag vX.Y.Zsyncs vendored schema from release asset.scripts/verify-upstream-schema.py --require-release-artifactvalidates lock, checksums, and asset parity.
Manual copy remains emergency-only fallback during transition.
Change Rule
Update this baseline only in the same change that updates:
- machine schema,
- fixtures/validator expectations,
- runtime/exporter contract behavior (if behavior changed).
