0.5.0 — 2026-08-08
Recipe format 4.3 — schema restructure, creator simplification, and metadata expansion. Breaking changes from 4.2 are limited to the recipe format itself; the patcher, validator, and annotator pipelines are unaffected.
Changed — Recipe Format 4.3
openremapenvelope dropped.typeandschema_versionare now top-level fields instead of being nested inside anopenremapobject.sourceandapplicationadded.sourcedistinguishes"full_cook"(binary diff) from"tune_export"(exported from a saved tune).applicationidentifies the tool that produced the file ("openremap-core"or"openremap-studio").creatorflattened. The nestedauthorsub-object is removed;name,handle, andidare now top-level fields increator. Thetoolandtool_versionfields are removed — tool provenance is carried byapplicationandschema_version.metadatarestructured. Dropped:context_size,max_context_size,format_version. Added:name,tags,instruction_count,tune_id.statistics.context_sizerenamed tomin_context_size.ecublock extended. Added:oem_part_number,platform,calibration_version,serial_number,dataset_number.flags.confidencenormalized to float (0.0–1.0). Was string"HIGH"/"MEDIUM"/"LOW"in 4.2.InstructionFlag.confidencetype changed fromstrtofloat(0.9 = high, 0.5 = medium, 0.3 = low).- Extensibility rule. Parsers MUST ignore unknown fields, allowing forward-compatible additions in minor versions.
- Schema version gate. All recipe consumers (patcher, validators) now
validate
schema_versionat construction time. Recipes older than 4.3 (pre-0.5.0) are rejected with a descriptive error. Future minor versions (4.4+) pass through — the extensibility rule guarantees forward compatibility.
Added
-
Endian auto-detection (
identifier.py)._detect_endian()uses the high-byte-zero heuristic (ported 1:1 from the Rust editor'sanalysis/endian.rs) to detect the ECU's byte order from calibration data.identify_ecu()now returnsecu_endianandecu_cell_bytesfields for all results, including unknown/unrecognised binaries. -
Low-entropy context scanner (
annotator.py).LowEntropyScannerdetects instructions whose context anchor is weak — non-unique patterns (WEAK_ANCHOR, confidence 0.9) or low-entropy regions (LOW_ENTROPY_CTX, confidence 0.3). Registered by default inRecipeAnnotatoralongside the existingVINScanner. -
.orst2.0 saved tune format. Newbuild_orst()method onECUDiffAnalyzerproduces a minimal.orstworkspace file carrying only instructions, source binary identity, and history metadata — just enough for the editor to reopen, display history, and export as a portable recipe.- New Pydantic schema:
openremap/core/schemas/orst.py(OrstRootSchema,OrstSourceBinarySchema) - New format spec:
docs/orst-format.md server.pycook endpoint returns.orstpayload whentune_idis provided
- New Pydantic schema:
-
Force Save via
require_uniqueparameter. Whenrequire_unique=False, non-unique context anchors becomecook_warningsinstead of a hard error, allowing the recipe to be saved for same-binary use. Exposed through theserver.pycook endpoint andECUDiffAnalyzerconstructor.
Improved
context_afteranchor in patcher. The patcher now searches forctx + ob + context_after(not justctx + ob), doubling the effective anchor length at zero cost. Failure diagnostics now report the full anchor description, check whetherobbytes exist elsewhere in the binary, and give a clear hint about SW revision mismatch.
Changed — Internal
- Pydantic schema split.
openremap/core/schemas/analyzer.py(161 lines, format 4.0–4.2) deleted. Replaced by:remap.py(168 lines) — recipe 4.3 schemas with defaults for forward compatibility (all fields optional/defaulted, no hard-required fields)orst.py(89 lines) —.orst2.0 schemas
Removed
- Trust level display.
trust_levelis no longer displayed in CLI or TUI output until cryptographic signing is implemented and enforced by the pipeline.