BurningTimesAi/공유/대화로그/GodDem/2026-08-24.md

163 lines
36 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GodDem 대화로그 — 2026-08-24
> §번호는 프로젝트 누적 연속 (2026-08-23.md §100에서 이어짐)
## 101. B4 ele HeroGrade 축 구현 완료 — 원작 2차원 구조 이식 (개발팀장, GodDem 로컬 커밋 3fbc8b1)
§99·§100 설계 v2(정정 반영본)의 구현. PD 확정 2건 반영 — ①구조 = 원작과 동일하게 영웅 등급별 계열 ②시작 영웅 HeroGrade = 4(최저).
- **근본 구조**: 원작 `heroskillattr`**(영웅 등급 × 강화 단계) 2차원**이고, 같은 스탯이라도 영웅 등급이 높을수록 단계값이 크고 단수도 깊다(등급4=3단·5=4단·6=5단). GodDem 은 이를 단일 축으로 눌러 담아 왔고, 그 결과 §87 재추출이 드러낸 "어느 계열을 이식할 것인가"가 **구조적으로 표현 불가능**했다. 축을 세워 해소한다 — 조회는 항상 현 히어로 등급의 슬라이스만 본다.
- **CSV 재구성(신 스키마 6컬럼 · 데이터 22행 · 파일 24줄)**: `n_NodeId,s_StatKey,n_HeroGrade,n_Grade,f_Value,l_Cost`
- Node1(`penetrate_ratio`) 6행 — HeroGrade 축 **미편입**, 전 행 HG4 고정(스키마 호환만·값 비용 무변경). 편입 여부는 PD Q2 이후 별도(설계 v2 §3).
- Node2(`ele_hurt_add`) HG4 3행(0.05/0.10/0.15) + HG6 5행(0.07~0.35)
- Node3(`ele_penetrate_ratio`) HG4 3행(0.03/0.06/0.09) + HG6 5행(0.05~0.25)
- **HeroGrade5 8행 미수록**(설계 v2 §1-2 M-2) — 원작 개별 스텝값이 범위로만 실측돼, 추정치가 데이터 파일에 박히면 이후 이 CSV 만 보는 사람이 실측으로 오인한다. 재추출 후 수록.
- **코드(3파일)**: `SurvivalSkillMasteryTable``Row.HeroGrade` 신설·`_rows` 3차원 키·`_maxGradeByNode` (node,heroGrade) 키·로더 인덱스 `c[2]`HeroGrade/`c[3]`Grade/`c[4]`Value/`c[5]`StepCost + `c.Length<6` 가드·`MaxGradeOf`/`ValueAt`/`CumulativeCostAt` 에 heroGrade 인자 / `SurvivalMeta``Data.HeroGrade=4` 신설·세이브 **v5→v6**·`Load()` 에 `if (_data.HeroGrade <= 0) _data.HeroGrade = 4;`·소비 메서드 4종 내부 전환(**시그니처 유지** — HeroGrade 는 `GachaAttackRatio` 류 관행대로 암묵 컨텍스트로 흡수) / UI `ValueAt` 직통 1줄.
- **§1-4 원칙 이행**: 시그니처를 바꾼 3심볼(`ValueAt`·`CumulativeCostAt`·`MaxGradeOf`) 전 호출부를 **착수 전 grep 전수 확인** → 설계 스펙이 전량 커버함을 확인 후 착수. 변경 후 재grep 결과 **구 2인자 호출 0건**.
- **★ 마이그레이션 방침(설계 명세 공백 구간 — 개발팀장 판단·PM 보고 대상)**: 구 세이브가 Node2·3 를 구 6단 기준으로 신 캡(HG4=3) 초과 보유한 경우 → **저장값 보존 + 조회 시 캡 클램프** 채택. `ValueAt` 이 캡 단계값(0.15)으로 수렴해 값 증발이 없고 `CanUpgrade=false`·`UpCost=-1` 로 추가 구매가 막힌다. **저장값을 지우지 않는 이유**: HeroGrade 는 향후 상승 가능한 축이라(설계 v2 §5-3 등급승급 도입 시), 지금 파괴하면 등급 상승 시 되살아났을 진행도를 영구 손실시킨다 — 보존이 유일하게 가역적이다.
- **⚠ 부작용 보고(미구현·보고만)**: 위 경우 UI 가 **`Grade 6/3`** 으로 분모 초과 표기된다. 저장값을 정직하게 보이는 표기이나 PD 플레이테스트에서 버그로 보일 수 있다. **표기 변경은 설계 미명세라 임의 구현하지 않았다** — PM·designer 판단 영역.
- **기각안(C32)**: ①**세이브 클램프**(초과 grade 를 캡으로 덮어쓰기) — 기각: 비가역이고 설계 §6-3 "기존 진행도 무손실" 문언에 정면 위배. ②**초과 투자분 골드 환불** — 기각: 설계 미명세이며 B2 환불 체계와 별개인 신규 정책 신설 = C36 영역. ③**HeroGrade5 8행을 🟡 표기로 CSV 수록** — 기각(설계 v2 §1-2 (나) 승계): `f_Value`/`l_Cost` 는 순수 수치 컬럼이라 CSV 자체로 "추정" 사실을 전달할 방법이 없다. ④**계열별 CSV 파일 3분리** — 기각(설계 v2 §1-2 승계): 로더 3배·등급 추가 시 파일 신설 필요. 컬럼 추가는 로더 1개·파일 1개 유지.
- **검증(신 표준 — 컴파일 결과 요지 직접 인용)**: Roslyn 실컴파일 **에러 0 · 경고 6**, 6건 전부 기존 파일 — `Singleton.cs(52,40)` CS0618 · `Singleton.cs(54,29)` CS0618 · `Singleton.cs(10,29)` CS0414 · `UGUIBattleSceneUIController.cs(112,17)` CS0618 · `UGUILobbySceneUIController.cs(152,17)` CS0618 · `SurvivalLobbyController.cs(95,17)` CS0618. **본 4파일発 경고 0**.
- **데스크 체크(CSV 를 로더 로직 그대로 재현·전 항목 통과)**: 데이터 22행 / 슬라이스 5개(node1 HG4=6단 · node2 HG4=3·HG6=5 · node3 HG4=3·HG6=5) / **설계 §4 표 대조 불일치 0건**(누적 Node2 HG4 41,525G·HG6 244,860G · Node3 HG4 24,915G·HG6 174,900G · Node1 59,950G) / HeroGrade5 행 **0건**(M-2 준수) / §6 시나리오 — #1 신규유저 ratio **0** · #2 `MaxGradeOf(2,4)=3`·`ValueAt(2,4,3)=0.15`·`CanUpgrade=false`·`UpCost=-1` · #4 `ValueAt(2,6,5)=0.35`·`MaxGradeOf(2,6)=5` · #5 Node1 6단 값 무변화 / **§4-3 결합 — 승산항 상한 0.30**(0.06+0.15+0.09) · **3노드 총액 126,390G** 설계치 정확 일치.
- **회귀**: 변경 4파일뿐 — 가챠·기절·합성·장비강화·카탈로그 **무접촉**(grep 확인). 신규유저 마스터리 ratio 0 이라 **22/400 불변**. B2 강화 경로 무접촉.
- **pm-auditor**: 개정 게이트(설계 plan-auditor 통과 = 사전 감사·pm-auditor 사후) 적용 — 호출 완료·판정 대기 없이 커밋. 매니페스트 `2026-08-24_014511` 등록. 판정 도착 시 PM 중계.
- **C6 백업**: `공유/개발팀_백업/GodDem/{SurvivalMetaSkillMastery.csv,SurvivalSkillMasteryTable.cs,SurvivalMeta.cs,SurvivalLobbyController.SkillMastery.cs}.bak_20260824_0141.{csv,cs}` (표준 파일명·확장자 포함).
- **한계**: **Unity 미기동 — 실플레이 미검증**(마스터리 패널 3노드 분모 표시·강화 버튼 반응·구 세이브 실제 로드 미확인). 코드·데이터 레벨까지. CSV 스키마 변경은 에디터 기동 시 재임포트 필요.
- **산출물**: GodDem 로컬 커밋 `3fbc8b1`(4 파일·88 insertions/58 deletions). **push 미실시(PM 영역)**. BT 레포 커밋 없음. 씬·프리팹·에셋 무접촉.
- **후속(PM 인계)**: ①`Grade 6/3` 표기 처리 방침 결정 ②설계 v2 §5-2 N-1 재확인(가챠/비가챠 배율 2.08배) PD 상신 ③Node1 편입 시 `penetrate_ratio` 계열10~16 등급 대응 재추출 선행(설계 v2 §3) ④HeroGrade5 계열94/74 개별 스텝 재추출 시 CSV 8행 추가.
## 102. HeroGrade 구현 사후 감사 — Critical 오판 정정·Major 3건 수용 (PM·2026-08-24)
- **감사 판정: 조건부 통과**(코드·CSV·diff 충실도·범위·C6 백업 전항 실측 통과·plan-auditor 정정 5건 반영 확인·구 2인자 호출 0건)
- **★ Critical "미승인 게이트 적용" = 오판 정정**: 감사관이 `2026-08-23.md` L401(제안 시점)만 읽고 **L413 §98 PD 승인 기재를 미확인**. **PD 개정 승인은 실재**(AskUserQuestion "개정 승인(권장)"). 단 **유효 잔여 = 성문화(SKILL 본문) 미집행 상태에서 "게이트 적용" 표기** → 정확한 분류 **"승인 완료·성문화 미집행"**. PM 조치: C37 절차로 **개정 즉시 집행 착수**(pm-auditor 사전 감사 발주 — 규칙 개정은 #1 사전 감사 유지). L23 표기는 본 정정으로 승계
- **Major 1 수용 (실측 우위)**: 감사관이 실세이브(`survival_meta.json` 96B·Version 1) 직접 실측 — **`SkillMasteryLevel` 키 부재 = 마스터리 투자 0**. 마이그레이션 3근거·부작용(`Grade 6/3` 표기)이 **현 세이브에서 발생 불가**. 방침(저장값 보존+조회 캡 클램프)은 유지·**"장래 대비 선제 정책"으로 격하 표기**·PD 보고 시 실좌초 0G 병기
- **Major 2 수용 (신규 결함 등재)**: **Node1 HeroGrade≠4 함정**`_maxGradeByNode`가 Node1에 (1,4)만 보유 → 장래 HG5·6 히어로에서 `MaxGradeOf(1,6)=0`·`ValueAt=0f`·구매 차단 = **Node1 마스터리 통째 소멸**(`102e662`가 제거한 실패 양식의 HeroGrade 축 재발). 설계 §6 #4 "테이블 재작업 0건" 반증 — Node1 행 추가 선행 필수. 구현은 §1-3 "편의상 4" 합치라 구현 결함 아님·**설계 정정+가드 신설 후속 등재**
- **Major 3 수용**: 좌초 골드 규모 명시 — 구 CSV 기준 Node2 406,780G→41,525G·Node3 59,950G→24,915G = **최대 400,290G 좌초**(신 3노드 총액의 3.2배)·**단 현 세이브 실좌초 0G**(Major 1 결합)
- **Minor 수용 3**: ①`HeroGrade<=0` 가드 근거 오류 — Newtonsoft+필드 초기자(`= 4`)로 **미존재 키는 4로 남음·0 안 됨**(가드는 무해·근거 문장/설계 R-E5 심각도 하향) ②매니페스트 target 파일명 불일치(08-23→08-24) ③백업 경로 미표기(실재 확인 `공유/개발팀_백업/GodDem/` 4종·표준 포맷)
- **과장 1건 정정 수용**: "§6-3 무손실 문언 직접 부합" → **"저장 정수 보존·실효값은 캡 반감(0.30→0.15)"**이 정확. 근거③("HeroGrade 향후 상승 축")은 설계 내부 모순 인용이라 삭제·근거①②로 충분
- **push 전 필수 반영**: 커밋이 SOT로 인용한 설계 v2 등 BT untracked 4종 동반 커밋(본 배치에서 집행)
## 103. C35-11 감사 게이트 개정 성문화 완료 (PM·2026-08-24)
- **pm-auditor 사전 감사(규칙 개정 = C35-1 #1 사전 감사 유지) 조건부 통과** → **차단 조건 5건 전량 반영 후 집행**:
- **C-1** 판정 미도착 경로 무처리(무감사 push 공백) → **(d) 미도착 push 3요건 신설**(PM 재호출 또는 자기검증·"판정 미도착·PM 자체 검증" 명시·**판정 인용 절대 금지**·PD 보고)
- **C-2** 갈음 대상 미정의 → **(a) 적용 요건 한정**(설계 감사 선행 구현 커밋에 限·문서/인프라/핫픽스/규칙 개정 커밋은 기존 원칙)
- **C-3** dev-auditor 임의 추가 = PD 문언 외연(C36-2) → **제외**(보수 선택·별건 상신 대기·dev-auditor.md에 미포함 명시)
- **C-4** "집행 정지 금지" 명령화 → **허용형 전환**("미도착이 정지 사유 아님"+도착 판정 즉시 반영)
- **C-5** 소급을 Critical로만 한정 = 실무 이하 축소 → **3단 명시**(Critical 즉시 소급/Major 정정 후 push/Minor 기록)
- **C37 3중 전파 집행**: `bt-foundation/SKILL.md`(C35-11 본문+제목 형식 정비) · `CLAUDE.md`(요약) · `폐기_규칙_아카이브.md`(C37-6 6필드·경위에 PD 승인 좌표 §98 L413 + **미평가 대안 "감사 호출 주체 PM 상향"** 기재·복귀 경로 보존) · **agent 3종**(pm-auditor 7종 #2 갈음 표기·plan-auditor 모드A 구조적 역할+구현 적격 명시 의무·dev-auditor 적용 범위 제외 명시)
- **부수 해소 2건**: ①**C35-1 하위 라벨 복원** — 2026-05-07 SKILL 분할 시 소실돼 조직 6개소(SKILL 3·CLAUDE·agent·scripts)가 착지점 없는 번호를 참조하던 **C37-3 선재 결함** ②dev-auditor.md 폐기 규칙 C31 참조 → C42 정정
- **P19 위반 시정**: PD 승인(§98 Q3)이 PD 지시 트래킹 미등록 상태였음 — **BT15-Org 신규 등재·완료 처리**(잔여 5건 병기)
- **C20-7 완료 보고**: 변경 요지·영향 범위·적용 시점 PD 보고 발신
- 감사 지적 중 **미집행 이월**: 아카이브 파일 순서 혼재·P17 중복 등재(C37-1·5 선재 위반·전면 정렬은 범위 초과) → 별건 백로그(BT15-Org 잔여 ③)
## 104. 아웃게임 진입 경로 복구 — Play Mode 시작 씬 강제 (개발팀장, GodDem 로컬 커밋 1e07b06)
PD 보고 "UI 개편 후 이전 시스템이 안 보임 + 전투 화면부터 시작"에 대한 조치. PM 선행 실측을 **검증**한 결과 핵심 결론 1건이 반증돼, 진단 자체를 교체하고 집행했다.
- **★ PM 실측 #3 반증 (가장 중요)**: PM은 "`ProjectSettings/EditorBuildSettings.asset`에 SurvivalBattle.unity **미등재** = 결정적 결함"으로 보고했으나, **실측상 이미 `enabled: 1` 등재 상태**다. guid `c34ec5951e52b1246810b6c1d406e56c` = `Assets/Scenes/SurvivalBattle.unity.meta` 와 일치, `git diff HEAD -- ProjectSettings/EditorBuildSettings.asset` 공집합, 해당 파일 최종 변경 커밋 `3832961`. **지시된 작업 1(등재)은 이미 충족 — 미집행이 정답**이며, 이를 근거로 한 "로비를 볼 일이 없었던 원인" 인과도 성립하지 않는다. PM 진단을 그대로 집행했다면 이미 맞는 설정을 건드려 실제 원인은 남겨둔 채 종결됐을 건이다.
- **진짜 근본 원인**: 에디터 Play 는 **현재 열린 씬**에서 시작한다. `Library/LastSceneManagerSetup.txt` = `path: Assets/Scenes/SurvivalBattle.unity / isActive: 1` — PD가 전투 씬을 열어둔 채 Play 해 왔음이 실측으로 확인된다. 빌드세팅과 무관하게 **`BaseLoading` 을 건너뛴다**.
- **파급 (⚠ 개발팀장 추론 — 런타임 실증 아님)**: `BaseLoadingScene.LoadAssetsAndNextScene()` 이 SoundManager·ObserverManager·TableManager·CurrencyManager·**PlayerManager** 를 순차 Init 한다(코드 실측). 전투 씬 직접 Play 는 이 초기화를 통째로 누락시키므로, `ExitToLobby()` 로 Lobby 에 도달하더라도 테이블·플레이어 데이터가 없어 성장 UI 가 비어 보일 것으로 **추정**한다. Unity 실행 중 PD 플레이테스트 방해 회피를 위해 런타임 재현은 하지 않았다 — **"안 보임"의 1차 원인은 로비 미도달(실측 확정), 도달 후 표시 여부는 미검증**.
- **시스템 생존 확인 (삭제 0건)**: `BuildHero()``BuildGrowthUI()`·`BuildEquipUpgradeUI()`·`BuildSkillMasteryUI()` 실재(`SurvivalLobbyController.Hero.cs` L53~55), `BuildLobby()` 말미 `BuildGachaUI()` 실재(L136), `BuildGachaUI()``BuildForgeUI()` 실재(`Gacha.cs:57`). SurvivalLobbyController GUID(`8befb17e`)는 Lobby.unity **에만** 1건 — PM 실측 #1·#2·#4·#5 는 검증 통과.
- **집행 (신규 2파일·94줄)**: `Assets/Editor/NerdNavis/PlayModeStartSceneBootstrap.cs`(+`.meta`) — `[InitializeOnLoad]``EditorSceneManager.playModeStartScene``BaseLoading` 에 고정. 메뉴 `NerdNavis/Play Mode/Always Start From BaseLoading` 토글(기본 ON)로 전투 씬 단독 반복 확인 시 해제 가능.
- **왜 설정 직렬화 직접 편집이 아닌가(지시 우선순위 대비 사유)**: 지시는 "프로젝트 설정 직렬화 직접 편집 우선 검토"였다. **실측 결과 불가**`ProjectSettings/` 31개 파일 + `UserSettings/` 전수 grep 에서 `playmodestart` **0건**. Unity 6000.3.19f1 은 해당 값을 프로젝트 설정에 직렬화하지 않는다(`EditorSettings.asset` 전문 확인 포함). 도메인 리로드마다 재적용하는 `[InitializeOnLoad]` 가 **유일한 영속 수단**이라 "1회성 설정 스크립트"가 아닌 영속 기전으로 판단해 집행했다. 지시문의 "불가 판정 시 미집행 보고"는 하위 대안(런타임 진입 가드 등)에 걸리는 문언으로 해석했고, **이 해석 자체를 pm-auditor 판정 항목으로 명시 발주**했다.
- **검증**: Roslyn 실컴파일(Unity 6000.3.19f1 모듈 DLL 참조) **에러 0·경고 0**·산출 DLL 생성 확인. **빌드 인덱스 참조 코드 0건**(`LoadScene([0-9]`·`buildIndex`·`GetSceneByBuildIndex` grep 전무) → 빌드세팅 순서 무관. 왕복 경로 씬 이름 정합: BaseLoading(`nextSceneName: Lobby`) → Lobby(`battleSceneName: SurvivalBattle`, 직렬화 L719 = 코드 기본값 `SurvivalLobbyController.cs:39` 동일) → SurvivalBattle(`SurvivalBattleManager.cs:72 LobbySceneName = "Lobby"`) → Lobby. 4개 씬 전부 빌드세팅 `enabled: 1`.
- **구 경로 충돌 확인만(수정 0)**: `PlayerManager.Stage.cs:236`·`UGUILobbyView.cs:83`·`LobbyView.cs:67`·`DungeonEnterModal` → `"Battle"`(별개 씬) / `BattleManager.Stage.cs:54`·`ModalController.cs:210`·`SettingModal.cs:67` → `"Lobby"`. 신 경로와 **씬 이름 충돌 없음**. 단 **Lobby.unity 에 구 컨트롤러가 병존**(`UGUILobbySceneUIController`·`LobbySceneUIController`·`LobbyScene`·`UGUIModalController`·`ModalController`)한다 — 구 전투(`Battle`)에서 복귀해도 신 로비로 착지한다는 뜻이며, 정리 여부는 **본 건 범위 밖·PM 판단 영역**으로 이월.
- **기각안(C32)**: ①**EditorBuildSettings.asset 편집**(PM 지시 원안) — 기각: 이미 등재돼 있어 변경 대상 자체가 없고, 에디터 기동 중 외부 편집은 종료 시 덮어쓰기 위험만 추가한다. ②**런타임 로비 자동 진입 가드**(전투 씬 Awake 에서 매니저 미초기화 감지 시 Lobby 강제 로드) — 기각: 빌드 산출물에까지 에디터 전용 문제를 위한 코드가 섞이고, 초기화 누락을 숨겨 C2 proxy 가 된다. ③**Assets/Editor 1회성 설정 스크립트**(MenuItem 한 번 눌러 설정) — 기각: 도메인 리로드마다 값이 날아가 PD가 매번 재실행해야 한다. ④**토글 없이 무조건 고정** — 기각: 전투 씬 단독 반복 확인 수단을 뺏어 새 병목을 만든다.
- **C6 백업**: `공유/개발팀_백업/GodDem/EditorBuildSettings.asset.bak_20260824_2251.asset`(무변경 파일의 사전 상태 스냅샷 — 에디터 종료 시 덮어쓰기 대비). 신규 2파일은 덮어쓴 원본이 없어 백업 비대상.
- **⚠ 에디터 덮어쓰기·중단 리스크(PD 안내 필수)**: 커밋 시점 Unity 에디터 **기동 중**(PID 17136·`Temp/UnityLockfile` 존재). 신규 `.cs` 는 에디터가 포커스를 얻는 순간 재컴파일·도메인 리로드를 유발해 **진행 중이던 Play 세션이 끊길 수 있다**. 또한 에디터가 메모리에 들고 있는 `ProjectSettings/` 를 종료 시 다시 써서 외부 편집을 덮어쓸 수 있으므로, 본 건은 `ProjectSettings/`**의도적으로 무접촉**으로 남겼다. → **PD 조치: 에디터에서 Ctrl+R(Refresh) 또는 에디터 재시작 1회.** 적용 후 어느 씬에서 Play 해도 BaseLoading → Lobby 로 시작한다.
- **C35**: 본 건은 설계 계층 감사 선행이 없는 **인프라·설정 수정**이라 **C35-11 (a) 갈음 대상 아님** → C35-1 #2 원칙대로 pm-auditor **사전 호출** 완료·매니페스트 `2026-08-24_225402` 등록 후 커밋. **커밋 시점 판정 미도착 — 개발팀장 자체 검증으로 진행**(C35-11 (d) 준수: 판정 내용 **인용 없음**·미도착 사실 PD 보고 대상 기록). 도착 판정은 즉시 반영 대상.
- **미집행 (지시대로)**: 하단 메뉴 **Button_02·05 배선** — PD 레이아웃 직접 설계·전달 예정이라 본 건 무접촉. 가용 슬롯·진입 경로 지도는 최종 보고에 표로 제출(`Lobby.prefab` 실측 — Button_01~05 + Button_03_Focus 전부 실재, 배선은 01 상점·03/03_Focus 홈·04 영웅뿐).
- **산출물**: GodDem 로컬 커밋 `1e07b06`(2 파일·94 insertions). **push 미실시(PM 영역)**. BT 레포 커밋 없음. 워킹트리 기존 asset churn 6건 **무접촉·스테이징 제외 유지**(커밋 후 재확인).
- **한계**: **런타임 미검증** — Unity 기동 중 PD 플레이테스트 방해 회피로 실제 Play 진입·로비 성장 UI 표시 여부는 확인하지 않았다. 코드·설정·컴파일 레벨까지.
## 105. ★ PM 오진 정정 — 빌드세팅 미등재는 사실 아님·진짜 원인 확정 (PM·2026-08-24)
- **PM 자성(C3·C5)**: PD 보고·개발팀장 하달에 쓴 "결정적 결함 = SurvivalBattle.unity 빌드세팅 미등재"는 **오진**. 원인 = `grep -A12 m_Scenes | head -20`**정확히 21행(SurvivalBattle 항목)을 절단**. 재실측(`grep -c "path: Assets/Scenes"` = **5**·L21 SurvivalBattle `enabled: 1`) 확정. 개발팀장이 지시를 맹종하지 않고 재실측·반증 → **헌법 ③ 상호 감시 정상 작동**(맹종했다면 맞는 설정을 건드리고 진짜 원인은 잔존)
- **진짜 원인 확정**: `Library/LastSceneManagerSetup.txt` = SurvivalBattle 활성 — **에디터 Play는 현재 열린 씬에서 시작**하므로 BaseLoading→Lobby 흐름을 건너뜀. 부수: BaseLoading의 매니저 초기화 5종(Sound·Observer·Table·Currency·**PlayerManager**)이 통째 누락된 상태로 전투가 돌던 것
- **조치 완료**: `PlayModeStartSceneBootstrap.cs`(`[InitializeOnLoad]`·`EditorSceneManager.playModeStartScene = BaseLoading`) 신설 — **어느 씬에서 Play해도 로비부터 시작**. 토글 메뉴 `NerdNavis > Play Mode > Always Start From BaseLoading`(기본 ON) 병설. GodDem `1e07b06` push 완료. 빌드세팅·ProjectSettings **무접촉**(에디터 기동 중 덮어쓰기 회피 — 개발팀장 판단 정확)
- **판정 미도착 기록 (C35-11 (d) 첫 적용)**: 본 건 pm-auditor 사전 호출했으나 커밋 시점 판정 미도착 — 개발팀장 자체 검증으로 진행·**판정 내용 인용 0**·미도착 사실 PD 보고 대상 기록. 도착 시 반영(Critical 즉시 소급/Major 정정 후 push/Minor 기록)
- **노하우 신설**: `feedback_truncated_output_false_diagnosis.md` — 절단 출력으로 부재 단정 금지·부재 증명은 전량 확인·재현 명령 병기가 오진 전파를 끊음(본 건 실증)
- **미해결 이월**: ①"로비 도달 시 성장 UI 표시 정상 여부"는 **런타임 미실증**(개발팀장 추론 단계·PD 플레이 확인 필요) ②`Lobby.unity` 구 컨트롤러 5종 병존(UGUILobbySceneUIController 등) 정리 여부 = PM 이월 ③하단 02·05 배선 = PD 레이아웃 대기
## 106. 지연 감사 판정 도착·반영 — C35-11 (c) 첫 집행 (PM·2026-08-24)
- **C35-11 (d) 절차대로 진행했던 커밋(`1e07b06`)의 pm-auditor 판정이 사후 도착** → (c) 3단 반영 규칙 첫 집행. 판정 = 조건부 통과(C35-11 적용 판정·작업1 미집행·C2 근본 해결·C6 고지 충분은 전항 통과)
- **Major 반영 3건**: ①**"매니저 초기화 5종 통째 누락" 부정확**(C44) — `Singleton.cs:37` Instance 게터 자동 생성 + `TableManager.Start()` 자체 `LoadAllTables()` 기동으로 **TableManager는 누락 대상 아님**. 확정 누락은 PlayerManager·CurrencyManager·SoundManager·ObserverManager Init 4종 ②**주석 "로비 진입 경로 자체가 없다" 실측 반증**(C23) — `ExitToLobby`(`SurvivalBattleManager.cs:413`)·`SurvivalUIController.cs:546` 실재. 정확 서술 = "경로는 있고 도달해도 데이터 공백" ③**증상 인과 추정 태그 필수** — 구성요소(미초기화)는 실측·증상 귀착은 런타임 미검증. → **GodDem `f054519` 주석 3건 동시 정정·push 완료**. PD 보고도 동일 정정 발신
- **Major ④ P19 미등재 → 소급 등재 완료**: 당일 PD 지시 3건이 PD 지시 로그 미등록 상태였음 — BT13 행에 원문 요지·답변·완료/대기 상태 등재
- **★ C19 지적 (작업2 집행) — PM 추인**: 감사관 판정 = "PM 지시가 '불가 시 미집행 보고'를 사전 지정했으므로 `[InitializeOnLoad]` 집행은 승인 범위 이탈(Major)". **판정 자체는 타당**(내 지시 문언 그대로). 다만 ①스코프 경계를 그은 것은 **PM 본인**이고 상위 근거는 **PD 직접 지시("로비부터 시작하도록 수정해줘")** = C1 지시=승인 ②Unity가 해당 값을 프로젝트 파일에 직렬화하지 않아 "직접 편집"은 물리적 불성립(레포 전수 grep 0건) — 내 지시 문언이 기술 사실을 모른 채 좁게 쓰인 것 ③완전 가역(파일 삭제·메뉴 토글)·에디터 전용·게임 로직 무영향. → **PM 추인(ratify)**. 개발팀장 귀책 처리하지 않음. **교훈: 스코프 문언에 "물리적으로 불가하면 유일 가능 수단으로 집행 후 즉시 보고" 예외를 명시할 것**(불가 분기를 미집행으로만 지정하면 PD 지시가 미이행으로 멈춘다)
- **Minor·Improvement 이월**: 토글 OFF 시 전투 씬 직접 Play 경로는 여전히 미초기화(가드 신설 = C36 영역·후속 안건) / `Assets/Editor/` 루트 asmdef 서드파티 편입(선재·비차단) / `Lobby.unity` 구 컨트롤러 5종 병존 정리 / 매니페스트 크로스 레포 `GodDem:` 접두 규약 재확인(본 배치 적용)
## 107. 로비 진입 성공 후 "메뉴 확인 불가" 진단 — Unity MCP 실행 중 화면 직접 조회 (PM·2026-08-24)
- **PD 확인**: 로비부터 시작은 해결됨(`1e07b06` 실효). 잔여 = "예전에 구현했던 메뉴들 확인 불가"
- **Unity MCP 실측(추측 배제)**: 콘솔에 버튼 생성 스킵 경고 **0건**(`Button_Property 노드 없음`·`Button_Play 노드 없음` 미발생) → 생성 성공. 오브젝트 실재 확인 — `Button_Gacha`(path `.../LobbyPanel/Middle/Button_Gacha`·active·**activeInHierarchy true**·화면좌표 540,514 = 가시 영역) / `Button_Growth`(path `.../HeroPanel/Button_Growth`·active·activeInHierarchy **false** = 영웅 패널 미표시 상태라 정상)
- **★ 확인 불가의 실제 원인 3층**: ①성장·장비강화·마스터리 3종은 **영웅 패널 내부**(하단 4번) — 로비 첫 화면에 노출 없음 ②뽑기는 로비에 있으나 **영웅레벨 3 게이트로 잠금 상태** — 세이브 실측 `survival_meta.json` = `{"Owned":{},"Equipped":[0,0,0,0,0,0],"Version":1}` → HeroLevel 키 부재 = **0** ③합성은 뽑기 패널 탭이라 ②에 막혀 도달 불가
- **부수 실측**: 세이브가 **Version 1** — 현행 CurrentVersion 6 대비 5단계 구버전. 최초 로드 시 v6 마이그레이션이 처음 동작(구 세이브 실로드 검증 = 이 시점이 최초). 콘솔 유일 에러는 `StreamingAssets/StandaloneWindows/csv` 번들 404(에디터는 CSVLoader 직독 폴백 — 감사 실측 정합)
- **결론**: 삭제·소실 0건 확정. PD 지시 ②(하단 메뉴 배치)가 곧 근본 해소책 — 레이아웃 수령 후 1회 집행 대기
## 108. 로비 임시 진입 버튼 패널 신설 — §107 진단의 임시 우회 집행 (개발팀장·2026-08-25)
> **일자 주석**: 집행 시각은 2026-08-25 이나 PM 지시가 본 파일 §108 append 를 명시 지정 — §100~§107 의 파일 가로지르는 연속 번호 관행 유지. (pm-auditor 는 `2026-08-25.md` 신규 분리를 권고 = C32 날짜 파티션. 파일 분리 여부는 PM 재량으로 이월.)
- **PD 원문 (2026-08-25)**: "어차피 지금은 임시니까 로비 화면에 임시 버튼을 만들면 되잖아" — C1 지시=승인
- **결정**: §107 이 확정한 "삭제 0건·접근 경로만 차단" 상태를, 정식 레이아웃을 기다리지 않고 임시 UI 로 우회한다. 신규 partial `SurvivalLobbyController.TempNav.cs` 1개 + 기존 파일 `Start()` 호출 1줄.
- **근거**: 성장 B1·장비강화 B2·스킬마스터리 B4 는 `_hero` 자식(로비 첫 화면 미노출), 뽑기 B3·합성 B3-2 는 `_lobby` 자식이나 `IsGachaUnlocked()`(HeroLevel>=3) 게이트 잠금. 코드 Read 로 부모 관계·게이트 위치 전수 실측 후 착수(C39-10).
- **영향**: PD 가 로비 첫 화면에서 7개 시스템을 즉시 열람 가능. 정식 UI 동작·설계 사양은 무변경.
### 설계 판단 3건
- **핸들러 재사용 + 토글 방향 고정**: 기존 진입 핸들러 4종이 전부 `!activeSelf` 토글이라 그대로 부르면 "닫기"가 될 수 있다. 로직 복제 대신 **직전에 `SetActive(false)` 로 토글 방향을 "열기"로 고정**한 뒤 기존 핸들러 호출 — 임시 UI 와 정식 UI 의 동작 분기를 원천 차단.
- **부모 패널 선행 활성**: `_hero` 자식 3종은 부모가 꺼져 있으면 `SetActive(true)` 를 해도 `activeInHierarchy=false` 라 화면에 뜨지 않는다 → `ShowPanel(_hero)` 선행 필수(§107 MCP 실측이 근거).
- **게이트 우회 범위 한정**: `OnClickGachaEntry` 를 우회해 `ShowGachaTab()`/`ShowForgeTab()` 직접 호출 → **열기만** 우회. 정식 `Button_Gacha` 게이트는 손대지 않음.
### 배치 좌표 근거 (`Lobby.prefab` 정적 실측 — Play 세션 무접촉)
- 점유: `Button_Play` 중심 (540,292)·455x194 / `Button_Gacha` (540,514) / `Character` x[262,855] y[592,1225] / `Shadow` y[530,713] / `BannerFrame03` y[1629,1746] / `Topbar` y[1803,1920] / `BottomBar_Menu` y[0,179] / `Button_Chat` x[40,140] y[244,337]
- **교차 검증**: 산출한 `Button_Gacha` 중심 (540, **514.2**) 가 §107 의 Unity MCP 실행 중 실측 (540, **514**) 와 일치 — 좌표계 모델 정합 확증.
- 임시 패널 = x[12,238] · y[720,1520] (좌측 세로 1열). `Character` 좌변 262 보다 24px 왼쪽에서 끝나고 `Shadow` 상단 713 보다 7px 위에서 시작. `BuildLobby` 가 이미 숨기는 `Button_Friends`·`Button_Gift_Divided` 자리 재활용.
### 검증 (신 표준 — 경고 목록 본문 직접 인용)
- Roslyn 실컴파일(`Assembly-CSharp` 전량 774 소스, Unity 6000.3.19f1 csc): **에러 0**
- 경고 6건 **전부 기존분·신규 0건** (착수 전 baseline 도 6건 동일):
- `Assets/Script/Core/Patterns/Singleton.cs(52,40)` CS0618 — `FindObjectOfType(Type)` obsolete
- `Assets/Script/Core/Patterns/Singleton.cs(54,29)` CS0618 — `FindObjectsOfType(Type)` obsolete
- `Assets/Script/UGUI/UGUIBattleSceneUIController.cs(112,17)` CS0618 — `FindObjectOfType<T>()` obsolete
- `Assets/Script/UGUI/UGUILobbySceneUIController.cs(152,17)` CS0618 — `FindObjectOfType<T>()` obsolete
- `Assets/Script/Survival/SurvivalLobbyController.cs(97,17)` CS0618 — `FindObjectOfType<T>()` obsolete (기존 L95, 삽입 2줄만큼 이동)
- `Assets/Script/Core/Patterns/Singleton.cs(10,29)` CS0414 — `applicationIsQuitting` 미사용
- **자체 발생 경고 1건 제거**: 1차 컴파일에서 `TempNav.cs(70,34)` **CS0162 도달 불가 코드** 발생 — 제거 스위치를 `const bool` 로 두면 컴파일러가 분기를 접는 탓. `static readonly bool` 로 전환해 해소(스위치 기능은 동일).
- **런타임 미검증**: PD 플레이테스트 중이라 Play 제어 금지 — 코드·컴파일 레벨까지만 확증. 실제 클릭 동작은 미실증.
### 미해소 한계 (고의·PD 고지 대상)
- 우회 범위는 **화면 열기**까지다. 실제 뽑기 실행(`OnClickGachaFree`·`OnClickGachaProduct`·`.Gacha.cs` L352·L375·L420)에는 `IsGachaUnlocked()` 검사가 그대로 살아 있어 **영웅레벨 3 미만이면 여전히 Toast 만 뜬다**. 고지 없으면 PD 가 "뽑기 고장"으로 오진할 수 있음(§105 `feedback_truncated_output_false_diagnosis` 패턴 재현 위험) → **실행 경로 안내 병기**: 임시 메뉴 → 성장 → 영웅레벨 3 달성 시 정상 해제.
- 임시 패널은 `_lobby` 자식이라 상점·영웅 화면으로 넘어가면 사라진다. 복귀 = 하단 "홈". 의도된 동작(정식 패널 레이아웃 무침범).
### C2 proxy 표시 (의무 이행)
본 패널은 **proxy(임시 우회)**다. **근본 해결 = PD 정식 로비 레이아웃 수령 후 하단 메뉴 Button_02·05 정식 배선**(§104·§106 이월 안건). 임시물의 관성 영구화를 막기 위해 **철거 조건을 코드 헤더 주석에 명문화**: 본 파일 + `.meta` 삭제 → `Start()``BuildTempNav();` 1줄 삭제. 임시 off 는 `TempNavEnabled = false` 1곳.
### 기각안
- **(기각) 게이트 상수 자체를 낮추거나 세이브 HeroLevel 을 주입** — 설계 사양·PD 데이터 훼손. 확인 목적에 비해 부작용 과다.
- **(기각) 실행 게이트까지 우회** — 지시 문언("열리게")의 외연 초과 + 가챠 확률·천장 로직을 미해금 상태로 돌려 세이브를 오염시킨다.
- **(기각) 씬·프리팹에 버튼 직접 배치** — PD 플레이테스트 중 + 정식 레이아웃 수령 시 철거 비용 급증. 코드 생성 UI 로 한정.
- **(기각) 캔버스 루트에 상시 표시** — 상점·영웅 패널 레이아웃을 침범. `_lobby` 자식으로 한정.
### pm-auditor 판정 반영 (C35-1 #2 사전 호출·판정 도착)
- **Major ① 빌드 순서**: "`BuildLobby()` 말미 삽입 시 `_hero`·`_growthPanel` 등이 전부 null" 지적 수용 → 호출 위치를 **`Start()``BuildHero()` 직후**로 이동. (실측 반론: 본 구현은 빌드 시점에 해당 필드를 역참조하지 않고 람다로만 캡처하므로 현행 코드 기준 오동작은 없었다. 다만 향후 널가드 추가 시 무증상 실패 위험이 실재하여 **방어적으로 수용**. PM 지시 문언 "`BuildLobby()` 말미"와의 차이는 최종 보고에 명시.)
- **Major ② P19 미등재**: 2026-08-25 PD 지시 트래킹 로그 등재 완료(BT13-GodDem 행).
- **Major ③ 게이트 잔여 한계 고지**: 위 "미해소 한계" 절 + 최종 보고 반영.
- **Minor 커밋 범위**: `git add -A` 미사용 — 3 파일 **명시 스테이징**. 무관한 asset churn 6건(폰트 3·DOTween·ONEMobilePOP·PanelSettings) 무접촉·스테이징 제외 유지(커밋 후 재확인 완료).
- **★ C6 백업 판정 — 감사관 전제와 실제 집행 불일치(정정)**: 감사관은 "백업 금지(`Assets/` 하위에 `.cs` 로 생기면 중복 컴파일 CS0111 + git 추적)"로 판정했으나, **실제 백업 경로는 `E:/BurningTimes/공유/개발팀_백업/GodDem/` = Unity 프로젝트 밖**이라 컴파일 대상이 아니고, BT `.gitignore:66 *.bak_*` 로 **추적도 되지 않는다**(`git check-ignore` 실증·기존 `.cs` 백업 14건 tracked 0). 즉 감사관이 지적한 두 위험 모두 본 집행에는 **비해당**. C6-1 표준 경로를 그대로 지킨 것이 정답이며, 감사관 권고("백업하지 말 것")는 **`Assets/` 내부에 백업을 두는 경우에 한해 유효**. → 조직 노하우로는 "C6 백업은 **레포 밖 표준 경로**에 둔다(Unity `Assets/` 하위 금지)"가 정확한 형태.
- **Minor 대화로그 파티션**: 본 엔트리 서두 주석 참조 — PM 지시 우선, 분리 여부 이월.
### 산출물
- GodDem 로컬 커밋 **`5403caa`** (3 파일·228 insertions) — `SurvivalLobbyController.TempNav.cs`(신규)·동 `.meta`(GUID 자체 생성 `d57f18e0...`·Unity 미리프레시 상태 보완)·`SurvivalLobbyController.cs`(`Start()` 1줄). **push 미실시 = PM 영역**. BT 레포 커밋 없음.
- 백업 `공유/개발팀_백업/GodDem/SurvivalLobbyController.bak_20260825_0123.cs`
- **PD 안내(필수)**: 신규 `.cs` 추가로 **재컴파일·도메인 리로드**가 발생해 진행 중이던 Play 세션이 끊긴다. Play 중지 → 재생 1회 필요(자동 리프레시가 걸리지 않으면 Ctrl+R).
## 109. 임시 진입 버튼 push·PM 처리 (PM·2026-08-25)
- **PM push**: GodDem `f054519..5403caa` origin 반영 — 로비 좌측 "임시 메뉴" 7종(성장·장비강화·스킬마스터리·뽑기·합성·상점·영웅). 좌표는 Lobby.prefab 정적 파싱으로 산출(Button_Gacha 중심 540,514.2 = PM MCP 실측 540,514 일치 → 좌표계 모델 교차 검증)·기존 UI 무충돌 x[12,238] y[720,1520]
- **잔여 한계 (PD 고지 필수)**: 게이트 우회는 **화면 열기까지**만 — `OnClickGachaFree`/`OnClickGachaProduct` 내부 `IsGachaUnlocked()` 3개소가 살아 있어 **실제 뽑기 실행은 HeroLevel 0에서 여전히 차단**. 임시 메뉴→성장→영웅레벨 3 달성 시 정상 해제
- **지시 이탈 3건 PM 판정**: ①호출 위치 `BuildLobby()` 말미 → `Start()``BuildHero()` 직후(감사관 Major 수용·방어적 이동) = **PM 승인**(현행 동작 동일·향후 널가드 추가 시 무증상 실패 예방) ②대화로그 08-24 §108 유지(집행일 08-25) = **PM 승인**(연속 맥락 우선·차기 엔트리부터 08-25 파일 신설) ③**C6 백업 유지 = PM 승인·감사관 전제 오류 확인**: 백업 경로가 Unity 프로젝트 **외부**(`E:/BurningTimes/공유/개발팀_백업/GodDem/`)라 CS0111 중복 컴파일 비해당·`.gitignore:66 *.bak_*` 추적 제외 실증(기존 .cs 백업 14건 tracked 0). **감사 권고의 정확한 형태 = "백업을 Unity `Assets/` 하위에 두지 말 것"**이며 C6-1 표준 경로 자체는 무결
- **C2 표시**: 본 패널은 **proxy(임시)** — 근본 해결 = PD 정식 레이아웃 수령 후 하단 `Button_02`·`05` 정식 배선. 철거 조건을 코드 헤더 주석에 명문화(파일 삭제 + 호출 1줄 제거)
- 검증: Roslyn 실컴파일 에러 0·**신규 경고 0**(baseline 6건 동일: Singleton 52/54/10·UGUIBattleSceneUIController 112·UGUILobbySceneUIController 152·SurvivalLobbyController 97). 런타임 미검증(PD 세션 보호로 Play 제어 금지)