docs(BT13-GodDem): 시작 씬 로비 고정 1e07b06·PM 오진 정정
- 진짜 원인: 에디터가 열어둔 씬에서 Play 시작(LastSceneManagerSetup) — BaseLoading 건너뜀 - 조치: PlayModeStartSceneBootstrap(playModeStartScene=BaseLoading)·토글 메뉴·ProjectSettings 무접촉 - PM 오진 자성: head 절단으로 빌드세팅 미등재 단정 → 개발팀장 반증(등재 실재) - 노하우: 절단 출력으로 부재 단정 금지(feedback_truncated_output_false_diagnosis) - C35-11 (d) 첫 적용: 판정 미도착·자체 검증·인용 0·PD 보고 기록 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
75e783d964
commit
f24aae33c7
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
name: truncated-output-false-diagnosis
|
||||
description: PM이 grep 결과를 head로 절단한 채 "미등재"를 결정적 결함으로 단정하고 PD에게 원인으로 보고 — 잘린 21행에 해당 항목이 실재. 팀원 실측이 반증 (2026-08-24 GodDem 빌드세팅 오진)
|
||||
type: feedback
|
||||
---
|
||||
|
||||
# 출력 절단이 만든 오진 — head/tail로 자른 실측을 단정 근거로 쓴 사고 (2026-08-24 BT13)
|
||||
|
||||
## 실증
|
||||
|
||||
PD가 "UI 개편 후 이전 시스템이 안 보인다"고 보고. PM이 `grep -A12 "m_Scenes" EditorBuildSettings.asset | head -20`으로 빌드 씬 목록을 확인하고 **"SurvivalBattle.unity 미등재 = 로비 플레이 버튼 씬 로드 실패 = 결정적 결함"**으로 단정, 그 인과를 **PD에게 원인으로 보고**하고 개발팀장에게 "등재하라"고 지시까지 내렸다. 실제로는 `head -20`이 **정확히 21행(SurvivalBattle 항목)을 잘라냈고** 해당 씬은 이미 `enabled: 1`로 등재돼 있었다. 개발팀장이 지시를 그대로 집행하지 않고 재실측해 반증(무변경이 정답) — 진짜 원인은 `Library/LastSceneManagerSetup.txt`가 가리키는 **에디터가 열어둔 씬에서 Play가 시작되는 것**이었다.
|
||||
|
||||
## Why
|
||||
|
||||
`head`/`tail`/`head_limit`은 **탐색용 절단**인데, 그 결과를 **부재 증명(negative proof)**에 쓰면 곧바로 오진이 된다. "있는 것을 찾는" 용도로는 절단이 안전하지만 **"없다"를 주장하려면 전량을 봐야 한다**. 게다가 PM이 그 오진을 PD 보고와 하달 지시에 동시에 실었기 때문에, 팀원이 지시를 맹종했다면 **이미 맞는 설정을 건드리고 진짜 원인은 남는** 결과가 됐다.
|
||||
|
||||
## How to apply
|
||||
|
||||
1. **부재·미등재·0건 주장은 절단 없는 명령으로 재확인**한다 — `grep -c`(건수)·`wc -l`·전체 출력·`rg --no-ignore` 등. 절단된 출력으로는 "찾았다"만 말하고 "없다"는 말하지 않는다.
|
||||
2. **PD 보고·팀원 하달에 실측을 인용할 때는 재현 명령을 함께 적는다**(본 건은 적었기에 팀원이 반증할 수 있었다). 재현 명령 병기는 오진의 전파를 끊는 안전장치다.
|
||||
3. **팀원이 상급자 실측을 반증하면 그것이 정상 작동**이다 — 헌법 ③ 상호 감시. 반증을 수용하고 PD 보고를 즉시 정정한다(C3·C5).
|
||||
4. 관련: [[feedback_gitignore_backup_audit_blindspot]](도구 갭·탐색 범위 계열) · [[feedback_verification_artifact_not_organizationally_preserved]] · C39 · C44
|
||||
|
|
@ -50,3 +50,32 @@
|
|||
- **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 레이아웃 대기
|
||||
|
|
|
|||
Loading…
Reference in New Issue