# Lappy v0.8.0

Fixes custom circuit completion, numeric font changes and session export metadata. V2 Rev1.1 only; application-only update with the existing partition table. Saved courses, revisions, PBs/references, settings and pairing retain their formats.

## Circuit recording

- After marking S/F, a real departure arms completion: at least 50 m recorded and 30 m away. The first recorded 10 m of movement establishes direction; a parked receiver heading is not used.
- A finite forward S/F crossing completes the circuit. Returning within 3 m after a real loop also supports parking at the starting spot with a different approach heading. That path requires at least 10 m of trusted travel away from the initial road axis; a straight out-and-back cannot use it. Fresh position, continuous fixes, trusted geometry within the existing 20 m closure tolerance, minimum valid length and no unresolved GPS gaps remain required.
- Completion freezes the route/timer and automatically opens review. The course still requires the normal validation/save action and is not a timed result or PB.
- After Start, the circuit mark button becomes FINISH. It provides an explicit near-S/F completion fallback. STOP remains unconditional and can validate a near-S/F endpoint. Completed recovery checkpoints are marked finished correctly.
- Existing GPS quality, stationary suppression, gap protection, P2P recording and timing admission remain in place.

## Stable timing typography

Numeric font views reuse the existing approved glyph bitmaps with equal digit/sign advances and no numeric kerning. Font selection no longer varies with the individual digits. Elapsed layouts reserve two minute digits throughout 0:00.00–99:59.99, including the 9-to-10 minute transition; three-digit minute layouts cover the four-hour P2P limit. Track delta, Drag time and Street numeric primaries use the same stable metrics. Classic Track supporting time fields also fit their reserved formats.

## Session/VBO metadata

New LPJ4 sessions use version-2 headers and retain firmware/timing policy, a checksummed course snapshot, full route, finite gates, recording controls/positions and detailed completion/failure reasons. Bounded asynchronous course snapshots are owned and freed by the storage worker; GPS notifications still perform no filesystem I/O.

VBO retains its seven full-rate GPS columns and receiver UTC. It now includes course gates in `[laptiming]`, circuit/session information, and comments containing exact Lappy results and recording events. JSON schema 2 includes the full course route/gates, exact native result values, control events, and an explicit statement that session duration includes waiting before the timed run.

Existing version-1 archives remain readable/exportable. Missing historical gate/control information is reported as unavailable rather than reconstructed from a possibly changed course. Old exported files are not modified. Older firmware cannot interpret all new session record types; use v0.8.0 or later to export v2 archives.

## Validation and device scope

ASan/UBSan host regressions include circuit direction/proximity guards, stationary drift, true gaps, manual Finish/Stop, frozen completion, recovery and the production service/archive integration. Numeric acceptance exhausts 600,000 hundredths through 99:59.99 and renders 100/240-minute layouts. The owner's Nov-7 Custom 01 archive replays to a valid frozen circuit (replay Start is placed at the first session sample because the historical archive lacks its button event).

Five simulator suites, native V2 compilation, BLE dispatch and stack audits accompany the release. USB-only device checks use isolated synthetic circuit/SD-export and UI-thread numeric benches; these are not road accuracy or external-software import acceptance. No physical Wi-Fi connection is part of this release validation. See the matching installation/hardware report for actual on-device results.
