# 2026-04-17 코어프레임워크 대화로그 ## [PM 소급 작성] Tier 1 잔여 9종 구현 — Attribute 3 + Util 6 (프로젝트 자산 관점) - **요지**: PD님 2026-04-17 "재량껏 진행 가능한 나머지 일괄 승인, 마무리" 지시에 따라 개발팀장이 코어프레임워크(`코어코드/BT.Framework/`)에 Tier 1 기반 모듈 9종 신규 구현. 기존 Tier 1 기반 Core 4종(Log·CoroutineRunner·MonoSingleton·ServiceLocator)에 이어 총 13/16종 달성 - **이유**: 헌법 제1원칙 목표 2 원칙 A — 차기 프로젝트부터 코어 프레임워크를 조직 자산으로 적극 활용. 범용성 높은 모듈을 PD님 승인 일괄 작업으로 선반영 - **구현 모듈**: - **Attribute 3종**: `ReadOnlyAttribute` · `ShowIfAttribute` · `ArrayTitleAttribute` (인스펙터 UX 공통 패턴) - **Util 6종**: `EnumToInt`(박싱 회피 `Unsafe.As<,>`) · `EnumEx` · `FormatEx` · `MathEx` · `KeyMaker`(구분자 `:` 표준) · `ValidationEx` - **테스트 7 파일**: 각 Util 단위 테스트 + Attribute 통합 테스트 (기존 28건 체계 확장) - **산출물 경로**: - `코어코드/BT.Framework/Runtime/Core/Attribute/` (3 파일) - `코어코드/BT.Framework/Runtime/Core/Util/` (6 파일) - `코어코드/BT.Framework/Tests/Runtime/Core/` (7 파일) - `코어코드/BT.Framework/CHANGELOG.md` Unreleased 섹션 갱신 - **상태**: 완료 (라운드 승인분) - **기각안**: 1. `Convert.ChangeType` 캐시 방식 — `Unsafe.As<,>` 대비 박싱 발생, 핫패스 성능 저하로 기각 2. KeyMaker 구분자 `_` 사용 — 수상한잡화점 `_`/`:` 혼재 조회 실패 경험 기반, `:` 단일 표준으로 기각 3. UnityEngine 의존 허용 — 서버·배치 재사용 불가, C11(범용성) 위반으로 순수 BCL 의존만 허용 4. Tier 1 16종 완전 구현 단일 라운드 완결 — Data·Event·Container 3종은 상호작용 설계 재검증 필요, 무리 구현 시 아키텍처 부채 우려. 별도 PD 지시 #36으로 분리 ## [PM 소급 작성] Tier 1 잔여 3종(Data·Event·Container) 신규 지시 #36 분리 - **요지**: Tier 1 16종 중 13종 완료 상태에서 잔여 3종(Data·Event·Container)을 #1 우산 지시에서 분리하여 개발팀 PD 지시 로그 #36으로 신규 등재. 상태: 대기. 재개 트리거: 상호작용 설계 재검증 완료 - **이유**: 장기 우산 지시의 라운드 완결 아카이브 원칙(`memory/feedback_log_round_completion.md`) 적용 — 마무리된 라운드는 완료 아카이브, 잔여는 별도 신규 지시. 세션 전환 시 "완료된 업무가 진행중으로 보이는" 왜곡 구조적 차단 - **산출물**: `공유/PD_지시_트래킹/개발팀_PD_지시_로그.md` #36 신규 등재, #1 완료 아카이브 이동 - **상태**: 완료 (로그 정리까지) - **기각안**: 없음 (로그 정리 원칙 적용) ## [개발팀장] Tier 1 잔여 3종(Data·Event·Container) 설계 + 구현 + 테스트 완료 - **요지**: PD님 "즉시 수행" 지시(#36) 수령 → 설계 문서 선행 작성 → Event/Container/Data 3개 모듈 구현 → NUnit 단위 테스트 5종 + CHANGELOG 갱신. 외부 레포(`코어코드/BT.Framework/`) git 최신 상태 점검 후 작업(C30 준수, origin 대비 로컬 2 커밋 앞 · behind 없음). - **이유**: 헌법 제1원칙 목표 2 원칙 A — 코어 프레임워크는 차기 프로젝트 조직 자산. Tier 1 16종 중 13종 완료 상태에서 잔여 3종을 상호 의존성 명확화한 설계 기반으로 마무리. 수상한잡화점 자산은 전혀 건드리지 않음(원칙 A "현 프로젝트 미사용" 준수). - **산출물**: - 설계: `프로젝트/코어프레임워크/04_Tier1_3종_상호작용_설계_v1.md` (P18 의무 이행) - 코드: `코어코드/BT.Framework/Runtime/Core/Event/EventBus.cs` · `Event/Raw/RawEventBus.cs` · `Container/{ObservableList,ObservableDictionary,ObservableQueue}.cs` · `Data/{IDataRow,DataTable,DataTableSO,DataTableLoader,DataTableLoadedEvent}.cs` - 테스트: `Tests/Runtime/Core/Event/EventBusTests.cs` · `Container/{ObservableList,ObservableDictionary,ObservableQueue}Tests.cs` · `Data/DataTableTests.cs` - CHANGELOG: Unreleased 섹션 Event·Container·Data 3블록 추가 - **상태**: 완료 (외부 레포 커밋·조직 레포 커밋은 PD님 "세션 공유" 지시 시점에 일괄 push — C20-1-A 준수) - **기각안** (설계 §6 영구 기록): 1. **Event 인스턴스 버스 vs 정적**: 정적 채택. 기각 — IoC는 Tier 3 Network 도입 시 재검토, 현 시점 토큰·호출 비용·관례상 정적 우위 2. **Event 약한 참조(WeakReference) vs 강한 참조**: 강한 참조 채택. 기각 — 람다 캡처 수명 예측 난해, 명시 Unsubscribe 의무가 예측 가능·단순 3. **Container 단일 `Changed` 이벤트 vs 세분화(Added/Removed/Updated/Reset)**: 세분화 채택. 기각 — 불필요 dispatch 감소·시그니처 가독성·ChangeArgs 박싱 회피 4. **Data `DataTable` int 키 고정 vs 제네릭 ``**: 제네릭 채택. 기각 — 기존 `MasterTableBase` int 고정이 확장성 부족, 문자열·enum 키 수요 잦음 5. **CSV 파서 `CsvHelper` 외부 라이브러리 vs 최소 자체 구현**: 최소 자체 채택. 기각 — Tier 1 외부 의존성 최소 원칙, 기획팀 통제 CSV라 RFC 4180 핵심(쉼표·따옴표·escape)만으로 충분 6. **JSON `Newtonsoft.Json` vs Unity `JsonUtility`**: JsonUtility 채택(래퍼 기반). 기각 — PC 독립 설치 보장 어려움, 한계(Dictionary·polymorphism) 명시 후 고급 케이스는 호출자 자체 파싱 경로 안내 7. **3개 모듈 asmdef 분리 vs 단일 유지**: 단일 유지. 기각 — 현 파일 수 규모에서 단일 참조 소비자 경험 우위, DAG 명확하여 순환 위험 낮음. Tier 2 확장 시 재검토