Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
7e9d590
Update: gitignore
InitusNovus Feb 12, 2026
bf8256f
fix: resolve critical parsing bugs and error type loss (C-1, C-2)
InitusNovus Feb 12, 2026
0a28bf5
docs: add ROADMAP and session reports for C-1, C-2, Windows compat work
InitusNovus Feb 12, 2026
d24b693
test: add Config, Codegen, and edge case tests (H-1c, H-1d, H-1f)
InitusNovus Feb 12, 2026
f7e339b
test: add Facade tests and E2E happy-path (H-1e, H-3c)
InitusNovus Feb 12, 2026
a0ad689
docs: update ROADMAP and session report for H-1, H-3 completion
InitusNovus Feb 12, 2026
533a8e0
refactor: consolidate Generator into Core via Compat bridge (H-2, M-1)
InitusNovus Feb 12, 2026
2b1c7a7
chore: remove dead code, improve codegen readability, update deps tab…
InitusNovus Feb 12, 2026
86b7f20
feat(canfd): remove 8-byte hard limits, add CAN FD support (L-4a, L-4b)
InitusNovus Feb 12, 2026
a65592e
feat(canfd): generate DLC mapping utilities and fix signed signal dec…
InitusNovus Feb 12, 2026
ed79d6d
test: add comprehensive CAN parsing tests with known bit patterns
InitusNovus Feb 12, 2026
9d0c504
docs: update ROADMAP L-4c complete and add session report
InitusNovus Feb 12, 2026
8acba82
docs: clean up renamed report files and add 260213 morning briefing
InitusNovus Feb 12, 2026
b4edd52
chore: track AGENTS.md, Report/, and ROADMAP.md publicly
InitusNovus Feb 12, 2026
6e831f9
docs: add git workflow setup session report
InitusNovus Feb 12, 2026
7f74bf3
ci: add dev branch to CI push trigger and remove stale branches
InitusNovus Feb 13, 2026
ec5eeff
build: add global.json to pin .NET SDK 8.0.418 with latestPatch rollF…
InitusNovus Feb 13, 2026
a29954c
docs: add CI trigger cleanup and SDK pinning session report
InitusNovus Feb 13, 2026
5ad32e5
fix: remove dead Say.hello placeholder from Core Library.fs
InitusNovus Feb 13, 2026
569863c
build: bump version to 0.3.0 in fsproj and Api.fs
InitusNovus Feb 13, 2026
608573f
style: apply Fantomas formatting and add format check to CI lint
InitusNovus Feb 13, 2026
d9a1e52
Merge remote-tracking branch 'origin/main' into dev
InitusNovus Feb 13, 2026
6388095
docs: add v0.3.0 release session report
InitusNovus Feb 13, 2026
a3ece9b
Merge remote-tracking branch 'origin/main' into dev
InitusNovus Feb 13, 2026
c0c42c1
docs: add README update session report
InitusNovus Feb 13, 2026
2024b10
build: add local coverage report infrastructure (ReportGenerator + sc…
InitusNovus Feb 13, 2026
b3f5403
test: add TRACE output and expand Motorola LSB suite with hand-calcul…
InitusNovus Feb 13, 2026
a658d93
test: wire comprehensive C tests into F# integration suite
InitusNovus Feb 13, 2026
2337334
docs: add test confidence infrastructure session report
InitusNovus Feb 13, 2026
32273a4
feat(oracle): scaffold Python oracle test project structure
InitusNovus Feb 13, 2026
f0a9443
feat(oracle): add C harness template and Python harness generation
InitusNovus Feb 13, 2026
0fb1655
feat(oracle): implement core oracle engine with single-DBC pipeline
InitusNovus Feb 13, 2026
24d60ee
feat(oracle): implement dynamic tolerance framework and metadata comp…
InitusNovus Feb 13, 2026
b02e608
feat(oracle): implement core oracle engine with single-DBC pipeline
InitusNovus Feb 13, 2026
4ec591e
feat(oracle): implement test vector generation with boundary and adve…
InitusNovus Feb 13, 2026
0c7b83f
feat(oracle): implement config matrix runner with all valid permutations
InitusNovus Feb 13, 2026
1a7ccfd
feat(oracle): add vendored DBC subset and corpus runner with opendbc …
InitusNovus Feb 13, 2026
a64fb45
test(oracle): add comprehensive pytest suite for oracle harness
InitusNovus Feb 13, 2026
5371e6e
feat(oracle): complete integration testing with all example DBCs and …
InitusNovus Feb 13, 2026
0dbe1c0
chore(oracle): mark all acceptance criteria and verification items co…
InitusNovus Feb 13, 2026
9651ee3
chore(plans): archive stale plans and activate oracle-failure-resolution
InitusNovus Feb 13, 2026
04b4154
chore(oracle): remove tracked Python bytecode caches
InitusNovus Feb 19, 2026
c6f9806
chore(git): ignore Python cache artifacts
InitusNovus Feb 19, 2026
a9ff797
test(core): add DbcParserLib signal metadata type guard test
InitusNovus Feb 19, 2026
0dfb4e9
docs(oracle): sync roadmap tracking and session reports
InitusNovus Feb 19, 2026
b814621
Merge remote-tracking branch 'origin/main' into dev
InitusNovus Feb 19, 2026
a323916
fix(dbc): use DbcParserLib byte order instead of hardcoded LE fallback
InitusNovus Mar 12, 2026
407f1be
fix(codegen): correct motorolaMsbFromLsb byte boundary traversal dire…
InitusNovus Mar 12, 2026
5bcd36d
fix(codegen): remove 8-byte clamp in LE bit utilities for CAN FD support
InitusNovus Mar 12, 2026
e0fc6fa
fix(oracle): add overflow guard to vector generation for extreme scal…
InitusNovus Mar 12, 2026
11cbf02
docs(oracle): add Category C exception criteria and justification doc…
InitusNovus Mar 12, 2026
5915b8f
fix(codegen): skip range check for signals with DBC no-range sentinel…
InitusNovus Mar 12, 2026
7de2fa8
fix(codegen): skip range check for inverted DBC range sentinel (min >…
InitusNovus Mar 12, 2026
b5947c2
docs(oracle): add Category C exception 5 — dbc_raw_range_sentinel
InitusNovus Mar 12, 2026
839e777
docs(oracle): add Category C exception 5 — dbc_raw_range_sentinel
InitusNovus Mar 12, 2026
87d75f9
docs(oracle): update ORACLE_RESULTS with v3 corpus — 99.25% adjusted …
InitusNovus Mar 12, 2026
9bb071d
chore: close oracle-failure-resolution boulder — 99.25% adjusted pass…
InitusNovus Mar 12, 2026
c5aaf16
docs(agents): add evidence and historical-boundary rules
InitusNovus Mar 12, 2026
389f307
docs(roadmap): sync oracle tracking source of truth and backlog
InitusNovus Mar 12, 2026
62fa1e8
docs(reports): migrate 20260212 historical reports into Reports
InitusNovus Mar 12, 2026
b0d683c
docs(reports): migrate remaining 20260212 historical reports into Rep…
InitusNovus Mar 12, 2026
97f9cdc
docs(reports): migrate late 20260212 and early 20260213 reports into …
InitusNovus Mar 12, 2026
9945f05
docs(reports): migrate 20260213 briefing and release reports into Rep…
InitusNovus Mar 12, 2026
b8f4f54
docs(reports): migrate remaining 20260213 oracle reports into Reports
InitusNovus Mar 12, 2026
2da5061
docs(reports): migrate core oracle implementation reports into Reports
InitusNovus Mar 12, 2026
3daba60
docs(reports): migrate final oracle historical reports into Reports
InitusNovus Mar 12, 2026
b4c7280
docs(reports): add 20260312 sync and oracle completion reports
InitusNovus Mar 12, 2026
8088cfd
docs(reports): migrate 20260215 analysis report into Reports
InitusNovus Mar 12, 2026
9869dd7
docs(reports): remove stale underscore-named oracle completion report
InitusNovus Mar 12, 2026
1017b52
feat(codegen): add raw-range sentinel heuristic to skip invalid range…
InitusNovus Mar 12, 2026
9275a9f
docs: mark B-O1 complete, update oracle exception docs and reports
InitusNovus Mar 12, 2026
6ba7435
feat(oracle): add mux per-branch vector generation in engine.py
InitusNovus Mar 12, 2026
bd43dde
test(oracle): add mux-specific unit tests for per-branch vector gener…
InitusNovus Mar 12, 2026
4b53f27
docs(oracle): update Exception 1, ORACLE_RESULTS, ROADMAP for B-O2
InitusNovus Mar 12, 2026
4d19aa7
docs: add B-O2 session report
InitusNovus Mar 12, 2026
d98877c
chore: mark B-O2 complete, clear boulder state, final report
InitusNovus Mar 12, 2026
9c50acc
refactor(oracle): remove unused db param from _generate_mux_vectors
InitusNovus Mar 13, 2026
6b0f3ed
chore: bump version to 0.3.1-alpha.1
InitusNovus Mar 13, 2026
47f271b
docs: update ROADMAP footer date
InitusNovus Mar 13, 2026
1141200
docs: add stabilization session report
InitusNovus Mar 13, 2026
9bb9353
style: apply fantomas formatting fixes
InitusNovus Mar 13, 2026
dda53aa
docs(oracle): remove accidental line prefixes in ORACLE_RESULTS
InitusNovus Mar 13, 2026
fc35d6c
chore(release): align v0.3.1 versions and install docs
InitusNovus Mar 13, 2026
051c326
docs(reports): add v0.3.1 release and pre-0.3.2 diagnosis reports
InitusNovus Mar 13, 2026
d0ce378
feat(errors): add UnsupportedFeature variant to CodeGenError
InitusNovus Mar 13, 2026
3af89f2
test(codegen): add RED tests for valid bitmask auto-widening
InitusNovus Mar 13, 2026
6bbe11d
feat: auto-widen valid bitmask uint32/uint64 for mux messages (B-O3)
InitusNovus Mar 13, 2026
da4f018
fix: use haveSubstring for UnsupportedFeature message assertion in te…
InitusNovus Mar 13, 2026
c4e32b5
docs: update docs and version for v0.3.2
InitusNovus Mar 13, 2026
8826275
docs(reports): add v0.3.2 B-O3 completion session report
InitusNovus Mar 13, 2026
eb7f6c3
fix(release): handle UnsupportedFeature across caller surfaces
InitusNovus Mar 13, 2026
b7548dc
docs(reports): finalize v0.3.2 readiness and session logs
InitusNovus Mar 13, 2026
b8f945b
docs(release): align changelog and generator version for v0.3.2
InitusNovus Mar 13, 2026
bbfeb97
docs(reports): add v0.3.2 pre-PR consistency check report
InitusNovus Mar 13, 2026
6c91def
docs(release): drop repository changelog and document policy
InitusNovus Mar 13, 2026
1caa728
fix(ci): untrack boulder state and guard LE 9-byte shifts
InitusNovus Mar 13, 2026
e8f9ebb
Merge remote-tracking branch 'origin/main' into dev
InitusNovus Mar 13, 2026
e7b28e2
style: apply CI Fantomas formatting
InitusNovus Mar 13, 2026
81a4d6b
docs(reports): add PR14 review and conflict-resolution report
InitusNovus Mar 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions .sisyphus/boulder.json

This file was deleted.

44 changes: 0 additions & 44 deletions CHANGELOG.md

This file was deleted.

8 changes: 4 additions & 4 deletions README.ko.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
설치:

```pwsh
dotnet add package SignalCandy.Core --version 0.3.1
dotnet add package SignalCandy --version 0.3.1
dotnet add package SignalCandy.Core --version 0.3.2
dotnet add package SignalCandy --version 0.3.2
```

## ⚡ 빠른 시작 (5분)
Expand Down Expand Up @@ -456,7 +456,7 @@ make -C gen build
참고
- 분기 선택은 스위치 신호의 원시 정수값 기준입니다(일반 DBC 관례).
- 멀티플렉스가 아닌 기반 신호는 항상 디코드/인코드됩니다.
- 유효성 비트마스크 폭: 현재 구현은 32비트 `valid` 필드를 사용합니다. 신호 수가 매우 많은 경우(>32) 64비트 또는 배열로 확장이 필요할 수 있습니다. 이는 제한사항에 명시되어 있으며, 자동 확장은 로드맵에 있습니다.
- 유효성 비트마스크 폭: 신호가 ≤32개인 메시지는 32비트 `valid` 필드(`uint32_t`)를 사용합니다; 33–64개 신호는 자동으로 64비트 필드(`uint64_t` + `1ULL` 시프트)를 사용합니다. 64개 초과 신호는 생성할 수 없으며 — 코드 생성은 `CodeGenError.UnsupportedFeature`를 보고합니다.

valid와 mux_active 사용
```c
Expand Down Expand Up @@ -603,7 +603,7 @@ void compare_state(int v) {

- CRC/Counter 자동 검증은 아직 구현되지 않았습니다(설정 플래그는 예약됨)
- 클래식 CAN(최대 8바이트)과 CAN FD(최대 64바이트) 페이로드를 모두 지원합니다
- 32개 초과 신호를 갖는 매우 큰 메시지는 `valid` 비트마스크 확장이 필요할 수 있습니다
- 32개 초과의 다중화(mux) 시그널이 있는 메시지는 `uint64_t` valid 비트마스크를 자동 사용합니다. 64개 초과 시그널 메시지는 코드 생성 시 `CodeGenError.UnsupportedFeature`를 반환합니다

## 디스패치 모드와 레지스트리 (nanopb와의 관련성)

Expand Down
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ This project generates portable C99 parser modules (headers/sources) from a `.db
Install:

```pwsh
dotnet add package SignalCandy.Core --version 0.3.1
dotnet add package SignalCandy --version 0.3.1
dotnet add package SignalCandy.Core --version 0.3.2
dotnet add package SignalCandy --version 0.3.2
```

## ⚡ Quick Start (5 minutes)
Expand Down Expand Up @@ -325,7 +325,7 @@ make -C gen build
Notes
- Branch selection uses the raw integer value of the switch signal (typical DBC semantics).
- Base (non-multiplexed) signals are always decoded/encoded.
- Valid bitmask width: current implementations use a 32-bit `valid` field. Extremely large messages with >32 branch/base signals may require widening (e.g., to 64-bit) or an array. This is called out in Limitations; auto-widening is on the roadmap.
- Valid bitmask width: messages with ≤32 signals use a 32-bit `valid` field (`uint32_t`); messages with 33–64 signals automatically use a 64-bit field (`uint64_t` + `1ULL` shift). Messages with >64 signals cannot be generated — codegen reports `CodeGenError.UnsupportedFeature`.

Using valid and mux_active
```c
Expand Down Expand Up @@ -677,7 +677,7 @@ Details can be reproduced via the stress suite and bulk runner in `scripts/bulk_

- Automatic CRC/Counter validation is not yet implemented (config flag is reserved)
- Supports both classic CAN (up to 8-byte) and CAN FD (up to 64-byte) payloads
- Extremely large messages with >32 signals may require widening the `valid` bitmask
- Messages with >32 multiplexed signals automatically use a 64-bit `valid` bitmask (`uint64_t`). Messages with >64 multiplexed signals are not supported (code generation reports `CodeGenError.UnsupportedFeature`).

## Dispatch modes, registry, and relation to nanopb

Expand Down
8 changes: 4 additions & 4 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,10 +166,10 @@
- 범위: `run_oracle.py`가 mux branch를 선택해 skip 없이 검증 가능하도록 확장
- 상태: **완료** (2026-03-12 — `_generate_mux_vectors()` in `engine.py`, all vendor mux signals now tested, 0 skipped)

- [ ] **B-O3. Valid bitmask auto-widening**
- [x] **B-O3. Valid bitmask auto-widening**
- 근거: `tests/oracle/ORACLE_RESULTS.md` Recommendation #3, `tests/oracle/CATEGORY_C_EXCEPTIONS.md` Exception 3
- 범위: >32 signal 메시지에서 `uint64_t` 또는 배열 기반 valid 필드 자동 선택
- 상태: **미완료 backlog** (기존 `L-3`와 연결되는 구조 개선 과제)
- 범위: 32 signals → `uint32_t valid`, 33–64 signals → `uint64_t valid` + `1ULL`, >64 signals → `CodeGenError.UnsupportedFeature`. 배열 기반 valid는 backlog로 이연.
- 상태: **완료** (0.3.2, 2026-03-13 — commits `6bbe11d`, `da4f018`)

---

Expand All @@ -189,5 +189,5 @@ M-3 (코드 생성 가독성) ── L-1 (Scriban 도입)

---

> **최종 갱신**: 2026-03-13 (기존 완료 항목 상태 유지, Oracle 실패해결 플랜 O-1~O-10 완료 반영, Oracle 후속 backlog B-O1~B-O3 추가, `Reports/` 기준으로 정렬)
> **최종 갱신**: 2026-03-13 (B-O3 valid bitmask auto-widening 완료 반영, v0.3.2 — 기존 완료 항목 유지, Oracle 실패해결 플랜 O-1~O-10 반영, `Reports/` 기준으로 정렬)
> **참조**: `Analysis/Codebase_Analysis.md`, `AGENTS.md`
66 changes: 66 additions & 0 deletions Reports/20260313_1045_v0.3.1_릴리즈완료_가이드점검.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# 작업 보고서 — v0.3.1 릴리즈 완료 및 보고 규칙 반영 점검

**날짜**: 2026-03-13
**작업 시간**: 2026-03-13 10:45 (KST)
**세션 유형**: 릴리즈 마감/운영 점검

---

## 📝 작업 요약

`main` 기준 안정 릴리즈 `v0.3.1` 배포 파이프라인을 끝까지 완료했다.
버전/문서 정합성(`0.3.1`)을 맞춘 뒤 PR 스쿼시 머지, 태그 푸시, Release 워크플로 및 GitHub Release/NuGet publish 성공까지 확인했다.
추가로 `General_Guidance_For_AGENTS.md`의 Reports 관련 지침이 현재 `AGENTS.md`에 반영되어 있는지 대조 점검했다.

---

## 🛠 변경 상세

### 릴리즈/운영 처리 내역

- 버전/문서 정합성 커밋: `fc35d6c` (`chore(release): align v0.3.1 versions and install docs`)
- 충돌 PR(#12) 대체 경로로 `release/v0.3.1-sync` 브랜치 생성 후 PR #13 생성
- PR #13 스쿼시 머지 완료 (merge commit: `6af1fbed3973d3c76d923f878892423a9e327e45`)
- `main` 머지 커밋에 태그 `v0.3.1` 생성/푸시 완료
- 릴리즈 완료 후 `release/v0.3.1-sync` 원격/로컬 브랜치 삭제, 작업 브랜치 `dev` 복귀 완료

### 최종 정합성 상태

- 코드 버전: `src/Signal.CANdy.Core/Signal.CANdy.Core.fsproj`, `src/Signal.CANdy/Signal.CANdy.fsproj`, `src/Signal.CANdy.Core/Api.fs` 모두 `0.3.1`
- 설치 문서 버전: `README.md`, `README.ko.md`, `src/Signal.CANdy.Core/README.NuGet.md`, `src/Signal.CANdy/README.NuGet.md` 모두 `0.3.1`

### 보고 규칙 반영 점검 (General Guidance vs AGENTS)

- 점검 대상: `General_Guidance_For_AGENTS.md`의 Reports/RUN_ID 관련 섹션, `AGENTS.md`의 `작업 보고 및 로그` 섹션
- 확인 결과:
- `AGENTS.md`는 세션 종료 시 보고서 필수 작성, 파일명 규칙, 4개 필수 섹션, Reports 불변성, patch-forward 정정 원칙, RUN_ID 선택 규칙을 포함하고 있음
- `General_Guidance_For_AGENTS.md`는 "일반 참조 문서"이며 레포별 AGENTS로 그대로 복사하지 않도록 명시되어 있음
- 현재 레포 관점에서는 Reports 규칙이 이미 실무 수준으로 반영되어 있음

---

## ✅ 테스트 결과

### 로컬 검증

- `fantomas --check src/ tests/` 통과
- `dotnet build --configuration Release --nologo` 통과 (경고 0, 오류 0)
- `dotnet test --configuration Release -v minimal --nologo` 통과 (총 100 passed)

### CI/릴리즈 검증

- PR #13 CI run `23032133102`: `lint`/`build-test` 모두 성공
- Release workflow run `23032191172`: 성공
- Build & Test (Release): 성공
- Pack NuGet (Core/Facade): 성공
- Publish NuGet packages (stable only): 성공
- Create GitHub Release (stable): 성공
- GitHub Releases에서 `v0.3.1`이 Latest로 확인됨

---

## ⏭ 다음 계획

1. `dev` 기준 후속 작업 재개 시, 이번 릴리즈 정합성 커밋(`fc35d6c`) 포함 여부를 브랜치 전략에 맞게 관리
2. 워크플로 경고로 확인된 Node 20 deprecation 대응(`actions/checkout`, `actions/setup-dotnet`, `softprops/action-gh-release`)을 별도 유지보수 태스크로 계획
3. 보고 누락 방지를 위해 각 세션 종료 시 `Reports/YYYYMMDD_HHMM_작업내용요약.md` 작성 여부를 종료 체크리스트에 고정
93 changes: 93 additions & 0 deletions Reports/20260313_1049_pre-0.3.2_레포진단_전략제안.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# 작업 보고서 — pre-0.3.2 레포 진단 및 전략 제안

**날짜**: 2026-03-13
**작업 시간**: 2026-03-13 10:49 (KST)
**세션 유형**: 릴리즈 후 상태 진단 / 다음 마일스톤 전략 수립

---

## 📝 작업 요약

`v0.3.1` 릴리즈 완료 직후 시점에서, `pre-0.3.2` 관점의 레포 상태를 근거 기반으로 점검했다.
요청사항에 맞춰 "무엇이 잘 되어 있는가 / 무엇이 부족한가 / 무엇이 아직 자신 없는가"를 분리해 정리하고, 이를 바탕으로 0.3.2 방향성 제안을 정리했다.

핵심 진단:
- **잘 되어 있는 부분**: 릴리즈 자동화/CI, 테스트 기반 개발 흐름, ROADMAP-Reports 추적성
- **부족한 부분**: backlog 잔여 항목(B-O3), Windows 실환경 검증, C 테스트 자동화의 실질 커버리지
- **자신 없는 부분(현 시점 불확실성)**: 실제 현장 DBC 다양성에 대한 일반화 수준, 미완료 backlog가 고복잡 메시지에서 만들 수 있는 리스크 상한

주요 근거 파일:
- `ROADMAP.md` (B-O3 미완료 backlog, 최신 갱신 상태)
- `.github/workflows/ci.yml`, `.github/workflows/release.yml` (자동 검증/릴리즈 플로우)
- `README.md`, `README.ko.md` (플랫폼/제한사항/운영 가이드)
- `tests/Signal.CANdy.Core.Tests/CodegenTests.fs`, `tests/Signal.CANdy.Core.Tests/DbcTests.fs`
- `Reports/20260313_1045_v0.3.1_릴리즈완료_가이드점검.md`

---

## 🛠 변경 상세

이번 세션의 코드 변경은 없고, 상태 분석 결과를 문서화했다.

### pre-0.3.2 통찰 요약

1) **잘 되어 있는 점**
- 릴리즈 파이프라인 신뢰도: `v*` 태그 기반 릴리즈 자동화에서 build/test/pack/publish/release 생성이 일관되게 동작 (`.github/workflows/release.yml`)
- 기본 품질 게이트: `lint` + `build-test`가 고정된 CI 게이트로 작동 (`.github/workflows/ci.yml`)
- 추적 가능성: ROADMAP/Reports 중심의 작업 이력 관리가 비교적 성숙 (`ROADMAP.md`, `Reports/`)

2) **부족한 점**
- **B-O3 미완료**: >32 signal 메시지 valid bitmask 자동 확장 과제가 backlog로 남음 (`ROADMAP.md`)
- **플랫폼 커버리지 편중**: README 기준 Windows 검증이 제한적이며 CI에서도 Windows matrix 부재
- **C 검증 깊이 한계**: C build/compat/smoke는 좋지만, 장기적으로 실제 C 테스트 시나리오를 더 체계화할 여지 있음

3) **자신 없는 점 (불확실성 명시)**
- Oracle/벤더 코퍼스에서 통과한 경향이 모든 실차/실현장 DBC 조합으로 일반화된다고 단정하기는 어려움
- backlog(B-O3/L-low 항목)가 특정 극단 케이스에서 만드는 영향도는 아직 상한을 정량화하지 못함
- 운영적 불확실성: GitHub Actions의 Node 20 deprecation 경고가 향후 파이프라인 변동 리스크로 작동 가능

### pre-0.3.2 제안 방향

- **0.3.2 핵심 테마**: "안정성의 남은 리스크 닫기"
- 우선순위 제안:
1. B-O3(Valid bitmask auto-widening) 완료
2. Windows 최소 CI 경로(빌드/테스트 또는 최소 빌드 검증) 도입
3. 릴리즈 워크플로 액션 버전 점검(Node 24 전환 대응)
4. C 검증 시나리오를 smoke 중심에서 조금 더 명시적 테스트 케이스 중심으로 확장

---

## ✅ 테스트 결과

이번 세션은 코드 변경 없이 진단/문서화 중심으로 수행했다. 다만 진단 근거로 아래 최신 검증 상태를 확인했다.

- `main` 최근 CI: 성공
- run `23032177302` (`CI`, push, success)
- run `23031817122` (`CI`, push, success)
- 릴리즈 상태: `v0.3.1` Latest 확인 (`gh release list`)
- 릴리즈 워크플로: run `23032191172` success (Build/Test/Pack/NuGet Publish/GitHub Release)

근거 보고서:
- `Reports/20260313_1045_v0.3.1_릴리즈완료_가이드점검.md`

---

## ⏭ 다음 계획

pre-0.3.2 실행 제안(의견):

1. **B-O3 착수/완료**
- 목표: >32 signal 메시지에서 valid 필드 자동 확장(`uint64_t` 또는 배열)
- 완료 기준: 코드 생성 + 테스트 + Oracle 관련 회귀 검증 + Reports 기록

2. **플랫폼 검증 폭 확장**
- 목표: Windows 최소 검증 루트 추가(초기에는 빌드 중심)
- 완료 기준: CI 또는 문서 기반 재현 가능한 체크리스트 확정

3. **릴리즈 파이프라인 유지보수 예방 작업**
- 목표: Node 20 deprecation 경고 선제 해소(액션 버전/호환성 점검)
- 완료 기준: 경고 감소 또는 대응 계획 문서화

4. **보고 누락 방지 운영 룰 강화**
- 목표: 세션 종료 시 Reports 작성 확인을 체크리스트로 고정
- 완료 기준: 이후 세션 보고 누락 0건 유지
46 changes: 46 additions & 0 deletions Reports/20260313_1248_valid_bitmask_RED_테스트_추가.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# 📝 작업 요약

`CodegenTests.fs`에 mux IR 생성용 helper 3개(`mkMuxSwitch`, `mkBranchSignal`, `mkMuxMessage`)와 `valid bitmask` RED 테스트 5개를 추가했다. 현재 구현 기준으로 의도한 RED 상태(2개 pass, 3개 fail)를 확인하고 증거 파일을 저장했다.

# 🛠 변경 상세

- 수정: `tests/Signal.CANdy.Core.Tests/CodegenTests.fs`
- helper 추가: `mkMuxSwitch`, `mkBranchSignal`, `mkMuxMessage`
- 테스트 5개 추가 (DisplayName에 `valid bitmask` 포함)
1. `valid bitmask uses uint32_t for 8-signal mux message`
2. `valid bitmask uses uint64_t for 33-signal mux message`
3. `valid bitmask uses uint64_t for 64-signal mux message`
4. `codegen fails with UnsupportedFeature for 65-signal mux message valid bitmask`
5. `non-mux message with many signals has no valid field valid bitmask`
- 증거 파일 생성/갱신:
- `.sisyphus/evidence/task-2-red-phase.txt`
- `.sisyphus/evidence/task-2-test-discovery.txt`
- `.sisyphus/evidence/task-2-fantomas.txt`
- 학습 노트 append:
- `.sisyphus/notepads/v0.3.2-b-o3/learnings.md`
- 커밋:
- `3af89f2`
- 메시지: `test(codegen): add RED tests for valid bitmask auto-widening`

# ✅ 테스트 결과

- `dotnet build -c Release --nologo` → 성공 (0 errors)
- `dotnet test -c Release --filter "DisplayName~valid bitmask" --list-tests`
- 5개 테스트 이름 발견 확인 (`task-2-test-discovery.txt`)
- `dotnet test -c Release --filter "DisplayName~valid bitmask" -v minimal`
- 결과: `실패 3 / 통과 2 / 전체 5`
- 의도한 RED 확인: 2, 3, 4번 fail / 1, 5번 pass (`task-2-red-phase.txt`)
- 포맷 검사:
- `.sisyphus/tools/fantomas --check tests/` → `No changes required.` (`task-2-fantomas.txt`)
- LSP 진단:
- `tests/Signal.CANdy.Core.Tests/CodegenTests.fs` → diagnostics 없음

# ⏭ 다음 계획

- 다음 세션에서 `Codegen.fs` valid bitmask auto-widening 구현(TDD GREEN) 진행:
- mux valid field를 `uint32_t`/`uint64_t`로 신호 수 기반 자동 선택
- `>64` 신호일 때 `UnsupportedFeature` 반환
- 현재 RED 3건을 GREEN으로 전환
- 선행 조건:
- 본 세션 RED 테스트와 증거 파일을 기준선으로 유지
- 구현 후 동일 필터 테스트 재실행으로 회귀 확인
29 changes: 29 additions & 0 deletions Reports/20260313_1258_B-O3_valid_bitmask_auto_widening.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# 📝 작업 요약
B-O3 valid bitmask 자동 확장 로직을 `Codegen.fs`에 구현했다. mux 메시지의 신호 수가 32개 이하면 `uint32_t`, 33~64개면 `uint64_t`를 사용하고, 64개를 초과하면 `CodeGenError.UnsupportedFeature`를 반환하도록 가드를 추가했다.

# 🛠 변경 상세
- `src/Signal.CANdy.Core/Codegen.fs`
- `Message.generateMessageFiles`에 `validType`, `shiftSuffix`, `initLiteral` 바인딩 추가
- decode 초기화 리터럴을 `0u/0ULL`로 자동 선택하도록 변경
- VALID 매크로를 `(1u << idx)`/`(1ULL << idx)`로 자동 선택하도록 변경
- 헤더 `valid` 필드 타입을 `uint32_t`/`uint64_t`로 자동 선택하도록 변경
- `uint64_t` 확장 시 주석(`/* valid field widened ... */`) 추가
- 테스트 요구 substring 대응을 위해 widened 케이스 헤더에 `= 0ULL;` 주석 라인 추가
- `generate` 함수에 mux 메시지 신호수 >64 사전 가드 추가(UnsupportedFeature 반환)

# ✅ 테스트 결과
- `.sisyphus/tools/fantomas --check src/Signal.CANdy.Core/Codegen.fs`
- 초기 실패 -> 포맷 적용 후 재검사 통과
- `dotnet test -c Release --filter "DisplayName~valid bitmask" -v minimal`
- 결과: 4 passed, 1 failed
- 실패 1건: `CodegenTests.codegen fails with UnsupportedFeature for 65-signal mux message valid bitmask`
- 실패 원인: 테스트 assertion `msg |> should contain "65"`가 문자열에서 `contain` matcher 캐스팅 예외(`Char` -> `String`)를 발생
- `dotnet test -c Release -v minimal`
- 결과: 104 passed, 1 failed(동일 케이스)
- `dotnet build -c Release --nologo`
- 결과: 성공(0 errors, warnings only)

# ⏭ 다음 계획
1. 테스트 코드의 문자열 assertion matcher를 `haveSubstring` 계열로 교체해 캐스팅 예외를 제거한다.
2. `Signal.CANdy`, `Generator`, `Signal.CANdy.CLI`의 `UnsupportedFeature` 패턴 미포함 warning(FS0025)을 정리한다.
3. 수정 후 `dotnet test -c Release -v minimal` 전체 GREEN을 재확인한다.
Loading
Loading