Skip to content

Service-function breadth with honest verification status (v0.8.0 PR #2, Tier B) - #117

Merged
ohgeeceee merged 1 commit into
mainfrom
feat/v0.8.0-service-functions
Jul 18, 2026
Merged

Service-function breadth with honest verification status (v0.8.0 PR #2, Tier B)#117
ohgeeceee merged 1 commit into
mainfrom
feat/v0.8.0-service-functions

Conversation

@ohgeeceee

Copy link
Copy Markdown
Owner

Summary

Tier B — human review + merge required. Touches protected path src-tauri/src/data/service_functions.rs; commands.rs is deliberately unchanged (the new flag flows through the existing Serialize derive). Implements the v0.8.0 plan's PR #2 slice — the final slice of the "Service Bay" cycle.

The audit found all six routine IDs are v0.4.0-era simulator placeholders — the sim answers any 0x31 routine ID, and no in-repo source grounds a real one (BMW routine IDs are security-sensitive/unpublished per research/bmw_diag_landscape.md). Honest-status changes:

  • Every entry now carries verified: false, rendered in the UI as an amber UNVERIFIED pill (tooltip → harness doc) beside the existing risk tag
  • Run confirmation is prepended with a chassis-validation warning: the routine ID has NOT been validated on a real car — it may invoke a different function, or none
  • No new routine IDs ship — five plausible candidates (DPF regen, Valvetronic adaptation, steering-angle calibration, EGS adaptation reset, EMF service mode) are documented as known-missing in the new harness doc instead
  • New docs/validation/service-functions.md — the real-car validation harness; CONTRIBUTING.md rule 3 now references it as the only label-removal path

Contract tests: one new UNVERIFIED tripwire (lib 99→100), one mechanical field addition; all preservation tests untouched.

Test plan

  • cargo build warning-clean; cargo test 100+1
  • node --test 57/57; lint-toml clean (24 files)
  • pytest 149 (+2 known local artifacts)
  • Reviewer sim exercise: UNVERIFIED tag on all six entries; Run shows the preamble

Reviewer checklist

  1. Confirm commands.rs diff is empty — command surface unchanged by design
  2. Check routine-ID provenance: every entry verified: false with per-entry comment; no invented IDs
  3. Exercise the confirmation flow in the simulator
  4. Read docs/validation/service-functions.md § 4 against CONTRIBUTING.md rules 2–3
  5. Confirm contract-test edits are exactly the two called out above

Merge policy

Tier B per CLAUDE.md — the human merges after review. Completing this PR closes the v0.8.0 "Service Bay" cycle.

… gating (plan PR #2)

Tier B: touches src-tauri/src/data/service_functions.rs and the
command-adjacent UI surface; commands.rs itself is UNCHANGED (the new
verified flag flows through the existing Serialize derive on
list_service_functions).

Audit: all six routine IDs (0x0F01-0x0F04, 0x0A01, 0x0A02) are v0.4.0
simulator placeholders - the sim answers any 0x31 ID, and no in-repo
source (research/, TECH_SPECS.md, backend seeds) grounds any real ID;
bmw_diag_landscape.md documents BMW routine IDs as security-sensitive,
unpublished. Zero new routine IDs ship; DPF regen, throttle/Valvetronic
adaptation, steering-angle calibration, EGS adaptation reset and EMF
service mode are documented as known-missing in the new harness doc.

Changes:
- ServiceFunction gains a verified flag; all six entries marked
  verified: false with per-entry provenance comments.
- UI renders an UNVERIFIED tag and prepends a routine-ID-not-chassis-
  validated preamble to the run confirmation (risk dialog preserved).
- docs/validation/service-functions.md: real-car harness (preconditions,
  per-routine observations, NRC interpretation, label-removal path);
  CONTRIBUTING.md rule 3 now references it.
- Contract tests: new all_shipped_entries_marked_unverified tripwire
  (lib count 99 -> 100); multi_routine_construction_round_trip gained
  the mechanical verified field. Count/ID/routine-ID/risk preservation
  tests deliberately untouched.
@ecc-tools

ecc-tools Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

ECC bundle files are already tracked in this repository. Skipping generation of another bundle PR.

@ohgeeceee
ohgeeceee merged commit 6f807ed into main Jul 18, 2026
10 of 11 checks passed
@ohgeeceee
ohgeeceee deleted the feat/v0.8.0-service-functions branch July 18, 2026 12:54
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>
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