Index contracts; record the envelope's two clocks and single-source rule
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013kj58Jugkic783b8ZrtTVZ
This commit is contained in:
+11
-3
@@ -78,9 +78,15 @@ yukart/nav/guidance next manoeuvre, distance, street name, retained
|
|||||||
yukart/nav/route active route geometry, retained
|
yukart/nav/route active route geometry, retained
|
||||||
```
|
```
|
||||||
|
|
||||||
Payloads: JSON for low-rate signals (readable, debuggable); compact binary or
|
Payloads: a self-describing JSON envelope for decoded signals; compact binary for
|
||||||
CBOR for `can/raw`, since a 500 kbps bus produces far more traffic than JSON
|
`can/raw`, since a 500 kbps bus produces far more traffic than JSON should carry.
|
||||||
should carry.
|
|
||||||
|
Every envelope carries **two clocks**. `monotonic` is authoritative for ordering
|
||||||
|
and intervals; `timestamp` is the absolute reference and may step, since the car
|
||||||
|
boots without network and NTP corrects the clock once LTE connects mid-drive.
|
||||||
|
|
||||||
|
Topic names, payload schemas and the signal registry live in
|
||||||
|
[contracts](gitea:yukart/contracts).
|
||||||
|
|
||||||
Topic names and payload schemas are a **contract shared across repos** — Android
|
Topic names and payload schemas are a **contract shared across repos** — Android
|
||||||
and ESP32 clients depend on them — so they are versioned in their own repo
|
and ESP32 clients depend on them — so they are versioned in their own repo
|
||||||
@@ -308,6 +314,8 @@ rewriting the document.
|
|||||||
| 3 | Listen-only sniffing + active OBD-II, single writer | Accepted | 2026-08-14 |
|
| 3 | Listen-only sniffing + active OBD-II, single writer | Accepted | 2026-08-14 |
|
||||||
| 4 | MQTT as the bus | **Proposed** | 2026-08-14 |
|
| 4 | MQTT as the bus | **Proposed** | 2026-08-14 |
|
||||||
| 5 | Rust for on-Orin services, Python for off-car tooling, Dart for the display client | Accepted | 2026-09-04 |
|
| 5 | Rust for on-Orin services, Python for off-car tooling, Dart for the display client | Accepted | 2026-09-04 |
|
||||||
|
| 21 | Two clocks per envelope; `monotonic` orders, `timestamp` references | Accepted | 2026-09-05 |
|
||||||
|
| 22 | `signals.json` is the single source for signal name and unit; both are derived, never authored twice | Accepted | 2026-09-05 |
|
||||||
| 6 | Local logging first; off-board LTE telemetry deferred | Accepted | 2026-08-14 |
|
| 6 | Local logging first; off-board LTE telemetry deferred | Accepted | 2026-08-14 |
|
||||||
| 7 | Camera/AI inference is a later, separate task | Accepted | 2026-08-14 |
|
| 7 | Camera/AI inference is a later, separate task | Accepted | 2026-08-14 |
|
||||||
| 8 | Self-hosted offline navigation (MapLibre GL + Valhalla + PMTiles) over a cloud maps SDK | Accepted | 2026-09-03 |
|
| 8 | Self-hosted offline navigation (MapLibre GL + Valhalla + PMTiles) over a cloud maps SDK | Accepted | 2026-09-03 |
|
||||||
|
|||||||
+1
-1
@@ -23,6 +23,7 @@ contracts repo, not copied into each consumer.
|
|||||||
| [project-yukart](gitea:yukart/project-yukart) | Hub: overview, roadmap, architecture |
|
| [project-yukart](gitea:yukart/project-yukart) | Hub: overview, roadmap, architecture |
|
||||||
| [orin-nano-env-setup](gitea:yukart/orin-nano-env-setup) | Jetson host bring-up |
|
| [orin-nano-env-setup](gitea:yukart/orin-nano-env-setup) | Jetson host bring-up |
|
||||||
| [app-flutter](gitea:yukart/app-flutter) | Flutter display client |
|
| [app-flutter](gitea:yukart/app-flutter) | Flutter display client |
|
||||||
|
| [contracts](gitea:yukart/contracts) | Topic namespace, payload schemas, signal registry |
|
||||||
| [svc-gw](gitea:yukart/svc-gw) | Telemetry gateway — aggregation and the HTTP surface |
|
| [svc-gw](gitea:yukart/svc-gw) | Telemetry gateway — aggregation and the HTTP surface |
|
||||||
| [svc-nav](gitea:yukart/svc-nav) | Navigation service — routing and guidance |
|
| [svc-nav](gitea:yukart/svc-nav) | Navigation service — routing and guidance |
|
||||||
| [tool-mapmint](gitea:yukart/tool-mapmint) | Map artifact minting, workstation-side |
|
| [tool-mapmint](gitea:yukart/tool-mapmint) | Map artifact minting, workstation-side |
|
||||||
@@ -32,7 +33,6 @@ contracts repo, not copied into each consumer.
|
|||||||
|
|
||||||
| Repository | Role | Why separate |
|
| Repository | Role | Why separate |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `contracts` | Topic namespace, payload schemas, Z27AG DBC | Consumed by every other repo, including non-Jetson clients; must not be duplicated |
|
|
||||||
| `svc-core` | Acquisition + processing cluster: `can-bridge`, `obd-poller`, `gnss`, `decoder`, `recorder` | Developed and deployed as one unit on the Orin |
|
| `svc-core` | Acquisition + processing cluster: `can-bridge`, `obd-poller`, `gnss`, `decoder`, `recorder` | Developed and deployed as one unit on the Orin |
|
||||||
| `app-esp32` | ESP32 RLCD/e-ink display firmware (Class B) | Embedded toolchain, flashed not deployed |
|
| `app-esp32` | ESP32 RLCD/e-ink display firmware (Class B) | Embedded toolchain, flashed not deployed |
|
||||||
| `tool-analysis` | Offline session analysis, reverse-engineering notebooks | Runs off-car, no runtime coupling |
|
| `tool-analysis` | Offline session analysis, reverse-engineering notebooks | Runs off-car, no runtime coupling |
|
||||||
|
|||||||
Reference in New Issue
Block a user