Files
recordingtest/docs/contracts/sut-prober.md
minsung 7ffbb1f757 Set up AI dev environment for recordingtest (#2)
- 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>
2026-04-07 13:57:20 +09:00

49 lines
2.4 KiB
Markdown

# Sprint Contract — sut-prober
**Owner:** Generator (일반 세션)
**Depends on:** 없음
**Issue:** #2
## Goal
EG-BIM Modeler SUT의 **정적** 구조(플러그인·설정·어셈블리)를 덤프해 `docs/sut-catalog/`에 베이스라인 가능한 카탈로그를 생성한다. SUT는 실행하지 않는다.
## Definition of Done
- [ ] `dotnet run --project src/Recordingtest.SutProber` 실행으로 카탈로그 3종이 생성된다: `plugins.json`, `json-configs.json`, `assemblies.json`
- [ ] `plugins.json``EG-BIM Modeler/Plugins/Eg*Plugin/` 187개(±) 전부를 담고, 각 항목은 `{ name, path, dlls[], size_bytes }` 형식
- [ ] `json-configs.json``EG-BIM Modeler/Json/*.json` 각 파일별 `{ name, top_level_keys[], suspected_nondeterministic_fields[] }`
- [ ] `assemblies.json``HmEG*.dll`, `Editor*.dll`, `HmGeometry*.dll``{ name, size, has_pdb }`
- [ ] 출력은 **정렬되어 있어** 두 번 실행해도 동일 (decimal/텍스트 diff 없음)
- [ ] `EG-BIM Modeler/` 폴더에 대한 쓰기 접근이 없다 (코드 리뷰로 확인)
- [ ] 경로는 repo root 상대 경로로 기록(절대 경로 금지)
## Interfaces / contracts
- **Inputs:** `EG-BIM Modeler/` (read-only), CLI 인자 `--sut <path>` (기본 `EG-BIM Modeler`)
- **Outputs:** `docs/sut-catalog/plugins.json`, `docs/sut-catalog/json-configs.json`, `docs/sut-catalog/assemblies.json`
- **Side effects:** 없음 (로그 제외)
## Out of scope
- SUT 실행 / 리플렉션 / 동적 분석
- PDB 파싱 (engine-bridge의 몫)
- UIA 트리 덤프 (recorder 또는 별도 PoC의 몫)
## Evaluation plan
evaluator는 다음을 수행:
1. `dotnet build` 성공
2. `dotnet run --project src/Recordingtest.SutProber -- --sut "EG-BIM Modeler"` 실행, exit code 0 확인
3. 세 카탈로그 파일 존재 확인 + JSON 파싱 유효성
4. `plugins.json` 엔트리 수 ≥ 180
5. 두 번째 실행 후 세 파일 `git diff` 결과가 비어있음을 확인 (결정성)
6. `grep -r "EG-BIM Modeler" src/Recordingtest.SutProber/` 결과에 `File.Write|File.Delete|File.Create` 호출 없음 확인
## Risks / open questions
- .NET 버전 합의 필요 (`net8.0` 제안). SUT와 다를 수 있으나 prober는 독립 프로세스이므로 무관.
- 플러그인 폴더 구조가 일정한지 샘플 확인 필요.
- 경로 구분자(Windows `\`) 정규화 정책 — 출력에서 `/`로 통일 권장.