- CLAUDE.md with collaboration rules and Planner/Generator/Evaluator cycle - .claude/ agents, commands, skills, hooks per Claude Code conventions - Sprint Contracts for sut-prober, normalizer, recorder, player, diff-reporter - SUT catalog (EG-BIM Modeler, 187 plugins) and .gitignore excluding SUT tree - PROGRESS.md / PLAN.md as shared agent handoff state - Solution scaffold targeting sut-prober PoC Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
45 lines
1.6 KiB
Markdown
45 lines
1.6 KiB
Markdown
# Sprint Contract — diff-reporter
|
|
|
|
**Owner:** Generator
|
|
**Depends on:** normalizer (정규화된 입력)
|
|
**Issue:** #2
|
|
|
|
## Goal
|
|
|
|
`*.approved`와 `*.received` 쌍을 받아 의미 있는 diff를 생성하고, 실패 지점을 시각화한다. `diff-triager` 서브에이전트가 읽을 수 있는 구조화 출력도 제공.
|
|
|
|
## Definition of Done
|
|
|
|
- [ ] `Recordingtest.DiffReporter` 라이브러리 + CLI
|
|
- [ ] 입력: `--approved <path> --received <path> --out <dir>`
|
|
- [ ] JSON/텍스트 파일은 라인·객체 단위 의미 diff, 바이너리는 hex 요약 diff
|
|
- [ ] 출력: `diff.json`(구조화), `diff.md`(사람용), `diff.html`(옵션, side-by-side)
|
|
- [ ] `diff.json` 스키마: `{ file, hunks[], summary: { added, removed, changed } }`
|
|
- [ ] 동일 파일 비교 시 "identical"로 단정, exit code 0
|
|
- [ ] 차이 존재 시 exit code 1 + 요약을 stdout 1줄
|
|
- [ ] diff-triager 에이전트가 `diff.json`만 읽어 bucket 분류 가능 (통합 테스트 1개)
|
|
|
|
## Interfaces
|
|
|
|
- **Inputs:** 두 파일 경로
|
|
- **Outputs:** `diff.json`, `diff.md`, (옵션) `diff.html`
|
|
- **Side effects:** 없음
|
|
|
|
## Out of scope
|
|
|
|
- 정규화 자체 (normalizer)
|
|
- triage 분류 로직 (diff-triager 에이전트)
|
|
- 자동 approve (`/approve` 커맨드)
|
|
|
|
## Evaluation plan
|
|
|
|
1. 동일 파일 2개 → identical 판정
|
|
2. 1필드만 바뀐 JSON → `diff.json.hunks.length == 1`
|
|
3. 바이너리 파일 diff → hex summary 출력
|
|
4. diff-triager에 통합: normalization gap 케이스에서 bucket=`normalization_gap` 분류 확인
|
|
|
|
## Risks
|
|
|
|
- 큰 파일(수십 MB 모델)에서 성능 — 스트리밍 diff 필요
|
|
- JSON 스키마 변경 시 triager 하위 호환성
|