Commit 15a91ca
v0.3.2-alpha.1: B-O3 complete and release-candidate hardening (#14)
* 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
---------
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>1 parent 6af1fbe commit 15a91ca
29 files changed
Lines changed: 1030 additions & 151 deletions
File tree
- .sisyphus
- Reports
- src
- Generator
- Signal.CANdy.CLI
- Signal.CANdy.Core
- Signal.CANdy
- templates
- tests
- Signal.CANdy.Core.Tests
- oracle
This file was deleted.
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | | - | |
| 27 | + | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
456 | 456 | | |
457 | 457 | | |
458 | 458 | | |
459 | | - | |
| 459 | + | |
460 | 460 | | |
461 | 461 | | |
462 | 462 | | |
| |||
603 | 603 | | |
604 | 604 | | |
605 | 605 | | |
606 | | - | |
| 606 | + | |
607 | 607 | | |
608 | 608 | | |
609 | 609 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
27 | | - | |
28 | | - | |
| 27 | + | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
325 | 325 | | |
326 | 326 | | |
327 | 327 | | |
328 | | - | |
| 328 | + | |
329 | 329 | | |
330 | 330 | | |
331 | 331 | | |
| |||
677 | 677 | | |
678 | 678 | | |
679 | 679 | | |
680 | | - | |
| 680 | + | |
681 | 681 | | |
682 | 682 | | |
683 | 683 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
166 | 166 | | |
167 | 167 | | |
168 | 168 | | |
169 | | - | |
| 169 | + | |
170 | 170 | | |
171 | | - | |
172 | | - | |
| 171 | + | |
| 172 | + | |
173 | 173 | | |
174 | 174 | | |
175 | 175 | | |
| |||
189 | 189 | | |
190 | 190 | | |
191 | 191 | | |
192 | | - | |
| 192 | + | |
193 | 193 | | |
Lines changed: 66 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
Lines changed: 93 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
Lines changed: 46 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
Lines changed: 29 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
0 commit comments