release: integrate dev into main for 0.4.0-alpha.1#15
Merged
Conversation
- 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
- 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>
- 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>
- 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>
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.
…le (M-2, M-3, M-4)
- 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
…ode (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
- 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
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…orward Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Sisyphus: 🪨⬆️ (OpenCode)
Sisyphus: 🪨⬆️ (OpenCode)
Sisyphus: 🪨⬆️ (OpenCode)
Sisyphus: 🪨⬆️ (OpenCode)
Sisyphus: 🪨⬆️ (OpenCode)
…ript) - 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)
…ated 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)
- 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)
Sisyphus: 🪨⬆️ (OpenCode)
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…for >64 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…d align AGENTS naming rule
There was a problem hiding this comment.
Pull request overview
Integration PR promoting dev to main for 0.4.0-alpha.1, including a prerelease version bump plus a significant codegen enhancement to support multiplexed messages with >64 signals by switching the valid field to a byte-array representation (up to 1024 signals). It also aligns docs/oracle exception tracking and expands tests/golden artifacts accordingly.
Changes:
- Bump public version surface to
0.4.0-alpha.1across projects, API, and READMEs. - Extend mux
validrepresentation:uint32_t(≤32),uint64_t(33–64),uint8_t valid[(N+7)/8](65–1024) withsc_valid_*helpers; >1024 now errors. - Update templates, tests, oracle docs/exceptions, and planning/reporting artifacts to reflect the new behavior.
Reviewed changes
Copilot reviewed 31 out of 97 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/oracle/ORACLE_RESULTS.md | Updates roadmap/status notes for valid bitmask widening and byte-array fallback. |
| tests/oracle/CATEGORY_C_EXCEPTIONS.md | Documents resolved valid-mask-width exception with new 65–1024 support. |
| tests/Signal.CANdy.Core.Tests/golden/mux65_msg.h | Adds golden header for >64 mux valid byte-array case. |
| tests/Signal.CANdy.Core.Tests/golden/mux65_msg.c | Adds golden source for >64 mux valid byte-array case. |
| tests/Signal.CANdy.Core.Tests/FacadeTests.fs | Adjusts unsupported mux test to the new >1024 limit and message naming. |
| tests/Signal.CANdy.Core.Tests/CodegenTests.fs | Adds/updates assertions and new cases for valid byte-array behavior and helper emission. |
| templates/utils.h.scriban | Conditionally emits sc_valid_set/clear/test for byte-array valid support. |
| templates/message.h.scriban | Conditionally includes the generated utils header when needed by message headers. |
| src/Signal.CANdy/Signal.CANdy.fsproj | Bumps package version to 0.4.0-alpha.1. |
| src/Signal.CANdy/README.NuGet.md | Updates NuGet install snippet to 0.4.0-alpha.1. |
| src/Signal.CANdy.Core/Signal.CANdy.Core.fsproj | Bumps package version to 0.4.0-alpha.1. |
| src/Signal.CANdy.Core/README.NuGet.md | Updates NuGet install snippet to 0.4.0-alpha.1. |
| src/Signal.CANdy.Core/Codegen.fs | Implements byte-array valid fallback, helper wiring, and raises unsupported threshold to >1024. |
| src/Signal.CANdy.Core/Api.fs | Updates Api.version() to 0.4.0-alpha.1. |
| Reports/20260316-0749_Codegen_ValidBitmask_RED_Tests.md | Session report describing RED tests for valid byte-array support. |
| Reports/20260313-2230_L2bc_Final_Verification.md | Session report for CRC/counter final verification wave. |
| Reports/20260313-2230_Dbc_T12_blankline_fix.md | Session report for F# off-side parsing whitespace fix. |
| Reports/20260313-2025_T16_crc_c_build_verification.md | Session report for C-level CRC build verification. |
| Reports/20260313-2018_T15_CRC_Counter_test_append.md | Session report for appended CRC/counter tests. |
| Reports/20260313-1909_T10_Codegen_crc_counter_validate.md | Session report for CRC/counter validate-mode codegen wiring. |
| Reports/20260313-1844_T8_Message_CRC_Counter_Template_Slots.md | Session report for adding template slots for CRC/counter codegen. |
| Reports/20260313-1428_v0.3.2_release_blocker_fix_UnsupportedFeature.md | Session report for unsupported-feature caller handling fix. |
| Reports/20260313-1410_v0.3.2_pre_release_readiness.md | Session report for v0.3.2 readiness audit. |
| Reports/20260313-1258_B-O3_valid_bitmask_auto_widening.md | Session report for prior B-O3 widening work. |
| Reports/20260313-1200_update_CRC_fields.md | Session report for adding CRC/counter IR fields and defaulting call sites. |
| Reports/20260312-1800_B-O2_Oracle_Multiplex_Mode.md | Session report for oracle multiplex mode improvements. |
| Reports/20260312-1705_Oracle_mux_assumptions_validation.md | Session report for validating cantools mux assumptions. |
| Reports/20260213-1952_Oracle_Integration_Result_Report.md | Session report for full oracle integration run. |
| Reports/20260213-1848_Oracle_Tolerance_Metadata_Comparison.md | Session report for oracle tolerance/metadata comparison logic. |
| Reports/20260213-0730_Git_Workflow_Setup.md | Session report for workflow setup and tracking Reports/Plans. |
| Reports/20260213-0000_Morning_Briefing.md | Session briefing report (historical). |
| Reports/20260212-1615_main_c_comprehensive_bitpattern_tests.md | Session report for C E2E bitpattern tests. |
| README.md | Bumps version strings and documents byte-array valid + sc_valid_test usage. |
| README.ko.md | Bumps version strings and documents byte-array valid + sc_valid_test usage (Korean). |
| Plans/ROADMAP.md | Removes/updates now-closed valid >64 fallback roadmap item; renumbers remaining items. |
| Plans/ORACLE_DECODER_STRATEGY.md | Adds a strategy document for handling cantools-incompatible DBCs in oracle runs. |
| AGENTS.md | Updates Reports naming rules and adds RUN_ID/file-prefix operational guidance. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
devbranch tomainas a one-time integration PR, including the post-v0.3.2codegen and docs alignment work0.4.0-alpha.1across the package metadata,Api.version(), root READMEs, and NuGet READMEsv0.4.0-alpha.1on the currentdevtip before PR creationValidation
dotnet build --configuration Release --nologodotnet test --configuration Release -v minimal --nologodotnet pack -c Release src/Signal.CANdy.Core/Signal.CANdy.Core.fsproj -o artifacts-versioncheckdotnet pack -c Release src/Signal.CANdy/Signal.CANdy.fsproj -o artifacts-versioncheckNotes
devtomain, not a small feature PR>64valid byte-array support, CRC/counter support paths, related tests/golden files, and release/doc alignment