Cycle detail

v0.14.4 — Story coverage.

Shipped 2026-07-31. Four slices merged: 52 unit tests for the diagnostic-story generator and anonymiser, CLAUDE.md hardware-and-timing invariants refresh, ROADMAP v0.3.0 historical audit, and a CI workflow fix for missing Tauri Linux system dependencies.

v0.14.4Shipped 2026-07-314 slicesTier A complete

In scope

v0.14.4 was the “Story coverage” cycle. The headline work was a 52-test suite for the diagnostic-story generator (src-tauri/src/story.rs) and the anonymiser (src-tauri/src/anonymize.rs). The plan doc is at docs/v0.14.4_plan.md in the project repo.

Slices

PR #201 — 52 unit tests for story.rs and anonymize.rs (Tier A, headline)

The diagnostic-story generator produces a per-vehicle diagnostic report from the fault memory snapshot. The anonymiser strips VIN, mileage and other identifiers from a snapshot before sharing it. Before this PR both modules had zero test coverage; after this PR they have 52 tests and a deterministic coverage of the public surface.

story.rs (32 tests)

  • Severity bucketing + ordering.
  • priority_for across the severity buckets.
  • parse_cost_range handling single values, tilde, hyphen, en-dash, whitespace, empty, and garbage.
  • format_vehicle across empty, VIN-only, mileage-only, and decoded inputs.
  • build_context freeze-frame string assembly.
  • The full generate() pipeline against the live community knowledge base.
  • Cost range sum, cost-max invariant, DTC code case-insensitive lookup, summary text counts, title format.

anonymize.rs (20 tests)

  • hash_vin properties: 16 hex chars, stable across calls, distinct across inputs, case-sensitive (pinned as an invariant test).
  • The full anonymize() pipeline: VIN never leaks, fingerprint substitution, missing VIN to unknown fingerprint, engine_family preserved, modules / DTCs / freeze frames preserved, mileage stripped, empty modules, fault_count None to 0, live_data always empty.
  • export_json: no VIN / mileage leak, pretty-printed, serde round-trip.

Test count went from 149 to 201 in cargo test --lib --offline.

PR #198 — CLAUDE.md “Hardware and timing invariants” refresh (Tier A)

Four stale “NOT YET IMPLEMENTED” / “migration in progress” claims were wrong against main. Refreshed to “INVARIANT — enforced” with citations:

  • Async commands: migration complete (24 sync #[tauri::command] are in-memory / local-fs helpers gated by tests/async_commands.rs::SYNC_ALLOWLIST).
  • Tester Present keep-alive: shipped in src-tauri/src/keepalive.rs (3000 ms interval, [0x3E, 0x00] frame).
  • ISO-TP multi-frame: shipped in src-tauri/src/transport/isotp.rs (430 LOC, FF/CF/FC state machine).
  • VIN reads: protocol::read_vin shipped at src-tauri/src/protocol/mod.rs:296; all callers in commands.rs route through it.
  • ENET/DoIP UDP discovery remains honestly not implemented.

PR #200 — ROADMAP.md v0.3.0 historical audit (Tier A)

Six items in the v0.3.0 “Real Car” historical section were marked “๐ŸŸข Ready” but had actually shipped. Moved to a new “โœ… Done — historical (shipped)” table with PR references and code locations:

  • KWP2000 slow-module timeout (PR #153) → โœ… Done in v0.13.0
  • ISO-TP multi-frame (PR #198) → โœ… Done in v0.14.x
  • Dark/light theme toggle (PR #109) → โœ… Done in v0.7.0
  • Gauge theming (PR #109) → โœ… Done in v0.7.0
  • Save/load workspace layout (PR #109) → โœ… Done in v0.7.0
  • Export PNG/SVG from charts (PR #136) → โœ… Done in v0.11.0

Honest ๐ŸŸก items (ENET/DoIP, BLE, WiFi, CAN bus listener, Mobile-responsive, real-car validation) left alone — they’re still genuinely pending.

PR #199 — ci.yml::test-rust missing Tauri Linux system dependencies (Tier A, CI workflow)

The CI & Autonomous Merge workflow’s test-rust job ran cargo test on a bare ubuntu-latest runner that lacked Tauri’s Linux system libraries (glib, gtk, webkit2gtk-4.1). The build failed in 20 s on every PR. Mirrored the apt-get install step from test.yml::rust into ci.yml::test-rust.

What this cycle did NOT ship

  • No transport/** changes. The K+DCAN / ENET/DoIP paths were not touched.
  • No protocol/** changes.
  • No frontend changes (JS, HTML, CSS).
  • No community data changes.
  • No git tag v0.14.4 in this cycle — that is the Tier C release cut.

v0.14.4 questions

When was v0.14.4 shipped?

2026-07-31. The four slice PRs (#198, #199, #200, #201) all merged before the cycle closed. The version-cut PR (bumping Cargo.toml, tauri.conf.json, package.json, README badge) is a separate Tier C step.

Why is the test count delta the headline number?

Because the 52 new tests cover public functions that previously had no test coverage. The headline-PR (#201) is what makes the rest of the cycle “covered.”

Where is the plan doc?

github.com/ohgeeceee/beemuu/blob/main/docs/v0.14.4_plan.md

Read the plan.

Each cycle ships a plan doc. The v0.14.4 plan is on the project repo.

v0.14.4 planChangelog

Last updated: 2026-08-02 ยท Beemuu contributors