Files
mikkeli d4bd72ab83 Adopt designed front matter: typed, with staleness on plans
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
2026-09-04 14:14:19 +09:00

40 lines
1.6 KiB
Markdown

---
type: plan
status: active
updated: 2026-09-04
---
# Initial plan
## What actually needs building
| Need | Answer | Ours? |
|---|---|---|
| A CAN bus that isn't a car | `vcan` — kernel module, no bitrate to configure | No |
| Replay real captures | `canplayer`, with frame mapping so a log recorded on `can1` plays onto `vcan0` | No |
| Traffic before any capture exists | **ICSim** — simulated cluster with speed, doors, indicators | No |
| GNSS fix | GPX or synthetic track → `yukart/gnss/fix` | **Yes**, small |
| Local broker | a mosquitto config for the workstation | Trivial |
| App boundary peer | only if the full stack proves too heavy for Flutter iteration | **Deferred** |
Two of the three fixtures are configuration, not code.
## Why ICSim matters more than it looks
Phase 2 is the hard part of this project: correlating observed frames against a
written event log to work out what the Z27AG is saying. ICSim is built for exactly
that exercise — a simulated cluster with controllable speed, doors and indicators,
and four noise levels where level 0 is clean packets and level 3 randomises
arbitration IDs and byte positions.
So the whole decode workflow can be practised, and the decoder written and tested,
before a single real capture exists. That is worth doing while the PCBs are
unassembled.
## Order
1. `vcan` bring-up script — everything else needs a bus.
2. ICSim, vendored or documented, driving `vcan0`.
3. GNSS fixture publishing `yukart/gnss/fix`.
4. Local mosquitto config, and a single entry point that brings the whole fake car up.
5. `canplayer` wrappers — only useful once Phase 1 has produced real captures.