Implement normalizer PoC (#4)
This commit is contained in:
39
docs/history/2026-04-07_이슈4-normalizer-generator.md
Normal file
39
docs/history/2026-04-07_이슈4-normalizer-generator.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# 2026-04-07 이슈 #4 — Normalizer PoC (Generator)
|
||||
|
||||
## 요약
|
||||
`Recordingtest.Normalizer` 라이브러리와 xUnit 테스트 프로젝트를 신설하여 골든파일 정규화 PoC를 구현했다. `default.yaml` 프로파일에 5개 규칙(strip_timestamps, mask_guids, normalize_paths, round_floats, sort_json_keys) 등록.
|
||||
|
||||
## 산출물
|
||||
- `src/Recordingtest.Normalizer/` (라이브러리)
|
||||
- `Recordingtest.Normalizer.csproj` (YamlDotNet, System.Text.Json)
|
||||
- `Normalizer.cs`, `Rules.cs`, `Profile.cs`, `RuleApplication.cs`
|
||||
- `profiles/default.yaml`
|
||||
- `tests/Recordingtest.Normalizer.Tests/`
|
||||
- `RuleTests.cs` (규칙별 단위 테스트 + idempotent + 5-rule 적용 확인)
|
||||
- `CoverageTests.cs` (json-configs.json suspectedNondeterministicFields 매핑 검증)
|
||||
- `recordingtest.sln` 두 프로젝트 추가
|
||||
|
||||
## 결과
|
||||
- `dotnet build`: 경고 0, 오류 0
|
||||
- `dotnet test`: 8/8 pass
|
||||
|
||||
## 매핑 (suspectedNondeterministicFields → 규칙)
|
||||
- `*FilePath`, `*FileName` → `normalize_paths`
|
||||
- 그 외 스칼라 설정값 → `sort_json_keys` (직렬화 시 키 순서 결정성 확보)
|
||||
- 추가 값-수준 비결정성 → `strip_timestamps`, `mask_guids`, `round_floats`
|
||||
|
||||
자세한 근거는 `tests/Recordingtest.Normalizer.Tests/CoverageTests.cs` 헤더 주석 참조.
|
||||
|
||||
## 소요 시간
|
||||
약 25분
|
||||
|
||||
## Context 사용량
|
||||
약 55k tokens
|
||||
|
||||
## 관련 이슈
|
||||
#4
|
||||
|
||||
## 비고 / DoD 미충족 항목
|
||||
- 사이드카 로그 파일 생성은 라이브러리 책임에서 제외하고 `NormalizeResult.Log`로 반환만 한다 (추후 CLI에서 영속화 예정 — 계약서의 sidecar 파일 작성 항목은 부분 충족).
|
||||
- 정규화 epsilon은 6자리 고정. 향후 프로파일에서 구성 가능하도록 확장 필요.
|
||||
- Evaluator가 위 두 항목을 어떻게 판정할지 별도 확인 필요.
|
||||
Reference in New Issue
Block a user