Objective
Every session — Track Day and Race, not only G-Only — must record maximum G force on
all axes, and those maxima must be available in Review afterwards.
The design consequence
logger::SessionSummaryV1 has no G-force fields at all:
schema_version, record_size_bytes, session_id, session_duration_ms, session_overrun_ms,
completion_reason, integrity, degraded_subsystems, lap_count, best_lap_index,
best_lap_duration_ns, source_*, logger_*
Adding maxima therefore means a log format schema change, which is the part that
needs designing rather than just coding:
Where the peaks come from
ui::ImuMeterController::update_peaks already maintains exactly these maxima and is
host-tested. The session recorder should consume that rather than computing maxima a
second time, or the live radar and the stored summary will eventually disagree.
This must run in Track Day and Race, not only G-Only. In Track Day the meter is not
displayed, but recording continues — the same principle as lap times, which are recorded
throughout and only withheld from the live display.
Scope
Acceptance criteria
Objective
Every session — Track Day and Race, not only G-Only — must record maximum G force on
all axes, and those maxima must be available in Review afterwards.
The design consequence
logger::SessionSummaryV1has no G-force fields at all:Adding maxima therefore means a log format schema change, which is the part that
needs designing rather than just coding:
kLogFormatVersionand add aSessionSummaryV2SummaryReadResult::unsupported_version, so the machinery exists; the decision iswhether old sessions remain reviewable or are rejected.
record_size_bytesis already carried per record, which should make asize-tolerant reader feasible — worth confirming before committing to the approach.
ui::ImuPeakSummaryalready tracks acceleration,braking, left, right, total, and the position at which total occurred. Storing that
structure keeps one definition of "peak" across the live meter and the summary.
board::ImuSamplecarries a Z axis but themeter is planar today, and kerb strikes make vertical peaks noisy and of
questionable value.
Race and considerably more data.
Where the peaks come from
ui::ImuMeterController::update_peaksalready maintains exactly these maxima and ishost-tested. The session recorder should consume that rather than computing maxima a
second time, or the live radar and the stored summary will eventually disagree.
This must run in Track Day and Race, not only G-Only. In Track Day the meter is not
displayed, but recording continues — the same principle as lap times, which are recorded
throughout and only withheld from the live display.
Scope
ImuMeterControllerinto the session recorder in all modesSessionReviewControllerand the review screensince zero is a legitimate reading and would be indistinguishable
docs/DATA_LOGGING.mdanddocs/SESSION_WORKFLOW.mdAcceptance criteria