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:
40
docs/history/2026-04-07_이슈9-engine-bridge-evaluator.md
Normal file
40
docs/history/2026-04-07_이슈9-engine-bridge-evaluator.md
Normal 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` 가 관찰 가능한 증거.
|
||||
31
docs/history/2026-04-07_이슈9-engine-bridge-orchestration.md
Normal file
31
docs/history/2026-04-07_이슈9-engine-bridge-orchestration.md
Normal 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 로드 세이프티 이슈가 있어 별도 이슈로 분리 권장.
|
||||
Reference in New Issue
Block a user