# Architecture — recordingtest 3-tier layout ## 폴더 레이아웃 ``` src/ ├── Recordingtest.Recorder/ # Generic ├── Recordingtest.Player/ # Generic ├── Recordingtest.Normalizer/ # Generic ├── Recordingtest.DiffReporter/ # Generic ├── Recordingtest.Runner/ # Generic ├── Recordingtest.SutProber/ # Generic ├── Recordingtest.Bridge.Abstractions/ # Generic — IEngineStateProvider, ITargetResolver ├── Recordingtest.Bridge.Client/ # Generic — HTTP sidecar 클라이언트 ├── Hmeg/ │ ├── Recordingtest.Hmeg.Bridge/ # HmEG-aware — Space/Camera/Selection │ ├── Recordingtest.Hmeg.Catalog/ # HmEG-aware — 정적 분석/후보 탐색 │ └── Recordingtest.Hmeg.Bridge.Client/# HmEG-aware — HmEgHttpSnapshot └── Sut/ └── EgBim/ └── Recordingtest.Sut.EgBim.PluginHost/ # MEF entry, EditorPlugin 상속, HttpListener tests/ ├── Recordingtest.*.Tests/ ├── Recordingtest.Architecture.Tests/ # 의존 그래프 11건 강제 ├── Hmeg/Recordingtest.Hmeg.*.Tests/ └── Sut/EgBim/Recordingtest.Sut.EgBim.*.Tests/ ``` ## 새 SUT 추가 시 HmEG-aware 재사용. 앱마다 다른 부분만 신규 작성: ``` src/Sut// Recordingtest.Sut..PluginHost/ # MEF entry Recordingtest.Sut..Adapter/ # AppManager 어댑터 (필요 시) ``` ## 모듈 분류 현황 (2026-04-09) | 모듈 | 계층 | |---|---| | Recorder, Player, Normalizer, DiffReporter, Runner, SutProber, Bridge.Abstractions, Bridge.Client | Generic | | Hmeg.Bridge, Hmeg.Catalog, Hmeg.Bridge.Client | HmEG-aware | | Sut.EgBim.PluginHost | App-specific |