# Roadmap: what’s built and what isn’t

Lasto is pre-alpha. It's built in ten phases, and each one stops for my review before the next starts. A feature shows up in the docs only after its phase is signed off.

- Status: Development status. Generated from the roadmap file every time the site is built.
- Page: https://lasto.dev/roadmap/
- Last updated: 2026-10-06
- By: Chris Johnson

## At a glance

Pre-alpha: Phase 2 is done, and at the truck Lasto only listens so far.

Table 1. Phases and what they send

| Phase | What it builds | Status | Sends anything on the bus? |
|---|---|---|---|
| [Phase 0](https://lasto.dev/roadmap/#phase-0) | Plan | Done, approved 2026-09-26 | No |
| [Phase 1](https://lasto.dev/roadmap/#phase-1) | Safety core, simulator, and tests | Done, approved 2026-09-28 | No |
| [Phase 2](https://lasto.dev/roadmap/#phase-2) | Passive drive capture and storage | Done, approved 2026-10-01 | No |
| [Phase 3](https://lasto.dev/roadmap/#phase-3) | Creader-assisted mapping | Planned | No |
| [Phase 4](https://lasto.dev/roadmap/#phase-4) | Polled reads | Planned | Read-only requests |
| [Phase 5](https://lasto.dev/roadmap/#phase-5) | Broadcast decoding and DBC output | Planned | No |
| [Phase 6](https://lasto.dev/roadmap/#phase-6) | Discovery | Planned | Read-only requests, parked only |
| [Phase 7](https://lasto.dev/roadmap/#phase-7) | K-line modules and the crank profile | Planned | Decided in this phase |
| [Phase 8](https://lasto.dev/roadmap/#phase-8) | Analysis, reports, and export packs | Planned | No |
| [Phase 9](https://lasto.dev/roadmap/#phase-9) | Local web GUI | Planned | No |

Phase 4 is the first time Lasto sends anything to the truck. Everything it sends goes through the rules on the [Safety page](https://lasto.dev/safety/).

There are no target dates. Most phases end with a test at the truck, and the truck doesn't care about my calendar.

## Phase 0: Plan

**Done, approved 2026-09-26.** The questions, the architecture, and the guardrails that keep development away from real hardware.

- The architecture and file layout, with the decisions recorded up front
- Development guardrails that block anything aimed at a real PCAN channel or COM port
- A bench parts list for proving listen-only and silent mode

Table 2. Phase 0 at a glance

| Item | Detail |
|---|---|
| Status | Done, approved 2026-09-26 |
| Sends anything? | No |
| Commands | None |
| Test at the truck | None |

## Phase 1: Safety core, simulator, and tests

**Done, approved 2026-09-28.** Every rule about what can reach the truck, for both the PCAN-USB and the OBDLink MX+, written in code and tested against a simulated truck.

- The safety core: listen-only open with readback and continuous rechecks, the transmit gate and the one write function behind it, allowlists, rate limits, the kill switch, interlocks, the serial guard, and the audit log
- A simulator that stands in for the PCAN driver, the MX+, and the truck, and fails the test run if it ever receives forbidden traffic
- Unit, property-based, and structural tests, with the test command set to fail below 100 percent branch coverage on the safety core
- A command-line skeleton where every command says which phase delivers it

Table 3. Phase 1 at a glance

| Item | Detail |
|---|---|
| Status | Done, approved 2026-09-28 |
| Sends anything? | No |
| Commands | None |
| Test at the truck | None. Nothing in this phase touches the truck. |

## Phase 2: Passive drive capture and storage

**Done, approved 2026-10-01.** Record everything on the high-speed CAN bus in listen-only mode, and keep it safe through a pulled cable or a crash.

- `lasto drive`: passive capture in armed mode, where the first frame starts a session and 60 seconds without one ends it
- Storage: compressed candump segments and a SQLite capture database. The next start recovers what a crash or power loss left, and a pulled adapter cable ends the run with every frame it heard kept, unless it's plugged back in within a few seconds
- `lasto log`: the session list, each session's events and audit log, per-ID bus statistics, and one ID's raw frames
- Two safety core changes: on real hardware the audit log must be the kind that syncs each record to disk, and records held while no log is open go to a file too
- A service layer the command line and the Phase 9 GUI both build on
- The serial guard installed before every command except the GUI

Table 4. Phase 2 at a glance

| Item | Detail |
|---|---|
| Status | Done, approved 2026-10-01 |
| Sends anything? | No |
| Commands | `lasto drive`, `lasto log` |
| Test at the truck | Done 2026-09-30 to 10-01: key off, key on with the engine off, and a drive. Listen-only held on every run, with no error frames or overruns. |
| Docs it added | [Passive capture](https://lasto.dev/docs/passive-capture/) |

**Open:** Deleting old raw data comes after Phase 5, under a 20 GB budget. Until then nothing is deleted, and lasto drive warns as it starts if the disk has under 2 GB free or the data folder is over budget.

## Phase 3: Creader-assisted mapping

**Planned.** Listen while the Launch Creader asks the truck for data, then match the raw answers to the numbers on its screen.

- Conversation capture on CAN, and on the K-line through the MX+ in silent mode
- A reference template you fill in with the values the Creader shows
- A solver that finds byte positions, scale, and offset, and ranks the candidates
- Definitions files for the signals that check out

Table 5. Phase 3 at a glance

| Item | Detail |
|---|---|
| Status | Planned |
| Sends anything? | No |
| Commands | `lasto map`, `lasto verify` |
| Test at the truck | A Creader engine data stream, then a KDSS data stream. |
| Docs it adds | Mapping signals with your scan tool |

**Open:** An independent review of the serial guard, before any MX+ code touches hardware. Since Phase 2 it also covers SQLite opening its own files, the two audit files the safety core opens by name, and when the CLI installs the guard.

**Open:** Whether the Creader Elite V3.0 T reaches the KDSS module on a 2006 GX470.

**Open:** How the stability control's steering angle reading relates to 0x025, provisionally the steering angle sensor Phase 2 found, for trouble code C1777.

## Phase 4: Polled reads

**Planned.** The first phase where Lasto sends anything: read-only diagnostic requests for data the truck may not broadcast, like transmission temperature.

- Identify: VIN, calibration IDs, and module names
- A parked health snapshot: trouble codes, freeze frames, readiness, and Mode 06 results
- Logging profiles, including one for long grades
- A live view with alarms: transmission 220 °F warning and 240 °F critical, coolant 225 and 235 °F, voltage below 12.5 V or above 15.0 V while running
- The Ctrl+Alt+K hotkey wired into polled sessions

Table 6. Phase 4 at a glance

| Item | Detail |
|---|---|
| Status | Planned |
| Sends anything? | Read-only requests |
| Commands | `lasto snapshot`, `lasto identify`, `lasto view`, `lasto drive --profile` |
| Test at the truck | Parked first, then a drive with the grades profile. |
| Docs it adds | Polled reads and logging profiles |

**Open:** Before the first polled test at the truck: wire in the Ctrl+Alt+K hotkey, handle a kill listener that raises (L2), close two audit log gaps from the Phase 2 review (L6 and L7), and add the 17 IDs the truck broadcasts to the gate's list of IDs it never sends on.

**Open:** Saving and reporting on a kill, through the stop path Phase 2 built.

## Phase 5: Broadcast decoding and DBC output

**Planned.** Decode what the truck broadcasts on its own, and write it out as a DBC file other CAN tools can open.

- Decoders for the broadcast IDs found in Phase 2
- A DBC file for the GX470
- Re-decoding old sessions with newer definitions

Table 7. Phase 5 at a glance

| Item | Detail |
|---|---|
| Status | Planned |
| Sends anything? | No |
| Commands | `lasto decode` |
| Test at the truck | Set when the phase starts. |
| Docs it adds | Broadcast decoding |

## Phase 6: Discovery

**Planned.** A parked-only search for data the Creader never asks for, at 5 requests per second, with the motion interlock and battery guard on.

- Identifier sweeps of approved modules, never airbag or immobilizer modules
- Results that get reviewed before any new module address is approved

Table 8. Phase 6 at a glance

| Item | Detail |
|---|---|
| Status | Planned |
| Sends anything? | Read-only requests, parked only |
| Commands | `lasto discover` |
| Test at the truck | Set when the phase starts. |
| Docs it adds | Discovery |

**Open:** How many 'not supported' answers discovery tolerates before it stops.

## Phase 7: K-line modules and the crank profile

**Planned.** Reach modules on the K-line (pin 7) if the Phase 2 and 3 captures show it's worth it, and log battery voltage during engine start through the MX+.

- An STN transport for K-line modules, if approved
- A crank profile for battery voltage during engine start

Table 9. Phase 7 at a glance

| Item | Detail |
|---|---|
| Status | Planned |
| Sends anything? | Decided in this phase |
| Commands | None |
| Test at the truck | Set when the phase starts. |
| Docs it adds | K-line modules |

**Open:** Starting a K-line session needs StartCommunication (0x81), which isn't on the allowlist. Whether to allow it gets decided here, as its own safety core change.

## Phase 8: Analysis, reports, and export packs

**Planned.** Charts, session reports, and export packs you can open in other tools.

- Session reports with charts
- Export packs: CSV, Parquet, and a summary JSON

Table 10. Phase 8 at a glance

| Item | Detail |
|---|---|
| Status | Planned |
| Sends anything? | No |
| Commands | `lasto report`, `lasto export` |
| Test at the truck | Set when the phase starts. |
| Docs it adds | Reports and exports |

## Phase 9: Local web GUI

**Planned.** An app in your browser for reviewing drives, mapping signals, and managing definitions, built on the same code as the command line. It never sends anything to the truck, and it only answers the laptop it runs on.

- 9a: read-only browsing of sessions, charts, and health history
- 9b: the mapping workbench and a broadcast explorer
- 9c: the definitions library, a read-only live monitor, and settings
- Start and stop for a passive capture, the only thing it does with hardware

Table 11. Phase 9 at a glance

| Item | Detail |
|---|---|
| Status | Planned |
| Sends anything? | No |
| Commands | `lasto gui` |
| Test at the truck | Set when the phase starts. |
| Docs it adds | The local GUI |

## Not on the roadmap

- Other vehicles, for now. The GX470 comes first.
- Mac and Linux. Lasto loads PEAK's Windows driver directly and uses Windows APIs for the Ctrl+Alt+K hotkey.
- Anything that writes to the truck, ever. That's what the scan tool is for.

## Following along

This page is generated from one data file in the repository every time the site is built, and it updates when a phase is signed off. To follow along, watch the repository on GitHub.
