mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 18:11:13 +00:00
2.8 KiB
2.8 KiB
Contract: Runtime Shared Contracts
Component: shared/contracts Producer task: AZ-220 — AZ-220_shared_runtime_contracts.md Consumer tasks: AZ-223, AZ-224, AZ-225, AZ-226, AZ-227, AZ-228, AZ-229, AZ-230, AZ-231, AZ-232 Version: 1.0.0 Status: draft Last Updated: 2026-05-03
Purpose
Defines the shared runtime DTO/event contract surface that component implementations consume instead of inventing local shapes.
Shape
| Contract | Required Fields / Methods | Consumers |
|---|---|---|
FramePacket |
frame ID, timestamp, image reference, calibration ID, occlusion, quality, normalization hint | camera, VIO, Satellite Service, Anchor Verification, Tile Manager, FDR |
TelemetrySample |
timestamp, IMU, attitude, altitude, airspeed, GPS health | MAVLink, VIO, safety wrapper, FDR |
VioStatePacket |
timestamp, relative pose, velocity, bias, tracking quality, covariance hint | VIO, safety wrapper, FDR |
PositionEstimate |
WGS84 coordinates, covariance, source label, fix type, horizontal accuracy, anchor age | safety wrapper, MAVLink, Tile Manager, FDR |
VprCandidate |
chunk ID, tile ID, score, footprint, freshness status | Satellite Service, Anchor Verification, FDR |
AnchorDecision |
candidate ID, acceptance result, estimated pose, inliers, MRE, rejection reason | Anchor Verification, safety wrapper, FDR |
CacheTileRecord |
tile ID, CRS, meters per pixel, capture date, signature/hash, trust level | Tile Manager, Satellite Service, Anchor Verification |
FdrEvent |
event type, timestamp, component, severity, payload reference, mission/run ID | all runtime components |
Invariants
- Timestamps are normalized to a shared monotonic nanosecond representation before cross-component use.
- Confidence fields must not under-report known uncertainty.
- Raw frame payloads are referenced, not persisted in shared DTOs.
- Generated tile and anchor records must carry provenance/freshness metadata.
Non-Goals
- Does not prescribe internal classes or storage implementation.
- Does not define e2e test runner-only report schemas.
Versioning Rules
- Removing or renaming a field requires a major version bump.
- Adding optional telemetry or diagnostic fields requires a minor version bump.
Test Cases
| Case | Input | Expected | Notes |
|---|---|---|---|
| valid-frame | frame with timestamp, calibration, quality | accepted by consumers | Includes normalization hint |
| invalid-time | non-monotonic timestamp | rejected or marked invalid | Time-sync contract decides details |
| stale-anchor | anchor decision with stale freshness | rejected/down-confidenced | Safety wrapper must not accept blindly |
Change Log
| Version | Date | Change | Author |
|---|---|---|---|
| 1.0.0 | 2026-05-03 | Initial contract | autodev |