084960e41e
Replaces `type: default` — one value across every document, read by nothing, so it discriminated nothing. Types are now reference, guidelines, plan and report, applied to every markdown file with no exceptions for the hub. Plans carry status and updated, reports carry date. REPOS.md already noted that plans go stale and reports do not, but nothing made that visible: a plan from months ago looked identical to one written today. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013kj58Jugkic783b8ZrtTVZ
54 lines
2.0 KiB
Markdown
54 lines
2.0 KiB
Markdown
---
|
|
type: plan
|
|
status: active
|
|
updated: 2026-09-04
|
|
---
|
|
# Initial plan
|
|
|
|
## Scope
|
|
|
|
Turn a GNSS fix plus a destination into guidance on the bus. Nothing about
|
|
rendering — that belongs to the display client.
|
|
|
|
## Order
|
|
|
|
1. Confirm Valhalla builds and runs on the Jetson (arm64). This is the one real
|
|
integration risk in the whole navigation workstream — upstream's arm64
|
|
container story is unsettled. Do it before anything else.
|
|
2. Stand up Valhalla against artifacts from `tool-mapmint`, serving HTTP locally.
|
|
3. Define the routing provider interface, with Valhalla as the first implementation.
|
|
4. Bridge: subscribe to `yukart/gnss/fix`, publish `yukart/nav/guidance`.
|
|
5. Meili map matching over recorded sessions — see below.
|
|
|
|
## Why map matching comes early
|
|
|
|
Meili's `trace_attributes` snaps a recorded GNSS trace onto OSM and returns road
|
|
attribution along it: speed limit, road class, geometry. That is ground truth for
|
|
validating reverse-engineered CAN signals, which is otherwise guesswork. It is
|
|
worth having before any navigation UI exists.
|
|
|
|
## Blocked on
|
|
|
|
Live guidance needs a GNSS fix, which needs gpsd, which needs the SIM7600 brought
|
|
up in [orin-nano-env-setup](gitea:yukart/orin-nano-env-setup). Everything else here
|
|
can be built and validated against a replayed trace.
|
|
|
|
## Links
|
|
|
|
| Link | Shape | Initiator |
|
|
|---|---|---|
|
|
| `yukart/gnss/fix` | subscribe | — |
|
|
| `yukart/nav/{guidance,route}` | publish, retained | — |
|
|
| Route requests | request/response, HTTP | `svc-gw` |
|
|
| Cloud routing API, if used | request/response | this service, outbound only |
|
|
|
|
`svc-nav` never talks to a display. Guidance reaches the app as bus state via
|
|
`svc-gw`, and route requests arrive proxied. Nav does not know displays exist.
|
|
|
|
## GNSS is scaffolding for now
|
|
|
|
The PCBs are not assembled, so there is no real fix yet. Positions come from a
|
|
replayed trace publishing `yukart/gnss/fix` with the **real schema** — see the
|
|
fixtures rule in [ARCHITECTURE.md](gitea:yukart/project-yukart). Everything
|
|
downstream is then identical when the hardware lands.
|