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>
This commit is contained in:
48
docs/contracts/sut-prober.md
Normal file
48
docs/contracts/sut-prober.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# 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 `\`) 정규화 정책 — 출력에서 `/`로 통일 권장.
|
||||
Reference in New Issue
Block a user