OpenRemap Docs

0.7.0 — 2026-08-23

Milestone release — see the summary in CHANGELOG.md.

Added

  • cook-volatile command — cook a car-portable recipe: detects volatile / vehicle-specific instructions (VIN records, verified checksum stores), excludes the near-certain ones from the patch list, and records them in a new volatile recipe section (schema 4.5) with evidence. Flags: --no-exclude, --exclude-uncertain, --accept-volatile + full cook parity. cook itself stays byte-identical.
  • Volatile-region classifierclassify_volatile() in core/services/recipes/volatile.py: VIN (VINScanner, conf ≥ 0.9) and verified checksum-store exclusions; ident-block strings and low-entropy counter clusters flagged only. Deterministic, no I/O, no corpus.
  • Volatile-aware auditopenremap audit understands schema-4.5 recipes: subset-fingerprint check (kept instructions ⊆ re-cook set), re-verify that every declared excluded offset still classifies as volatile against the stock, and unaccounted-changes subtraction of the excluded ranges. 4.3/4.4 recipes keep exact-equality behavior.
  • Batch map scanningscan-maps now accepts a directory in addition to a file, with --recursive, --export, --json batch mode, and --verbose per-file table listing.
  • IronFelix family checksum profiles — VAG ME7.XX (subtypes 1/2/3/5/6), M3.x-5.x, M7.9.7, M7.9.8, China M7.9.7, ME7.4.5, Samand.
  • Siemens GS20 / SMG2 TCU checksums — CRC-16/ARC profiles from the MS4X community corrector (decompiled).
  • BMW MS43 checksums cracked — boot/program/calibration CRC-16/ARC over descriptor tables via boot-code disassembly; monitor sums documented as runtime checks.
  • NefMoto ME7 rolling / multirange — firmware-code-driven detection (C166 pattern parsing + seed-table rolling hash).
  • Denso Subaru descriptor-table checksum — SH72531 1 MB petrol + EE20 diesel, 0x5AA5A55A end-inclusive scheme.
  • Subaru support — 501-ROM corpus; Denso (SH7055/SH7058/SH72531/ diesel) and Hitachi (SH72546) extractors; .hex accepted everywhere.
  • Health reportopenremap health: identity, checksums, axis sanity, map-count envelope, erased blocks, VIN duplication; CI gate.
  • Rust migrations — endian detect (~542×), ident-block scan (~29×), NefMoto locate+rolling (136–820×), CRC-16/ARC (~30×), Denso scan (~110×), all parity-verified.
  • Domain restructurecore/services/{identify,checksums,maps, recipes}/ and the Rust mirror; manufacturers gain Denso + Hitachi.
  • Docs wiki reworkdocs/ reorganised into getting-started / concepts / commands (two-tier) / manufacturers (per-family) / internal; per-version changelog files in changelog/.

Changed

  • Recipe schema 4.4 with the maps annotation layer.
  • .hex accepted as a first-class binary extension across all commands.
  • Confidence: extractor-declared ident_block regions (short Subaru ident blocks now score correctly).

Deprecated

  • openremap-server (JSON-RPC daemon) — will be replaced by a new API.
  • .orst saved-tune format — superseded by .remap 4.4.

Fixed

  • VIN scanner alignment quirk — a VIN directly preceded by [A-Z0-9] text was skipped (the non-overlapping 17-char window scan consumed into the VIN start). Windows now overlap (lookahead) with memoized mirror counts; ident/mirror evidence gated on a known WMI, which also keeps a newly-visible corpus lookalike (ME7.3 31011118777544444) below the 0.6 false-positive line.
  • IronFelix profile checks record store locations — each check now carries store_offset/store_size, consumed by the volatile-region classifier; fixes a latent unbound-stored path in the ME7.XX subtype-5 sum8_zones branch.