Orchestrate engine-bridge PoC v1 evaluation (#9)

- Static HmEG catalog via MetadataLoadContext, 13 assemblies, 11k+ candidates
- IEngineSnapshot API draft + probe design doc (plugin masquerade recommended)
- All DoD pass on first iteration

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
minsung
2026-04-07 15:53:10 +09:00
parent 2a4f1d3fa4
commit 4cee3c2d86
5 changed files with 137 additions and 4 deletions

View File

@@ -0,0 +1,40 @@
# 이슈 #9 — engine-bridge PoC v1 Evaluator
- 날짜: 2026-04-07
- 이슈: #9
- 역할: Evaluator (Generator와 독립, 엄격 채점)
- 대상 커밋: `2a4f1d3`
- 소요 시간: 약 10분
- Context 사용량: 약 55k / 1M 토큰 (추정)
## 수행
1. `docs/contracts/engine-bridge.md` 계약 재확인
2. `IEngineSnapshot.cs`, `HmEgSnapshot.cs`, `MetadataLoader.cs`, `CandidateFinder.cs`, `CatalogWriter.cs`, `Program.cs`, `EngineBridgeTests.cs`, `docs/engine-bridge-probe-design.md` 전수 정독
3. `dotnet build recordingtest.sln` — 0 경고 0 오류
4. `dotnet test tests/Recordingtest.EngineBridge.Tests` — 6 통과 / 0 실패
5. 금지 패턴 grep (`Activator.CreateInstance`, `Assembly.Load(` non-path, `RunClassConstructor`, P/Invoke) — 전부 0건
6. SUT 쓰기 검사 (`File.Write*`, `StreamWriter`, `"EG-BIM Modeler"` 리터럴) — EngineBridge src 내 0건
7. 프로브 2회 실행 (`/tmp/engine-catalog-eval`, `/tmp/engine-catalog-eval2`) — exit 0, `diff -q` 양 쌍 모두 비어있음
8. `docs/engine-catalog/hmeg-candidates.json` 검증 — 4 카테고리 모두 present, `HmEGAppManager` 8회 등장
9. 평가 리포트 `docs/contracts/engine-bridge.evaluation.md` 작성
10. 본 히스토리 파일 작성
## 결과
**VERDICT: PASS** — 모든 DoD 항목 통과.
- 13 어셈블리 로드: HmEG(2285) / HmGeometry(532) / HmGeometry.V2(1669) / HmTriangle(113) / EditorCore(416) / Editor01..07 + Editor.AI01.HttpConnector
- 카테고리 분포: select=726, camera=4226, scene=3081, render=3602 (총 11,635)
- 결정성 확인: 두 번 실행 byte-identical
- Probe 설계 문서: 5개 옵션 비교 + 렌더 신호 지연 표 + 명시적 권고 (plugin masquerade)
## 산출물
- `docs/contracts/engine-bridge.evaluation.md`
- `docs/history/2026-04-07_이슈9-engine-bridge-evaluator.md`
## 비고
- Generator 코드 및 `PROGRESS.md`는 수정하지 않음.
- `MetadataLoadContext` 는 타입 이니셜라이저를 실행하지 않는다는 CLR 보장 덕에 "정적 전용" 요건이 구조적으로 만족됨. 테스트 `MetadataLoader_LoadsHmegAssembly_WithoutExecution` 가 관찰 가능한 증거.

View File

@@ -0,0 +1,31 @@
# 2026-04-07 이슈 #9 — engine-bridge PoC v1 오케스트레이션
- **이슈**: #9 (engine-bridge v1)
- **소요 시간**: ~12분 (1회 사이클)
- **Context 사용량**: ~265k tokens (orchestrator 누적)
## 사이클
1. Planner 역할로 `docs/contracts/engine-bridge.md` 작성
2. 이슈 #9 생성
3. Generator 백그라운드 → commit `2a4f1d3` (6/6 tests, 13 assemblies, 결정적 카탈로그)
4. Evaluator 백그라운드 → **pass** (12/12 DoD)
5. PROGRESS/PLAN 갱신, 이슈 #9 close
## 핵심 발견
HmEG 내부에 selection/camera/scene/render 관련 멤버가 **수천 개** 존재 (obfuscation 없음). 플러그인 masquerade 경로가 매우 유력.
- select 후보: 726
- camera 후보: 4226
- scene 후보: 3081
- render 후보: 3602
- `HmEGAppManager` 타입이 다수 확인됨 → MEF entry point 후보
## 비용
Generator ~66k + Evaluator ~40k + Orchestrator ~15k = **~121k**
## 다음 단계
**engine-bridge v2** — MEF plugin masquerade 구현. 단, 뷰포트 selection 문제 해결의 1순위 경로이긴 하나, v1까지로 Sprint Contract 만족. v2는 SUT 팀 협조/plugin 로드 세이프티 이슈가 있어 별도 이슈로 분리 권장.