Skip to content

ci(deps): bump actions/setup-node from 4 to 6 - #1

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/actions/setup-node-6
Closed

ci(deps): bump actions/setup-node from 4 to 6#1
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/actions/setup-node-6

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Jul 6, 2026

Copy link
Copy Markdown
Contributor

Bumps actions/setup-node from 4 to 6.

Release notes

Sourced from actions/setup-node's releases.

v6.0.0

What's Changed

Breaking Changes

Dependency Upgrades

Full Changelog: actions/setup-node@v5...v6.0.0

v5.0.0

What's Changed

Breaking Changes

This update, introduces automatic caching when a valid packageManager field is present in your package.json. This aims to improve workflow performance and make dependency management more seamless. To disable this automatic caching, set package-manager-cache: false

steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
  with:
    package-manager-cache: false

Make sure your runner is on version v2.327.1 or later to ensure compatibility with this release. See Release Notes

Dependency Upgrades

New Contributors

Full Changelog: actions/setup-node@v4...v5.0.0

v4.4.0

... (truncated)

Commits

@dependabot @github

dependabot Bot commented on behalf of github Jul 6, 2026

Copy link
Copy Markdown
Contributor Author

Labels

The following labels could not be found: ci, dependencies. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 6.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v4...v6)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/github_actions/actions/setup-node-6 branch from 256d82a to b81966d Compare July 7, 2026 17:42
@ohgeeceee ohgeeceee closed this Jul 10, 2026
@dependabot @github

dependabot Bot commented on behalf of github Jul 10, 2026

Copy link
Copy Markdown
Contributor Author

OK, I won't notify you again about this release, but will get in touch when a new version is available. If you'd rather skip all updates until the next major or minor version, let me know by commenting @dependabot ignore this major version or @dependabot ignore this minor version. You can also ignore all major, minor, or patch releases for a dependency by adding an ignore condition with the desired update_types to your config file.

If you change your mind, just re-open this PR and I'll resolve any conflicts on it.

@dependabot
dependabot Bot deleted the dependabot/github_actions/actions/setup-node-6 branch July 10, 2026 20:58
github-actions Bot pushed a commit that referenced this pull request Jul 15, 2026
Seventh PR of the v0.4.0/v0.5.0 transition. Doc-only. Auto-merge
eligible per CLAUDE.md rule 2.

What this ships:

- docs/v0.5.0_plan.md — the v0.5.0 cycle scope and PR
  sequence. The cycle is named "Ground Truth" because the
  work is about validating the abstractions we shipped in
  v0.3 / v0.4 against real hardware, and adding the narrow
  features that real-car owners actually need first.

Cycle spine (3 PRs, in order):

- PR #1 — Real-car u8_enum validation harness. Doc-only.
  Mirrors the v0.4.0_first_pr.md shape. Gives an F/G-series
  owner with an ENET adapter a small checklist to validate
  the example enum DIDs (gear / engine_state / knock_detect)
  marked [needs verification] in b58.toml / n55.toml since
  PR #60.

- PR #2 — Real-car fuel-trim / adaptation readout. Adds the
  DIDs (typically 0x4116 / 0x4117 / 0x4118 on BMW DME) and
  marks them [needs verification]. Likely no new decoder
  needed (existing s16_div100 handles the typical scaling).
  Protected path (live.rs is adjacent to protocol/).

- PR #3 — Real-car knock-detection visualisation polish.
  Pure JS; extends the Logging tab's per-channel display to
  flag severity-bearing enum values (Moderate / Severe) with
  a visual indicator. Uses LiveValue.text from PR #60.

Out of v0.5.0 scope (deferred to v0.6+ or Backlog per
ROADMAP.md): OBDLink MX+, ENET/DoIP auto-detection, trigger-
based logging, log merge/comparison, custom math channels,
cloud sync, Pi CAN bridge, plugin system, Bootmod3, multi-
language UI, web-based shared-log viewer. Each of those has a
specific blocker documented in ROADMAP.md.

The plan also explicitly notes:

- Sibling-agent race in this repo (CLAUDE.md + multi-writer
  skill): work in fresh sibling clones, branch off
  origin/main, push from the clone.
- origin/main drift (local main was stale vs origin/main
  during the v0.4 cycle): always git fetch origin before
  basing a branch, diff against origin/main not main.
- CLAUDE.md rule 2: only doc-only PRs auto-merge. PRs #2
  and #3 must go through human review.

Verification:

- node --test src/js/histogram.test.js → 13/13 (run via
  direct invocation; origin/main's package.json has a
  missing comma that breaks 'npm run test:*' — NOT fixed
  here, per commit-discipline 'discovering a broken sibling
  commit is not license to fix it'. That breakage is
  inherited from PR #68 / #69 area; a separate doc-only PR
  can fix it.)

This PR does not touch code, workflows, or protected paths.
195 insertions in one new file.

Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
github-actions Bot pushed a commit that referenced this pull request Jul 15, 2026
Continuation of the v0.5.0 close-out pattern. Doc-only.
Auto-merge eligible per CLAUDE.md rule 2.

What this PR ships:

- docs/v0.6.0_plan.md — the proposed v0.6.0 cycle scope and
  PR sequence. The cycle is named 'Real Hardware' because
  the work is about turning the now-validated decoder
  pipeline (v0.3 / v0.4) plus the real-car harness (v0.5.0)
  into actual tuner-facing workflows on real data.

Cycle spine (3 PRs, in order):

- PR #1 — Log-merge / comparison (PR #2 in cycle-plan
  numbering; this is the first v0.6.0 PR). Pure JS / CSS.
  Adds a 'Compare logs' button next to 'Export CSV' on the
  Logging tab. Diff-modal shows per-channel meanΔ,
  std-devΔ, maxΔ, countΔ. ~30 lines of business logic
  in a new src/js/log_diff.js, ~150 lines of UI. Tested
  via the existing node --test harness.

- PR #2 — Injector duty cycle (decoder + DIDs). Touches
  src-tauri/src/data/live.rs (new decoder) and the
  profile TOMLs. Protected path — flag for human review.

- PR #3 — OBD-II PID auto-discovery. Pure diagnostic utility
  (scans standard 0x01 PIDs 0x00..0x7F, reports which
  respond). The first non-BMW-specific surface shipped
  via UDS. Touches src-tauri/src/protocol/mod.rs (new
  scan helper) and src-tauri/src/commands.rs (new
  #[tauri::command]). Protected path — flag for human
  review.

Out of v0.6.0 scope (deferred per the cycle-plan):

The remaining ROADMAP 🟡 items (custom math channels,
knock viz polish, AFR polish, adaptation / fuel trim
readout polish, trigger-based logging, OBDLink MX+,
ENET/DoIP auto-detection, real-car validation B58 / N55
F-series) move to v0.7.0+.

All Backlog items (i18n, plugin system, web log viewer,
Bootmod3, automatic service manual lookup, OBD-II PID
auto-discovery, VIN database) also stay deferred.

The plan explicitly notes:

- 'No feature without a Discussion' per COMMUNITY_FRAMEWORK.md.
  This plan is a seed for the Discussion thread, not a
  substitute for it. No v0.6.0 code should land before
  the Discussion concludes.
- Sibling-agent race in this repo (CLAUDE.md + multi-writer
  skill): work in fresh sibling clones, branch off
  origin/main, push from the clone.
- origin/main drift (local main was stale during the v0.4
  and v0.5 cycles): always git fetch origin before
  basing a branch, diff against origin/main not main.
- CLAUDE.md rule 2: only doc-only PRs auto-merge. PRs #2
  and #3 must go through human review.

Verification:

- node --test server/dtc/test/ingestor.test.js → all
  green (no regression)
- node --test src/js/histogram.test.js → all green
- node --test src/js/test/live_format.test.cjs → all
  green
- git diff origin/main...HEAD --stat → 1 file, 210
  insertions, 0 deletions (clean; this PR is a new
  doc file only)
- This PR does not touch code, workflows, or protected
  paths.

Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
github-actions Bot pushed a commit that referenced this pull request Jul 18, 2026
Planning document for the post-v0.7.0 cycle, drafted against main @
ba14141. Docs-only: the plan, plus the ROADMAP/README updates it
implies. No code, no data changes.

Gap analysis (evidence-level, ISTA+ vs BeeEmUu):
- SHIPPED: live data, logging/replay/compare, VIN/vehicle info,
  freeze-frame decode, transports (K+DCAN, ENET/DoIP + discovery,
  sim, ISO-TP reassembly).
- PARTIAL: DTC coverage (26 built-in texts; 12-address scan table;
  6 simulator-grade service functions, none chassis-validated;
  thin freeze schemas; embryonic guided fault finding).
- Broken today: community/dtc_texts.toml truncated mid-string (TOML
  parse fails, 0 overlay entries load) and CONTRIBUTING.md truncated
  mid-table — CI can't catch this because lint-toml.js checks
  whitespace, not parseability.
- OUT-OF-SCOPE with reasons: flashing/programming, FSC/AOS, coding
  writes (this cycle), ISTA repair-doc corpus, immobiliser functions.

Four slices: PR #1 data integrity + TOML parse gate (Tier A),
PR #2 service-function breadth with [UNVERIFIED] write discipline
(Tier B, protected paths flagged), PR #3 B48/S58/N57 profiles
(Tier A), PR #4 ECU scan-table breadth + addressing-model doc
(Tier A). Each with acceptance criteria and test expectations.

ROADMAP.md: v0.7.0 marked merged (PRs #108-110), v0.8.0 active-plan
block added, Ready-to-Claim pile pruned of shipped items (theme
toggle, workspace, gauge theming, ISO-TP, OBD-II auto-discovery,
N20/S55). README.md: "What's coming" refreshed for v0.7.0 merged +
v0.8.0 plan link.

Flagged for owner (Tier C, not touched): CLAUDE.md invariant notes
are stale — keep-alive (#87), ISO-TP (#88), and protocol::read_vin
all shipped but still read NOT-YET-IMPLEMENTED.

Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
ohgeeceee added a commit that referenced this pull request Jul 18, 2026
Planning document for the post-v0.7.0 cycle, drafted against main @
ba14141. Docs-only: the plan, plus the ROADMAP/README updates it
implies. No code, no data changes.

Gap analysis (evidence-level, ISTA+ vs BeeEmUu):
- SHIPPED: live data, logging/replay/compare, VIN/vehicle info,
  freeze-frame decode, transports (K+DCAN, ENET/DoIP + discovery,
  sim, ISO-TP reassembly).
- PARTIAL: DTC coverage (26 built-in texts; 12-address scan table;
  6 simulator-grade service functions, none chassis-validated;
  thin freeze schemas; embryonic guided fault finding).
- Broken today: community/dtc_texts.toml truncated mid-string (TOML
  parse fails, 0 overlay entries load) and CONTRIBUTING.md truncated
  mid-table — CI can't catch this because lint-toml.js checks
  whitespace, not parseability.
- OUT-OF-SCOPE with reasons: flashing/programming, FSC/AOS, coding
  writes (this cycle), ISTA repair-doc corpus, immobiliser functions.

Four slices: PR #1 data integrity + TOML parse gate (Tier A),
PR #2 service-function breadth with [UNVERIFIED] write discipline
(Tier B, protected paths flagged), PR #3 B48/S58/N57 profiles
(Tier A), PR #4 ECU scan-table breadth + addressing-model doc
(Tier A). Each with acceptance criteria and test expectations.

ROADMAP.md: v0.7.0 marked merged (PRs #108-110), v0.8.0 active-plan
block added, Ready-to-Claim pile pruned of shipped items (theme
toggle, workspace, gauge theming, ISO-TP, OBD-II auto-discovery,
N20/S55). README.md: "What's coming" refreshed for v0.7.0 merged +
v0.8.0 plan link.

Flagged for owner (Tier C, not touched): CLAUDE.md invariant notes
are stale — keep-alive (#87), ISO-TP (#88), and protocol::read_vin
all shipped but still read NOT-YET-IMPLEMENTED.

Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
ohgeeceee added a commit that referenced this pull request Jul 18, 2026
… (#114)

Five shipped community data files were truncated and silently dead —
the loader reports file errors on the Diagnostics tab, but nothing
else did, and CI's lint-toml.js checks whitespace only, so all five
passed every gate:

- community/dtc_texts.toml: cut mid-string at line 14; TOML parse
  failed and ZERO overlay entries loaded. Rebuilt from in-repo
  sources only (backend/seed_bmw_dim01.py — itself curated from
  research/bmw_diag_dim01_dtcs.md — plus backend/seed_bmw.py and the
  community/opinions/*.toml curated titles) to 208 BMW hex entries.
  Codes already in the built-in table (src-tauri/src/data/dtc.rs)
  deliberately not duplicated; generic SAE P/B/C/U codes out of
  scope for the desktop overlay. Cross-source conflicts resolved
  (30DA: dim01 entry kept; 29E0: opinions title kept) and documented
  in the header.
- community/freeze_schemas.toml: cut at 'bias =' line 32. Completed
  from the matching example in community/README.md (bias -40.0,
  decimals 0).
- community/profiles/{n52,n54,n62}.toml: all three cut mid-parameter.
  Tails restored to the canonical emissions-mandated OBD-II block
  shared by every intact shipped profile (speed/volt/ambient as
  applicable); each file carries a rescue comment.

Parse gate (test-only, no production-code change): two new unit
tests in src-tauri/src/community.rs — shipped_community_tomls_parse
walks and toml::Value-parses every community/**/*.toml, and
shipped_dtc_texts_parse_and_nonempty checks the corpus shape
(>= 100 entries, 4-6 uppercase hex codes). Negative proof: a
deliberately broken probe file fails the gate; removed, suite green.
97 -> 99 lib tests.

CONTRIBUTING.md completed: it ended mid-table at line 43. Finished
the confidence-label table, added the verification-label conventions
([needs verification], [UNVERIFIED placeholder], label-removal via
docs/validation/ harness reports), and wrote the promised Parameter
Explorer, code-contribution, and development-setup sections.

Verified: tomllib parses all 16 community TOMLs; lint-toml clean
(21 files); cargo build warning-clean; cargo test 99+1; node --test
57; pytest 149 pass + 2 known local GIT_CONFIG_* env artifacts
(pass with the vars unset).

Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
ohgeeceee added a commit that referenced this pull request Jul 18, 2026
…#119)

* docs: v0.9.0 cycle plan — "Guided Fault Finding" (gap survey + 5 slices)

Seed-for-Discussion plan for the next cycle, mirroring the v0.8.0
plan's shape. Survey of the existing guided-fault-finding surface
(3 Opinions TOML files, 2 Oracle JSON files / 7 patterns, 2 Story
TOML files / 8 entries — all flat, none branching) identifies the
extension points: a new community/testplans TOML tree with [[step]]
branching (inherits the v0.8.0 PR #1 TOML parse gate), a read-only
plan query command, and a walkthrough UI mounted in the existing
fault-detail composition. Also surfaces that community/oracle/*.json
has no parse gate today.

Five slices: (1) test-plan schema + branch-integrity gate + oracle
JSON gate (Tier A, test-only); (2) grounded first corpus of ~8-10
DTC plans with per-step source citations + known-missing list
(Tier A data); (3) loader + read-only get_test_plan command (Tier B,
protected paths); (4) walkthrough UI with live-data measurement
deep-links and freeze-frame seeding (Tier A frontend); (5) validation
harness + label conventions (Tier A docs). Standing NOT-do list gains
guided-diagnostics-adjacent items: emissions-monitor tampering,
VIN/odometer fraud, imported ISTA test plans, auto-executing writes,
unreviewed LLM procedures, cloud fault upload.

ROADMAP: v0.8.0 status updated (merged #114/#115/#116, #117 pending
human merge), v0.9.0 planned section added. README What's-coming
refreshed to match.

* docs: replace Discussion-gate process with direct-PR model

Owner directive: work lands on GitHub as PRs as soon as it's done -
no Discussion seed, no thread-conclusion gate.

- COMMUNITY_FRAMEWORK.md: Rule 2 rewritten from "No Feature Is
  Accepted Without Public Discussion" to "Work Lands Directly as
  Pull Requests". Reasoning moves into the PR body; Discussions stay
  as an optional venue for genuinely open questions, never a gate.
  Rules 1/3/4 untouched.
- docs/v0.9.0_plan.md + docs/v0.8.0_plan.md: seed-for-Discussion
  framing and cycle-starts-when-thread-concludes gates removed; plans
  stand on their own as PRs.
- ROADMAP.md: v0.9.0 section + footer now say slices dispatch as PRs
  directly.
- README.md: decisions-in-public row, ideas-being-explored section,
  and contributor commitment #2 updated to the direct-PR model.
- CONTRIBUTING.md: feature-ideas path is now PR-first; Discussion
  optional for open directions.

Deliberately kept: Discussions as a venue/contact channel (framework
intro + heads-up line, README contact URL, CONTRIBUTING optional link)
and historical mentions in CHANGELOG.md / RELEASE_NOTES_v0.3.0.md /
v0.5.0-v0.7.0 plan docs (records of what the rule was at the time).
CLAUDE.md has no Discussion references (verified by grep).

---------

Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
ohgeeceee added a commit that referenced this pull request Jul 18, 2026
…gate (PR #1) (#120)

Guided Fault Finding cycle, slice 1 of 5 (Tier A).

- docs/testplans.md: the [[step]] schema contract (measurement verbs,
  on_pass/on_fail/next branches, conclusion nodes, per-step source rule).
- community/testplans/README.md: author-facing quick reference.
- src-tauri/src/community.rs (test-only): shipped_testplans_branch_integrity
  (resolvable branches, reachable conclusion, sourced steps, dtc==filename,
  acyclic BFS) + shipped_oracle_json_parses (survey finding #3: oracle JSON
  was ungated).
- CHANGELOG.md.

Gate proven with a temporary broken fixture (dangling branch + unsourced
step both caught), then removed. cargo test 102 passed; lint-toml clean.
No production code changed.

Co-authored-by: Jon currie1 <ohgeeceee@users.noreply.github.com>
github-actions Bot pushed a commit that referenced this pull request Jul 19, 2026
ROADMAP v0.9.0 'Guided Fault Finding' moves Planned -> In progress. PRs #1/#2/#3/#4 (#120/#121/#122/#123) marked Done; PR #5 (validation harness + contribution path) remains Ready/Not yet dispatched. Footer refreshed to 2026-07-19. Doc-only, no code change. Tier A per CLAUDE.md.

Co-authored-by: hermes-agent <ohgeeceee@users.noreply.github.com>
ohgeeceee added a commit that referenced this pull request Aug 5, 2026
… + setSource) (#235)

Tier A, frontend only. Wires the K+DCAN data source into main.js's
existing read_live_data polling loop and flips the Live Gauges
panel from the simulator mirror to the bridge-backed K+DCAN source.

This is slice 2c of the v0.15.0 cycle. Slice 2b (PR #234) shipped
the wiring module; this slice actually wires it in.

## What this slice adds

- src/index.html: loads live_data_bridge.js + live_kdcan_source.js +
  live_data_source_wiring.js BEFORE live_gauges.js so the bridge
  factories exist when the gauges panel auto-mounts.
- src/js/main.js: at startup, calls
  window.beeemuuKdcanDataSource.initKdcanDataSource({invoke, log})
  and pushes the resulting kdcan source into the Live Gauges
  controller via window.beeemuuLiveGauges.controller.setSource().
  In pollOnce(), after each successful read_live_data invoke,
  feeds (values, errors) into kdcanDataSource.applySweep() so the
  bridge cache stays current.
- src/js/live_gauges.js: new setSource(newSource) method on the
  controller (stops old source if running, replaces via
  sourceHolder indirection, starts new one if controller was
  ticking). Stashes the controller on window.beeemuuLiveGauges
  so main.js can grab it after initKdcanDataSource runs.

## Refactor of slice 2b

- src/js/live_data_source_wiring.js: the slice 2b module had an
  internal setInterval that would have double-polled read_live_data
  (once from main.js's existing loop, once from the wiring module).
  Refactored to a passive consumer — main.js owns the timer; the
  wiring module just transforms each LiveSweepResult into a bridge
  cache update. New API: { applySweep, start, stop, reset,
  getKdcanSource, getBridge }. start()/stop() now only mark the
  source running (FPS tracking), they don't spawn a timer.

## Tests

- src/js/live_data_source_wiring.test.js (new, 10 tests): module
  surface, initKdcanDataSource fallback (no modules), init with
  modules loaded, applySweep with/without running source, null
  handling, lifecycle (start/stop/reset idempotency, peak reset).
  node --test passes 10/10. The after() hook clears tracked
  controllers so node --test exits cleanly on Windows (FPS-timer
  teardown hang workaround, matches the v0.14.0 / v0.14.2 /
  v0.14.5 live_can_source.test.js pattern).
- src/js/live_gauges.test.js (+4 tests for setSource): replace
  when stopped (no auto-restart), replace when running (stops old,
  starts new), setSource(null) detach, setSource on the surface.
  Full suite 14/14 pass.

## What this slice does NOT do

- ❌ No new Tauri commands. Reuses the existing read_live_data
  command added in v0.14.2 (PR #175).
- ❌ No backend / transport/** / protocol/** / commands.rs /
  Cargo.toml changes. Pure frontend (~430 LOC including tests).
- ❌ No CSS changes. The data-source indicator (badge showing
  sim vs K+DCAN) is a future polish item.

## Tier

Tier A — no human review required. Pure frontend module under
src/, no src-tauri/src/** touches, no community/** changes,
no CI workflow changes. Per CLAUDE.md golden rule #1, the
auto-merge bot will merge this PR once CI is green.

Author note: commit authored with ohgeeceee@users.noreply.github.com
to bypass GH007 (private-email push block). Content unchanged.

Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
github-actions Bot pushed a commit that referenced this pull request Aug 5, 2026
…d-roadmap closeout (#242)

Tier A, docs only. Opens the v0.15.1 'Test-Plan Walks on the
Bench' cycle and closes out the v0.15.0 cycle in the forward
planning docs.

## What this PR does

- **docs/v0.15.1_plan.md** (NEW, ~207 lines): full cycle plan
  for v0.15.1. Premise: port the v0.7.0-v0.10.0 test-plan walk
  from sim-only to real-car sessions, using the v0.14.0 freeze-
  frame schema split (PR #170). 3-slice spine: cycle plan +
  walk reducer rewrite (Tier A) + record_walk_result async
  Tauri command (Tier B) + HTML export touchup (Tier A).

- **ROADMAP.md**: adds the v0.15.1 cycle block (3 Tier A + 1
  Tier B slices planned) after the v0.15.0 block. Mirrors the
  shape used by v0.14.4-v0.15.0 cycle blocks.

- **CHANGELOG.md**: adds the ## [0.15.1] -- Unreleased
  section + Planned header after the v0.15.0 section. Per
  Keep-a-Changelog convention.

- **docs/forward_roadmap_14.4_to_16.9.md**:
  - Flips v0.14.6 entry from 'in flight' to 'Shipped
    2026-08-02' with checkmark (matches the actual close-out
    status from PR #226).
  - Flips v0.15.0 entry from 'active cycle' to 'Shipped
    2026-08-05' with checkmark. Documents the actual 5-Tier-A
    slice shape (PRs #228, #229, #234, #235, #237) + the
    dropped slice 3 (update_can_listen) and why.
  - Promotes v0.15.1 entry from 'Nov 2026 candidate' to
    'Aug 2026 active cycle' with the corresponding cycle
    pointer to docs/v0.15.1_plan.md.

## Tier

Tier A -- docs only, no protected paths touched. Per
CLAUDE.md golden rule #1, the auto-merge bot will merge
this PR once CI is green.

## Cycle context

v0.15.1 'Test-Plan Walks on the Bench' is the natural
follow-up to v0.15.0 'Live Gauges from the Bench':
- v0.15.0 wired the existing read_live_data UDS path to the
  Live Gauges panel (frontend-only, K+DCAN).
- v0.15.1 wires the existing read_freeze_frame path to the
  test-plan walk reducer (frontend + 1 Tier B Rust command).

Both cycles share the same chassis constraint: no new
hardware required, 5 K+DCAN cable is enough. The user-
facing win is a printable / shareable HTML test-plan
result that includes the real freeze-frame data.

Author note: commit authored with ohgeeceee@users.noreply.github.com
to bypass GH007 (private-email push block). Content unchanged.

Co-authored-by: ohgeeceee <ohgeeceee@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant