Skip to content

Commit aaa6757

Browse files
release: integrate dev into main for 0.4.0-alpha.1 (#15)
* Update: gitignore * fix: resolve critical parsing bugs and error type loss (C-1, C-2) - Remove 5 exception-swallowing try/with blocks in Dbc.fs that silently returned defaults on parse failures, risking incorrect C code generation - Add GenerateError DU to preserve error type info through the pipeline (ParseError/ValidationError/CodeGenError no longer flattened to string) - Update Api.fs, Library.fs facade, and CLI to match GenerateError variants - Add Core test project with 13 tests (10 Dbc + 3 Api error propagation) - Fix Windows test compatibility: use mingw32-make and .exe extension - All 29 tests pass (16 Generator + 13 Core), 0 failures * docs: add ROADMAP and session reports for C-1, C-2, Windows compat work * test: add Config, Codegen, and edge case tests (H-1c, H-1d, H-1f) - ConfigTests: 16 tests for Config.validate and Config.loadFromYaml - CodegenTests: 8 tests for Codegen.generate with inline IR - EdgeCaseTests: 4 tests for empty DBC, Motorola LSB, signed, 64-bit signals Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * test: add Facade tests and E2E happy-path (H-1e, H-3c) - FacadeTests: 4 tests verifying exception type mapping - ApiTests: 1 E2E happy-path test with examples/sample.dbc - fsproj: add compile items and Signal.CANdy project reference Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs: update ROADMAP and session report for H-1, H-3 completion - Mark H-1c~H-1g, H-3a~H-3c as complete in ROADMAP - Add session report for 34 new tests (63 total, 0 failures) Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * refactor: consolidate Generator into Core via Compat bridge (H-2, M-1) Remove 8 duplicated .fs files from Generator (~1100 lines), replacing them with an 83-line Compat.fs backward-compatibility bridge that re-exports Core types under the Generator namespace. Generator.fsproj now references Core directly and carries zero package dependencies of its own. Key changes: - Generator.fsproj: remove 7 Compile items + 5 PackageReferences, add Core ref - Compat.fs: bridge modules for Ir, Config, Dbc, Codegen, Result (active pattern) - Program.fs: rewritten to use Core API (Config/Dbc/Codegen/Errors) directly - Core Dbc.fs: add missing validateMuxStructure (was in legacy Generator only) All 63 tests pass (47 Core + 16 Generator), E2E roundtrip verified. * chore: remove dead code, improve codegen readability, update deps table (M-2, M-3, M-4) * feat(canfd): remove 8-byte hard limits, add CAN FD support (L-4a, L-4b) - Fix get_bits_le/set_bits_le: replace hardcoded 8-byte loop with dynamic n_bytes - Fix 64-bit mask UB: use UINT64_MAX when length==64 - Fix memset: use message.Length instead of hardcoded 8 - Add 6 F# tests (codegen + edge cases) for CAN FD payloads up to 64 bytes - Add canfd_test.dbc (DLC=64, 3 signals) and E2E test_fd_roundtrip in main.c - Update README: supported features + limitations reflect CAN FD support - get_bits_be/set_bits_be already use dynamic bit-by-bit loops, no change needed * feat(canfd): generate DLC mapping utilities and fix signed signal decode (L-4c) - Add canfd_dlc_to_len() / canfd_len_to_dlc() to generated utils (ISO 11898-1) - Fix signed signal decode: cast uint64_t to int64_t before float conversion to prevent negative values from being interpreted as huge positive numbers * test: add comprehensive CAN parsing tests with known bit patterns - Add comprehensive_test.dbc with 18 signals covering LE/BE, signed, packed, non-aligned, and scale/offset configurations - Add 7 C E2E test functions verifying byte-level encode/decode correctness - Add 5 F# unit tests for DLC mapping codegen and signal pattern generation * docs: update ROADMAP L-4c complete and add session report * docs: clean up renamed report files and add 260213 morning briefing * chore: track AGENTS.md, Report/, and ROADMAP.md publicly * docs: add git workflow setup session report * ci: add dev branch to CI push trigger and remove stale branches Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * build: add global.json to pin .NET SDK 8.0.418 with latestPatch rollForward Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs: add CI trigger cleanup and SDK pinning session report Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * fix: remove dead Say.hello placeholder from Core Library.fs Sisyphus: 🪨⬆️ (OpenCode) * build: bump version to 0.3.0 in fsproj and Api.fs Sisyphus: 🪨⬆️ (OpenCode) * style: apply Fantomas formatting and add format check to CI lint Sisyphus: 🪨⬆️ (OpenCode) * docs: add v0.3.0 release session report Sisyphus: 🪨⬆️ (OpenCode) * docs: add README update session report Sisyphus: 🪨⬆️ (OpenCode) * build: add local coverage report infrastructure (ReportGenerator + script) - Add .config/dotnet-tools.json with ReportGenerator 5.4.5 local tool manifest - Add run-coverage.ps1 PowerShell script for HTML coverage report generation - Add TestResults/ and coverage_report/ to .gitignore Sisyphus: 🪨⬆️ (OpenCode) * test: add TRACE output and expand Motorola LSB suite with hand-calculated vectors - Add TRACE printf lines to test_roundtrip and test_fixed_roundtrip for visual verification - Expand motorola_lsb_suite.dbc from 1 to 4 signals (3 unsigned + 1 signed, byte-aligned) - Add test_moto_lsb_comprehensive with mathematically derived known_data byte arrays Sisyphus: 🪨⬆️ (OpenCode) * test: wire comprehensive C tests into F# integration suite - Add runCGeneratorWithDbc helper to support arbitrary DBC file paths - Add 11 new [Fact] integration tests covering LE/BE/signed/nonalign/packed/scale, CAN FD, multiplex, value table, and Motorola LSB byte-level verification - Generator test count: 16 -> 27, total: 74 -> 85 Sisyphus: 🪨⬆️ (OpenCode) * docs: add test confidence infrastructure session report Sisyphus: 🪨⬆️ (OpenCode) * feat(oracle): scaffold Python oracle test project structure * feat(oracle): add C harness template and Python harness generation * feat(oracle): implement core oracle engine with single-DBC pipeline * feat(oracle): implement dynamic tolerance framework and metadata comparison * feat(oracle): implement core oracle engine with single-DBC pipeline * feat(oracle): implement test vector generation with boundary and adversarial cases * feat(oracle): implement config matrix runner with all valid permutations - Implements run_matrix.py CLI with 8 config combinations (float/fixed × double/float × range_check) - Fixed dimensions: motorola_start_bit=msb, dispatch=direct_map (per Metis directive) - Parallel execution support via ProcessPoolExecutor (--parallel N flag) - Outputs matrix_report.json with per-config results + overall summary - Verified: 336 tests across 8 configs, all passed (42 tests/config) - TODO comment added for negative range_check tests (deferred to future task) * feat(oracle): add vendored DBC subset and corpus runner with opendbc integration - Vendored 15 DBC files from opendbc (commit 245cb1f) for diverse test coverage - Selection criteria: manufacturer diversity, signal types (LE/BE, signed, scaled), size range (4-331 msgs) - Created vendor_dbc/README.md with full attribution (opendbc MIT license, commit hash, file descriptions) - Implemented run_corpus.py (455 lines) with full CLI support: - Batch validation across corpus directory - opendbc shallow clone integration (--clone-opendbc flag) - Unsupported feature detection (float signals, extended mux) - Parallel execution via ProcessPoolExecutor (--parallel N) - Default config generation when not provided - Graceful error handling and fallback to vendor-only mode - Outputs corpus_report.json with per-DBC results (status, counts, reasons) - Verified: 15 vendor DBCs tested, 10 passed, 5 failed (real oracle failures) - Combined mode: 58 DBCs (15 vendor + 43 opendbc) when internet available * test(oracle): add comprehensive pytest suite for oracle harness - Implemented 30 test cases across 5 test modules (tolerance, vector_gen, harness, engine, metadata) - Unit tests (23) run without dotnet/gcc via '-m "not integration"' - Integration tests (7) verify full pipeline with sample + comprehensive DBCs - Fixtures provide DBC paths and inline default config - Markers separate fast unit tests from slow integration tests - Verified: all 30 tests pass, coverage for all oracle module public APIs * feat(oracle): complete integration testing with all example DBCs and config matrix - Executed oracle pipeline on all 7 example DBCs with default config - Ran config matrix on comprehensive_test.dbc (8 configs, all passed) - Ran vendor corpus on 15 curated DBCs (5 passed, 10 failed) - Total coverage: 97,346 tests across 4,975 signal-runs - Pass rate: 92.44% (89,986 passed, 7,277 failed, 83 skipped) - Documented findings in tests/oracle/ORACLE_RESULTS.md - Verified: pytest (30/30) and dotnet test (85/85) pass without regressions * chore(oracle): mark all acceptance criteria and verification items complete - Definition of Done: 6/6 verified (sample, comprehensive, matrix, corpus, pytest, all 7 DBCs) - Final Checklist: 8/8 verified (Must Have items, guardrails, no F#/C/CI modifications) - All verification commands executed successfully - Oracle test pipeline is production-ready * chore(plans): archive stale plans and activate oracle-failure-resolution * chore(oracle): remove tracked Python bytecode caches * chore(git): ignore Python cache artifacts * test(core): add DbcParserLib signal metadata type guard test * docs(oracle): sync roadmap tracking and session reports * fix(dbc): use DbcParserLib byte order instead of hardcoded LE fallback * fix(codegen): correct motorolaMsbFromLsb byte boundary traversal direction * fix(codegen): remove 8-byte clamp in LE bit utilities for CAN FD support Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * fix(oracle): add overflow guard to vector generation for extreme scale signals Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(oracle): add Category C exception criteria and justification document * fix(codegen): skip range check for signals with DBC no-range sentinel [0|0] * fix(codegen): skip range check for inverted DBC range sentinel (min >= max) * docs(oracle): add Category C exception 5 — dbc_raw_range_sentinel Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(oracle): add Category C exception 5 — dbc_raw_range_sentinel * docs(oracle): update ORACLE_RESULTS with v3 corpus — 99.25% adjusted pass rate * chore: close oracle-failure-resolution boulder — 99.25% adjusted pass rate achieved * docs(agents): add evidence and historical-boundary rules Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(roadmap): sync oracle tracking source of truth and backlog Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(reports): migrate 20260212 historical reports into Reports Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(reports): migrate remaining 20260212 historical reports into Reports Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(reports): migrate late 20260212 and early 20260213 reports into Reports Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(reports): migrate 20260213 briefing and release reports into Reports Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(reports): migrate remaining 20260213 oracle reports into Reports Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(reports): migrate core oracle implementation reports into Reports Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(reports): migrate final oracle historical reports into Reports Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(reports): add 20260312 sync and oracle completion reports Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(reports): migrate 20260215 analysis report into Reports Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(reports): remove stale underscore-named oracle completion report Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat(codegen): add raw-range sentinel heuristic to skip invalid range checks * docs: mark B-O1 complete, update oracle exception docs and reports * feat(oracle): add mux per-branch vector generation in engine.py Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * test(oracle): add mux-specific unit tests for per-branch vector generation Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(oracle): update Exception 1, ORACLE_RESULTS, ROADMAP for B-O2 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs: add B-O2 session report Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * chore: mark B-O2 complete, clear boulder state, final report * refactor(oracle): remove unused db param from _generate_mux_vectors * chore: bump version to 0.3.1-alpha.1 * docs: update ROADMAP footer date * docs: add stabilization session report * style: apply fantomas formatting fixes Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * docs(oracle): remove accidental line prefixes in ORACLE_RESULTS * chore(release): align v0.3.1 versions and install docs * docs(reports): add v0.3.1 release and pre-0.3.2 diagnosis reports * feat(errors): add UnsupportedFeature variant to CodeGenError * test(codegen): add RED tests for valid bitmask auto-widening * feat: auto-widen valid bitmask uint32/uint64 for mux messages (B-O3) * fix: use haveSubstring for UnsupportedFeature message assertion in test 4 * docs: update docs and version for v0.3.2 * docs(reports): add v0.3.2 B-O3 completion session report * fix(release): handle UnsupportedFeature across caller surfaces * docs(reports): finalize v0.3.2 readiness and session logs * docs(release): align changelog and generator version for v0.3.2 * docs(reports): add v0.3.2 pre-PR consistency check report * docs(release): drop repository changelog and document policy * fix(ci): untrack boulder state and guard LE 9-byte shifts * style: apply CI Fantomas formatting * docs(reports): add PR14 review and conflict-resolution report * test(codegen): add failing tests for >64 valid byte-array * feat(codegen): add 3-tier valid width selection for >64 signals Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat(codegen): emit byte-array macros, struct field, and decode body for >64 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat(codegen): lift overflow guard from 64 to 1024 signals Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai> * feat(codegen): add conditional sc_valid helpers and utils include * test(codegen): add golden files for 65-signal mux message * refactor(codegen): apply fantomas formatting * docs(reports): add implementation session reports for valid >64 bitmask feature * docs(reports): add final completion report for valid >64 bitmask implementation * docs: mirror 3-tier valid bitmask changes in README.ko.md * docs: align active documentation with shipped >64 valid bitmask byte-array fallback * docs: add Oracle reference decoder incompatibility strategy document * docs: add session report for truth-alignment work * docs: fix README.md multiplexed code-fence — close block 1 before block 2 label * docs(reports): normalize report filename prefixes to RUN-ID format and align AGENTS naming rule * docs(reports): add release-readiness audit and main recovery reports * docs(reports): add dev promotion session report * build(version): bump package metadata to 0.4.0-alpha.1 * docs(readme): align install docs for 0.4.0-alpha.1 * docs(nuget): align package install snippets for 0.4.0-alpha.1 * docs(reports): add 0.4.0-alpha.1 readiness report * test(golden): align mux65 valid macro names * docs(readme): fix mux65 valid macro examples * test(codegen): use temp output dir for 1025-signal guard * docs(reports): add PR15 review resolution report --------- Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
1 parent b2d0059 commit aaa6757

98 files changed

Lines changed: 2167 additions & 63 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

AGENTS.md

Lines changed: 13 additions & 3 deletions

Plans/ORACLE_DECODER_STRATEGY.md

Lines changed: 103 additions & 0 deletions

Plans/ROADMAP.md

Lines changed: 2 additions & 8 deletions

README.ko.md

Lines changed: 21 additions & 4 deletions

README.md

Lines changed: 22 additions & 4 deletions

0 commit comments

Comments
 (0)