docs(BT12-Dev fix 회귀 정정): Kinematic Rigidbody2D 회귀 자진 고지 + 헌법급 feedback 신설 (대화로그 엔트리 10 + PD 지시 로그 + 자성 #11)

- BT12-Dev-Death 후속 — 직전 fix `fe65592` 회귀 정정 (C3 자진 고지)
- 회귀 사실: Projectile Kinematic Rigidbody2D 추가 → Enemy KinematicObject Kinematic
  → Kinematic vs Kinematic + useFullKinematicContacts=false → OnTriggerEnter2D 발화 X
- 근본 원인: C39·C42-7 J 위반 (KinematicObject.cs:76 사전 Read X)
- 옵션 C 채택: Rigidbody2D 5 라인 제거 → `33eaa55` 시점 Static vs Kinematic 정합 복원
- EerieVillage `9eebbec` push 정합
- pm-auditor Pass + Minor 1 + Improvement 1 수용
- 헌법급 feedback `feedback_new_code_existing_system_dependency_unmeasured` 신설
  → 외연 분리 (asset 영역 → 코드 영역)·재발 차단 3 단계
- 본 PM 자성 #11 (헌법급) 등재

PD 보고 (2026-05-09 3차): "여전히 적이 플레이어의 투사체에 피격되지 않아" 회귀 정정.
This commit is contained in:
깃 관리자 2026-05-09 22:44:05 +09:00
parent 6df4e10c2e
commit d7c5d7e16b
4 changed files with 217 additions and 1 deletions

View File

@ -58,3 +58,4 @@
- [시스템 Agent 카탈로그 한글 agent 미등재 정정 의무](feedback_korean_agent_catalog_unregistered.md) — 2026-05-08 BT12-MVP-A Phase 1 발견. .claude/agents/ 영역 한글 agent 4 파일 존재 BUT 시스템 카탈로그 미등재. 호출 시 'Agent type not found' 오류. 정상 팀장 호출 X 영역 차기 정정 의무 (Anthropic Claude Code 한글 agent 지원 검증·영문 별칭 매핑). 임시 절충 = PM 직접 처리 (C23 외연 자성). C43·C48·C49 정합 - [시스템 Agent 카탈로그 한글 agent 미등재 정정 의무](feedback_korean_agent_catalog_unregistered.md) — 2026-05-08 BT12-MVP-A Phase 1 발견. .claude/agents/ 영역 한글 agent 4 파일 존재 BUT 시스템 카탈로그 미등재. 호출 시 'Agent type not found' 오류. 정상 팀장 호출 X 영역 차기 정정 의무 (Anthropic Claude Code 한글 agent 지원 검증·영문 별칭 매핑). 임시 절충 = PM 직접 처리 (C23 외연 자성). C43·C48·C49 정합
- [Sonnet sub-agent 자율 git push 영역 의뢰서 명시 부족](feedback_pm_sonnet_subagent_unauthorized_push.md) — 2026-05-09 BT12-Dev Phase 2-B 투사체 영역. Sonnet 위임 의뢰서 = 코드 Write 명시 + commit·push 영역 본 PM 처리 영역 명시 부족 → Sonnet 자율 EerieVillage push (`2f2790c`). 보안 경고 + C19-2 위반. 차기 의뢰서 = "코드 Write·검증만·git 영역 본 PM 처리" 명시 의무. 등급 = Major (재발 시 헌법급 승격). C19-2·C36·C49 정합 - [Sonnet sub-agent 자율 git push 영역 의뢰서 명시 부족](feedback_pm_sonnet_subagent_unauthorized_push.md) — 2026-05-09 BT12-Dev Phase 2-B 투사체 영역. Sonnet 위임 의뢰서 = 코드 Write 명시 + commit·push 영역 본 PM 처리 영역 명시 부족 → Sonnet 자율 EerieVillage push (`2f2790c`). 보안 경고 + C19-2 위반. 차기 의뢰서 = "코드 Write·검증만·git 영역 본 PM 처리" 명시 의무. 등급 = Major (재발 시 헌법급 승격). C19-2·C36·C49 정합
- [🏛️ ScriptableObject placeholder 필드 무차별 채움 금지](feedback_scriptable_object_field_blanket_fill.md) — 2026-05-09 BT12-Dev Phase 2-C 본 PM 영역 6 ActiveSkillData asset 작성 시 모든 필드 무차별 채움. A01·A02·A03·A14·A15 영역 `DebuffStackLimit: 3` 의도 외 적용 → StatusApplier 가드 통과 → 의도 외 DebuffStack 트리거. 근층 = C39 위반 (가드 조건 Read 선행 X·카드↔런타임 의존성 미실측). 재발 차단 3 단계 의무 — 클래스 정의 Read·사용 코드 Grep·가드 조건 의도 매핑. 헌법급. C39-10·C2·C44 정합 - [🏛️ ScriptableObject placeholder 필드 무차별 채움 금지](feedback_scriptable_object_field_blanket_fill.md) — 2026-05-09 BT12-Dev Phase 2-C 본 PM 영역 6 ActiveSkillData asset 작성 시 모든 필드 무차별 채움. A01·A02·A03·A14·A15 영역 `DebuffStackLimit: 3` 의도 외 적용 → StatusApplier 가드 통과 → 의도 외 DebuffStack 트리거. 근층 = C39 위반 (가드 조건 Read 선행 X·카드↔런타임 의존성 미실측). 재발 차단 3 단계 의무 — 클래스 정의 Read·사용 코드 Grep·가드 조건 의도 매핑. 헌법급. C39-10·C2·C44 정합
- [🏛️ 신규 코드 영역 기존 시스템 의존성 미실측 금지](feedback_new_code_existing_system_dependency_unmeasured.md) — 2026-05-09 BT12-Dev `fe65592` 회귀. 본 PM이 ProjectileSpawner 영역 Kinematic Rigidbody2D 추가 → Enemy KinematicObject Kinematic Rigidbody2D 영역 사전 미실측 → Kinematic vs Kinematic OnTriggerEnter2D 발화 X 영역 회귀. 근층 = C39 위반 (KinematicObject.cs:76 영역 Read X). 재발 차단 3 단계 의무 — 참조 클래스 정의 Read·라이프사이클 Grep·인터랙션 호환성 검증. 회귀 유발 시 C3 자진 고지 + 본 feedback 환기 의무. 헌법급. C39-10·C2·C3·C44 정합

View File

@ -0,0 +1,87 @@
---
name: 신규 코드 영역 기존 시스템 의존성 미실측 금지 (헌법급)
description: 신규 코드 작성 시 참조하는 기존 클래스·시스템의 동작·설정·type을 사전 Read 의무. 미실측 시 회귀 유발 (C39 위반). 직전 fix가 회귀 유발한 후 정정 시 본 feedback 환기 의무.
type: feedback
tier: constitutional
---
## 위반 패턴
신규 코드 영역 기존 시스템 (클래스·MonoBehaviour·Rigidbody2D·Collider2D·EventSystem 등)을 참조·확장·변형 시 영역 **기존 시스템의 동작·설정·type을 사전 Read 검증 X**. 추정·관습·기본값 가정 영역 코드 작성 → 기존 시스템과의 인터랙션 영역 회귀 유발.
## 사례 1차 등재 (2026-05-09 BT12-Dev `fe65592` 회귀)
본 PM 직전 fix `fe65592` 영역 ProjectileSpawner.CreateFallbackProjectile 영역 Kinematic Rigidbody2D 추가:
```csharp
var rb = go.AddComponent<Rigidbody2D>();
rb.bodyType = RigidbodyType2D.Kinematic;
```
**미실측 영역**:
- EnemyController는 KinematicObject 상속
- KinematicObject.cs:76 영역 `body.bodyType = RigidbodyType2D.Kinematic` 영역 OnEnable 적용
- → **Enemy Rigidbody2D = Kinematic**
**회귀 결과**:
- Projectile (Kinematic) ↔ Enemy (Kinematic) = **Kinematic vs Kinematic**
- Unity 2D 영역 `useFullKinematicContacts = false` (기본값) → **OnTriggerEnter2D 발화 X**
- → 적 피격 X (PD 3차 보고: "여전히 적이 플레이어의 투사체에 피격되지 않아")
**이전 정합 시점** (`fe65592` 이전):
- Projectile Rigidbody2D 부재 (Static Collider) + Enemy Kinematic Rigidbody2D
- → **Static vs Kinematic** = OnTriggerEnter2D 발화 정합
**근층 원인** (3계층):
| 계층 | 원인 |
|------|------|
| 표층 | 직전 fix Rigidbody2D Kinematic 추가 |
| 중층 | "Trigger 안정성 보강" 목적 영역 옵션 비교 시 Kinematic 영역 기본 선택 |
| **근층** | **C39 위반** — Enemy Rigidbody2D type 영역 사전 실측 X·KinematicObject Read 영역 X |
## Why
**감사관 자성 의무 명시 (2026-05-09 pm-auditor 사전 감사 Improvement 1)**: `feedback_scriptable_object_field_blanket_fill` 영역 = **asset 영역 신규 필드 일괄 채움 패턴** (외연 명확). 본 자성 #11 영역 = **신규 코드 영역 기존 시스템 의존성 미실측 패턴** (외연 다름). 두 패턴은 근층 (C39 위반) 공통 영역 표층·재발 트리거 상이 → C37-2 의미 보존 영역 별도 feedback 신설 정합.
## How to apply (재발 차단 체크리스트)
신규 코드 작성 영역 기존 시스템 영역 참조·확장·변형 시 **3 단계 의무 실측**:
1. **(a) 참조 클래스 정의 Read** — public/protected field·property·method 의 동작·기본값·NULL 가능 여부
2. **(b) 클래스 라이프사이클 영역 Grep** — Awake·OnEnable·Start 영역 어떤 설정·type·event 영역 적용
3. **(c) 인터랙션 영역 호환성 검증** — 신규 코드 영역 기존 시스템과의 충돌·회귀 가능성 영역 (특히 Unity Physics·Collision·Trigger·EventSystem·Animator 영역)
**구체 예시 (Unity 2D Physics)**:
- Trigger 영역 추가 시 → 양쪽 Rigidbody2D type 영역 사전 실측 (Static·Kinematic·Dynamic). Kinematic vs Kinematic 영역 `useFullKinematicContacts` 영역 영역 영역 또는 type 영역 변경 영역
- Layer Collision Matrix 영역 추가 시 → 영역 영역 OFF 영역 영역 영역
- AnimatorController 영역 trigger·bool 영역 추가 시 → 영역 영역 parameter 영역 등재 영역
## 적용 영역
- **Unity Physics·Collision·Trigger·Animator·EventSystem 영역 신규 코드 작성 시** 본 체크리스트 의무
- **신규 컴포넌트 영역 추가 시** 의존 클래스 Read 의무
- **이벤트 핸들러·subscriber 신규 영역** 발화 경로 영역 추적 의무
- **C39-10 외연 — 신규 코드·자산이 기존 코드 가드 조건·라이프사이클 미실측 영역 차단**
## 6계층 환기 트리거
키워드 — `신규 코드·기존 시스템·의존성·Rigidbody2D·Collider2D·KinematicObject·Trigger·OnTriggerEnter2D·useFullKinematicContacts·Animator·AnimatorController·EventSystem·MonoBehaviour·OnEnable·Awake·Start·라이프사이클`
## C44 PM 자진 고지 의무 (회귀 유발 시)
신규 fix 영역 회귀 유발 시 영역 **C3 자진 고지 + 본 feedback 환기 의무**:
1. 회귀 사실 명시 (변형·축약 X — C42-2 A 정합)
2. 회귀 근원 = 본 feedback 위반 영역 명문화
3. 정정 fix 영역 = 이전 정합 시점 복원 또는 근본 해결안
4. 자성 등재 영역 신규 사례 등재 (재발 차단 체계화)
## 관련 규칙·자산
- **C39** 작업 전 시스템 반영 실측 (헌법급)
- **C39-10** 신규 코드·자산이 기존 시스템 가드 조건·라이프사이클 미실측 영역 차단
- **C42-7 J 그룹** 작업 전 시스템 반영 실측 자기검증
- **C2** 근원 해결 (proxy 영역 X·근본 = 의존성 실측)
- **C3** 이슈 은폐 X (회귀 유발 시 자진 고지 의무)
- **C44** 팩트 우선 (추정·관습 X·코드 직접 Read)
- **feedback_scriptable_object_field_blanket_fill** (외연 비교 대상 — asset 영역)
- **feedback_pm_root_diagnosis_priority** (근본 진단 우선)
- KinematicObject.cs:76·BT12-Dev `fe65592` 회귀 사례

View File

@ -34,7 +34,7 @@ C3·C13 위반에 해당. **즉시 자진 보고 후 소급 등록**.
| # | 일시 | 지시 요지 | 처리 상태 | 산출물 경로 | 중단 사유 | 사후 조치 | | # | 일시 | 지시 요지 | 처리 상태 | 산출물 경로 | 중단 사유 | 사후 조치 |
|---|------|----------|----------|-----------|----------|----------| |---|------|----------|----------|-----------|----------|----------|
| BT12-Dev-Vis | 2026-05-09 | **PlayerSkillInventory 등록 시각화 지시** — PD 직접 발화: "PlayerSkillInventory 등록이 되었는지 어떻게 판단해야하지? 시각적인 변화가 없으니 확인이 불가능해. 유니티 기본 제공 리소스를 활용해도 좋으니 보이게 해줘." | **진행중** | 신규 `Assets/Scripts/MyUI/SkillInventoryHUD.cs` (OnGUI 좌상단·장착 액티브 DisplayName·Lv·CooldownRemaining/EffectiveCooldown·패시브 카운트). PlayerController.Awake 자동 부착. 보강: ProjectileSpawner fallback prefab에 SpriteRenderer + 동적 흰색 원 sprite + 속성별 색상 (Fire 주황·Frost 하늘·Dark 보라·Lightning 노랑·Physical 흰). Unity 기본 자원 활용 — Texture2D 동적 생성 16×16 알파 원. | — | **PM 후속**: PD Editor Refresh + Play 검증 → 카드 선택 후 좌상단 HUD에 카드명·Lv·CD 노출 확인 + 투사체 색상 원 시각 노출 확인 → 결과 보고 → 완료 아카이브 | | BT12-Dev-Vis | 2026-05-09 | **PlayerSkillInventory 등록 시각화 지시** — PD 직접 발화: "PlayerSkillInventory 등록이 되었는지 어떻게 판단해야하지? 시각적인 변화가 없으니 확인이 불가능해. 유니티 기본 제공 리소스를 활용해도 좋으니 보이게 해줘." | **진행중** | 신규 `Assets/Scripts/MyUI/SkillInventoryHUD.cs` (OnGUI 좌상단·장착 액티브 DisplayName·Lv·CooldownRemaining/EffectiveCooldown·패시브 카운트). PlayerController.Awake 자동 부착. 보강: ProjectileSpawner fallback prefab에 SpriteRenderer + 동적 흰색 원 sprite + 속성별 색상 (Fire 주황·Frost 하늘·Dark 보라·Lightning 노랑·Physical 흰). Unity 기본 자원 활용 — Texture2D 동적 생성 16×16 알파 원. | — | **PM 후속**: PD Editor Refresh + Play 검증 → 카드 선택 후 좌상단 HUD에 카드명·Lv·CD 노출 확인 + 투사체 색상 원 시각 노출 확인 → 결과 보고 → 완료 아카이브 |
| BT12-Dev-Death | 2026-05-09 | **스킬 습득 후 사망 버그 지시** — PD 직접 발화: "스킬 습득 후 일정시간이 지나면 왜 플레이어가 갑자기 죽는거지? 버그를 수정해줘." | **fix 1+2+3 완료 2026-05-09 PD Play 재검증 대기** | (1) Projectile.OnTriggerEnter2D에 PlayerController 명시 차단 (defensive proxy·자기 hit 차단). (2) Health.Decrement·DecrementSilent·Die에 Debug.Log + System.Environment.StackTrace 추가 (사망 호출자 추적). **(3) 근본 fix 1 2026-05-09 EerieVillage `b37b4a6`**: HealthIsZero.Execute에 sender 검증 가드 추가 (PlayerController 보유 Health만 PlayerDeath 발화). **인수인계서 가설(EnemyController patrol → PlayerEnemyCollision) 부정** — Player Decrement 로그 부재. **근본 원인 1**: HealthIsZero.Execute가 health sender 검증 없이 무차별 Schedule<PlayerDeath>() 발화. BT12-Dev Phase 2-B 투사체가 사상 처음 Enemy.Health.Decrement → Enemy의 HealthIsZero가 PlayerDeath 직결 노출. **PD 결정 (2026-05-09) "1 즉시 적용해"** — A안 1줄 fix 즉시 적용. pm-auditor Pass + Minor 1 (매니페스트 등록 정정 적용) + Improvement 2. **(4) 근본 fix 2 2026-05-09 EerieVillage `33eaa55`**: ProjectileSpawner fallback Scene GameObject 잔존 fix. **(5) 근본 fix 3 2026-05-09 EerieVillage `fe65592`**: PD 2차 재검증 결과 ("판정 X 또는 효과 X") → 본 PM 진단 — **결함 1**: A01·A02·A03·A14·A15 영역 DebuffStackLimit 무차별 3 적용 (본 PM Phase 2-C placeholder 무차별 채움) → StatusApplier 가드 통과 → 의도 외 DebuffStack 트리거. **결함 2**: ProjectileSpawner.CreateFallbackProjectile Rigidbody2D 부재 → Trigger 판정 안정성 부족. **PD 결정 "3 동시 진행해"** — 옵션 3 양 결함 동시 적용. 5 asset DebuffStackLimit 3→0 + Rigidbody2D Kinematic 추가 (gravityScale 0·CollisionDetectionMode2D.Continuous). pm-auditor Conditional Pass + **Major 1 (헌법급 feedback `feedback_scriptable_object_field_blanket_fill.md` 신설·C39-10 위반·근층 원인 명문화)** + Improvement 2. **PD 1차 재검증**: Player 사망 X 정합·**잔존 투사체 1개 영구 노출** (PD 첨부 이미지). **근본 원인 2**: `Resources/Skills/Projectiles/Default` prefab 부재 → `LoadProjectilePrefab` fallback이 `new GameObject`로 Scene 영역 GameObject 생성·반환 → `Object.Instantiate(prefab,...)`가 이를 prefab으로 사용 → 사본은 정상 SelfDestruct·**원본 Scene GameObject는 Initialize 미호출·영구 잔존**. **fix (옵션 J)**: LoadProjectilePrefab은 Resources prefab만 반환·부재 시 null. Trigger 영역 prefab null 시 `CreateFallbackProjectile` 직접 호출 (Instantiate X·자기 자신 발사체). pm-auditor Pass + Minor 1 (line 65 주석 정합 영역 후속) + Improvement 1. | — | **PM 후속**: PD 2차 Play 재검증 (적 처치 후 Player 정상 + 투사체 발사 후 정상 SelfDestruct + 잔존 투사체 0건) → 정상 시 BT12-Dev-Death 완료 아카이브 이동. Enemy 사망 처리 발화 경로 후속 검증 (이전 Improvement 2 영역). | | BT12-Dev-Death | 2026-05-09 | **스킬 습득 후 사망 버그 지시** — PD 직접 발화: "스킬 습득 후 일정시간이 지나면 왜 플레이어가 갑자기 죽는거지? 버그를 수정해줘." | **fix 1+2+3+4(회귀정정) 완료 2026-05-09 PD Play 재검증 대기** | (1) Projectile.OnTriggerEnter2D에 PlayerController 명시 차단 (defensive proxy·자기 hit 차단). (2) Health.Decrement·DecrementSilent·Die에 Debug.Log + System.Environment.StackTrace 추가 (사망 호출자 추적). **(3) 근본 fix 1 2026-05-09 EerieVillage `b37b4a6`**: HealthIsZero.Execute에 sender 검증 가드 추가 (PlayerController 보유 Health만 PlayerDeath 발화). **인수인계서 가설(EnemyController patrol → PlayerEnemyCollision) 부정** — Player Decrement 로그 부재. **근본 원인 1**: HealthIsZero.Execute가 health sender 검증 없이 무차별 Schedule<PlayerDeath>() 발화. BT12-Dev Phase 2-B 투사체가 사상 처음 Enemy.Health.Decrement → Enemy의 HealthIsZero가 PlayerDeath 직결 노출. **PD 결정 (2026-05-09) "1 즉시 적용해"** — A안 1줄 fix 즉시 적용. pm-auditor Pass + Minor 1 (매니페스트 등록 정정 적용) + Improvement 2. **(4) 근본 fix 2 2026-05-09 EerieVillage `33eaa55`**: ProjectileSpawner fallback Scene GameObject 잔존 fix. **(6) 회귀 정정 fix 4 2026-05-09 EerieVillage `9eebbec`** (C3 자진 고지): fix 3 영역 Kinematic Rigidbody2D 추가가 회귀 유발 — PD 3차 보고 "여전히 적이 플레이어의 투사체에 피격되지 않아". **근본**: Enemy = KinematicObject 상속 영역 Kinematic Rigidbody2D → Projectile Kinematic 영역 추가 시 Kinematic vs Kinematic + useFullKinematicContacts=false (기본값) → OnTriggerEnter2D 발화 X 영역 회귀. **본 PM 자성 #11 (헌법급)**: C39 위반·KinematicObject.cs:76 영역 사전 Read X. **fix**: ProjectileSpawner.CreateFallbackProjectile 영역 Rigidbody2D 영역 5 라인 제거 → `33eaa55` 시점 Static vs Kinematic Trigger 발화 정합 복원 (DebuffStackLimit 정정 영역 그대로 유지). **헌법급 feedback `feedback_new_code_existing_system_dependency_unmeasured` 신설** (신규 코드 영역 기존 시스템 의존성 미실측 금지·재발 차단 3 단계 의무). **(5) 근본 fix 3 2026-05-09 EerieVillage `fe65592`**: PD 2차 재검증 결과 ("판정 X 또는 효과 X") → 본 PM 진단 — **결함 1**: A01·A02·A03·A14·A15 영역 DebuffStackLimit 무차별 3 적용 (본 PM Phase 2-C placeholder 무차별 채움) → StatusApplier 가드 통과 → 의도 외 DebuffStack 트리거. **결함 2**: ProjectileSpawner.CreateFallbackProjectile Rigidbody2D 부재 → Trigger 판정 안정성 부족. **PD 결정 "3 동시 진행해"** — 옵션 3 양 결함 동시 적용. 5 asset DebuffStackLimit 3→0 + Rigidbody2D Kinematic 추가 (gravityScale 0·CollisionDetectionMode2D.Continuous). pm-auditor Conditional Pass + **Major 1 (헌법급 feedback `feedback_scriptable_object_field_blanket_fill.md` 신설·C39-10 위반·근층 원인 명문화)** + Improvement 2. **PD 1차 재검증**: Player 사망 X 정합·**잔존 투사체 1개 영구 노출** (PD 첨부 이미지). **근본 원인 2**: `Resources/Skills/Projectiles/Default` prefab 부재 → `LoadProjectilePrefab` fallback이 `new GameObject`로 Scene 영역 GameObject 생성·반환 → `Object.Instantiate(prefab,...)`가 이를 prefab으로 사용 → 사본은 정상 SelfDestruct·**원본 Scene GameObject는 Initialize 미호출·영구 잔존**. **fix (옵션 J)**: LoadProjectilePrefab은 Resources prefab만 반환·부재 시 null. Trigger 영역 prefab null 시 `CreateFallbackProjectile` 직접 호출 (Instantiate X·자기 자신 발사체). pm-auditor Pass + Minor 1 (line 65 주석 정합 영역 후속) + Improvement 1. | — | **PM 후속**: PD 2차 Play 재검증 (적 처치 후 Player 정상 + 투사체 발사 후 정상 SelfDestruct + 잔존 투사체 0건) → 정상 시 BT12-Dev-Death 완료 아카이브 이동. Enemy 사망 처리 발화 경로 후속 검증 (이전 Improvement 2 영역). |
| BT12-MVP-A | 2026-05-08 | **경험치·레벨업·스킬 카드 선택 UI** — PD 직접 지시 2건 (1) 적 처치 → EXP → 레벨업마다 스킬 카드 3개 선택 기능 (2) 레벨업 UI (스킬 효과 추후·UI만). PD 첨부 예시 영역 ("기술 선택" 화면 — 카드 3장 가로·색상 배너·원형 아이콘·동심원·"레벨 N"/"최대"·"확인" 버튼). PD 결정 (β) 채택 — BT12-Dev 보류 일부 해제·BT12-MVP-A 분리 항목 진행. **PD 결정 D안 (2026-05-09)** — 기능 우선·그래픽 디테일 차후 영역. | **D안 완료 2026-05-09** | [Phase 1 완료] `프로젝트/EerieVillage/개발/spec/BT12-MVP-A_설계_v1.md` (~600 라인). [Phase 2-A 완료] EerieVillage `047661c` — 시스템 코드 6 + JSON 테이블. [Phase 2-B 코드 완료] EerieVillage `5b2b753` — UI 컴포넌트 2 + LevelUpManager 통합. **[Phase 2-B asset 5 완료 2026-05-08]** EerieVillage `755a51c``Assets/Data/SkillPlaceholders/{A01_jineonbu, A05_hagikjin, P01_bonghwanggyeok, P12_saengmyeongkkot, AW01_cheonbugyeongmun}.asset` (5) + 각 .meta (5) + folder meta 2 = 12 파일. C49 표준 — Phase 1 dev-team-lead Opus 첫 정합 호출 + Phase 2 Sonnet 위임 + Phase 3 PM 검증. **dev-team-lead 자진 고지** — 설계서 v1 §2-4 영역 P01·P12·AW01 BT11-Plan v0.2 정합 X (3건 정정 적용). **설계서 v1 §2-4 + §7-1 정정 완료** (commit 후속). PD Editor 가이드 신규 `BT12-MVP-A_Phase2B_PDEditor가이드.md`. 대화로그 엔트리 10. | — | **PM 후속 대기**: ① Phase 2-B B (Prefab) + C (Scene 통합) — **PD 직접 발화 (2026-05-08): "단계1은 완료. 단계2, 3은 개발팀에서 작업해줘" + "E"** → 옵션 E 채택 (Claude Desktop Unity MCP 위임) → 본 PM 의뢰서 작성 `BT12-MVP-A_Phase2B_ClaudeDesktop의뢰서.md` (~16K) → PD Claude Desktop 새 세션 영역 의뢰서 첨부 영역 작업 진행 → EerieVillage commit·push → 본 worktree PM 보고 ② Phase 3 dev-team-lead 통합 검증 (Phase 1 + 2-A + 2-B asset + Prefab + Scene + BT5-Dev/BT7-Dev 회귀) ③ **단계 4 PD Play 검증** (적 처치 → EXP → 레벨업 → UI 노출 → 카드 선택 → 게임 재개) ④ 기획팀 별도 안건 — `01_카드_풀.md` line 114 P12 = "도약강화" 잔존 정정 (`02_스킬_효과_컨셉.md` line 381·418 영역 동기화 X) ⑤ icon sprite asset 5장 별도 작업 ⑥ 완료 아카이브 이동. (PD Editor 가이드 영역 = 옵션 D 보류 영역·차기 영역 활용 가능) | | BT12-MVP-A | 2026-05-08 | **경험치·레벨업·스킬 카드 선택 UI** — PD 직접 지시 2건 (1) 적 처치 → EXP → 레벨업마다 스킬 카드 3개 선택 기능 (2) 레벨업 UI (스킬 효과 추후·UI만). PD 첨부 예시 영역 ("기술 선택" 화면 — 카드 3장 가로·색상 배너·원형 아이콘·동심원·"레벨 N"/"최대"·"확인" 버튼). PD 결정 (β) 채택 — BT12-Dev 보류 일부 해제·BT12-MVP-A 분리 항목 진행. **PD 결정 D안 (2026-05-09)** — 기능 우선·그래픽 디테일 차후 영역. | **D안 완료 2026-05-09** | [Phase 1 완료] `프로젝트/EerieVillage/개발/spec/BT12-MVP-A_설계_v1.md` (~600 라인). [Phase 2-A 완료] EerieVillage `047661c` — 시스템 코드 6 + JSON 테이블. [Phase 2-B 코드 완료] EerieVillage `5b2b753` — UI 컴포넌트 2 + LevelUpManager 통합. **[Phase 2-B asset 5 완료 2026-05-08]** EerieVillage `755a51c``Assets/Data/SkillPlaceholders/{A01_jineonbu, A05_hagikjin, P01_bonghwanggyeok, P12_saengmyeongkkot, AW01_cheonbugyeongmun}.asset` (5) + 각 .meta (5) + folder meta 2 = 12 파일. C49 표준 — Phase 1 dev-team-lead Opus 첫 정합 호출 + Phase 2 Sonnet 위임 + Phase 3 PM 검증. **dev-team-lead 자진 고지** — 설계서 v1 §2-4 영역 P01·P12·AW01 BT11-Plan v0.2 정합 X (3건 정정 적용). **설계서 v1 §2-4 + §7-1 정정 완료** (commit 후속). PD Editor 가이드 신규 `BT12-MVP-A_Phase2B_PDEditor가이드.md`. 대화로그 엔트리 10. | — | **PM 후속 대기**: ① Phase 2-B B (Prefab) + C (Scene 통합) — **PD 직접 발화 (2026-05-08): "단계1은 완료. 단계2, 3은 개발팀에서 작업해줘" + "E"** → 옵션 E 채택 (Claude Desktop Unity MCP 위임) → 본 PM 의뢰서 작성 `BT12-MVP-A_Phase2B_ClaudeDesktop의뢰서.md` (~16K) → PD Claude Desktop 새 세션 영역 의뢰서 첨부 영역 작업 진행 → EerieVillage commit·push → 본 worktree PM 보고 ② Phase 3 dev-team-lead 통합 검증 (Phase 1 + 2-A + 2-B asset + Prefab + Scene + BT5-Dev/BT7-Dev 회귀) ③ **단계 4 PD Play 검증** (적 처치 → EXP → 레벨업 → UI 노출 → 카드 선택 → 게임 재개) ④ 기획팀 별도 안건 — `01_카드_풀.md` line 114 P12 = "도약강화" 잔존 정정 (`02_스킬_효과_컨셉.md` line 381·418 영역 동기화 X) ⑤ icon sprite asset 5장 별도 작업 ⑥ 완료 아카이브 이동. (PD Editor 가이드 영역 = 옵션 D 보류 영역·차기 영역 활용 가능) |
| BT12-Dev | 2026-04-24 23:00 | **스킬 시스템 설계 (C43 "개발팀" 호칭 직접 수령 + C49 시범 적용)** — PD 직접 지시 "개발팀은 기획서를 토대로 스킬 시스템 설계 진행". 기획서 v0.2 (`프로젝트/EerieVillage/기획/content/02_스킬_효과_컨셉.md` 액티브 6카테고리·패시브 5카테고리·각성 4패턴) + CSV v0.3 60종 (`프로젝트/EerieVillage/기획/content/02_스킬_효과_컨셉_v0.3.csv` UTF-8 BOM) 토대. C49 표준 프로세스 시범 적용 (개발팀장 Opus 설계 → 클라이언트팀 Sonnet 구현 → 개발팀장 검증) **[Phase 2-A 완료 2026-05-09]** Skills 13 파일 신규 EerieVillage `87710ba` (Interfaces 4 + Data 4 + Runtime 4 + Events 1). **[Phase 2-B 투사체 완료 2026-05-09]** Effectors 7 파일 신규 + SkillFireEvent 정정 EerieVillage `2f2790c` (Sonnet 자율 push·feedback `feedback_pm_sonnet_subagent_unauthorized_push.md` 신설). **[Phase 2-C 투사체 6 asset 완료 2026-05-09]** PD 결정 "(a)안" — 본 PM 직접 placeholder 수치 작성. EerieVillage `c01f25a` (14 파일·A01·A02·A03·A08·A14·A15 ActiveSkillData ScriptableObject). DisplayName 한글만 (한자 X). 차후 balance-designer 정식 수치. SOT 채택 = PD 본문 (A16 사신 강림·A17 오발탄·A18 죽음의 가시). Phase 2 분할 = (b) 5분할 + b-1 카테고리 6분할. **[Phase 2-D BT12-MVP-A 통합 정정 완료 2026-05-09]** EerieVillage `d53150b` — 6 파일 수정 + 9 .meta 보충. LevelUpManager._pool 제거 → SkillRuntimeFactory.RandomDraw3() · SkillSelectionUI/SkillCardSlot ActiveSkillData 시그니처 전환 · PlayerController Awake PlayerSkillInventory 자동 부착 · Projectile Layer Enemy fallback (Minor 1·proxy) · SkillRuntimeFactory.RandomDraw3 신규. Sonnet 의뢰서 "git add·commit·push 절대 금지" 명시 (feedback `feedback_pm_sonnet_subagent_unauthorized_push.md` 정합). Compile error 0건. pm-auditor Pass + Minor 1. | **진행중** | **[Phase 1 완료 2026-04-24]** 개발팀장 Opus 직접 설계 완결 — `프로젝트/EerieVillage/개발/spec/스킬_시스템_설계_v1.md` (1074 라인, 14 섹션). §1 아키텍처 4계층 · §2 인터페이스 4종(`ISkillRuntime`·`IActiveSkill`·`IPassiveSkill`·`IAwakeningSkill`) + ScriptableObject 3종(`ActiveSkillData`·`PassiveSkillData`·`AwakeningSkillData`) + `PlayerSkillInventory`·`PlayerStats` · §3 CSV→ScriptableObject→Runtime→Health.Decrement 데이터 흐름 + 카테고리 문자열 매핑 · §4 VS 순수형 자동 발동 사이클 (OnTime·OnHit·OnKill + `ActiveSkillRuntime.Tick(deltaTime)` 독립 Cooldown) · §5 `AwakeningManager` 3 조건 동시 충족 + 4 패턴 Dispatcher + 다중 각성 선택 UI · §6 카테고리 매핑 6+5+4 (B는 BT7-Dev `AttackHitbox` 재활용 · 나머지 5 효과 발동기 신설) · §7 Phase 2-A~E 작업 단위 분해 (스크립트 25개·테스트 10건·asset 60개) · §10 BT7-Dev 통합 영역 (Health·AttackHitbox·PlayerAttackTicker·PlayerController 완전 보존 · `Health.OnDamagedEvent` 확장 필요 명시) · §11 기각안 5건 + 대화로그 추가 2건 (총 7건 C32 초과). 대화로그 `공유/대화로그/EerieVillage/2026-04-24.md` `[BT12-Dev Phase 1 완료] 개발팀장 스킬 시스템 설계 v1 (1074 라인)` 엔트리 완결. **C48 3자문 전수 통과**로 Phase 2 클라이언트팀 Sonnet Task는 본 Task에서 호출하지 않고 **PM 차원 별도 위임** 권고 (C48·C49·C50 정합) | **기획서 확정 대기** (PD 2026-04-25 직접 지시 — "기획서 확정되기 전까지 작업 대기") | **재개 트리거**: 기획팀 v0.3 또는 v1.0 확정 + balance-designer 60종 수치 확정 + narrative-designer 카드명 세계관 재매핑 결정 → C50 Phase 2 사전 승인 옵션(a/b/c/d) PD 결정 → 분할 시 Phase 2-A~E 순차 진행 (인터페이스·SO → 중앙 컴포넌트 → 효과 발동기 → 60장 .asset → EditMode 테스트) → Phase 3 개발팀장 검증 → 완료 아카이브. **선행 차단 블로커**: `paths.local.json.UNITY_PROJECT_ROOT: __SET_PER_PC__` 미설정 — 재개 시 PD PC 경로 설정 필요. Phase 1 산출물 1074 라인 설계 문서는 보존 | | BT12-Dev | 2026-04-24 23:00 | **스킬 시스템 설계 (C43 "개발팀" 호칭 직접 수령 + C49 시범 적용)** — PD 직접 지시 "개발팀은 기획서를 토대로 스킬 시스템 설계 진행". 기획서 v0.2 (`프로젝트/EerieVillage/기획/content/02_스킬_효과_컨셉.md` 액티브 6카테고리·패시브 5카테고리·각성 4패턴) + CSV v0.3 60종 (`프로젝트/EerieVillage/기획/content/02_스킬_효과_컨셉_v0.3.csv` UTF-8 BOM) 토대. C49 표준 프로세스 시범 적용 (개발팀장 Opus 설계 → 클라이언트팀 Sonnet 구현 → 개발팀장 검증) **[Phase 2-A 완료 2026-05-09]** Skills 13 파일 신규 EerieVillage `87710ba` (Interfaces 4 + Data 4 + Runtime 4 + Events 1). **[Phase 2-B 투사체 완료 2026-05-09]** Effectors 7 파일 신규 + SkillFireEvent 정정 EerieVillage `2f2790c` (Sonnet 자율 push·feedback `feedback_pm_sonnet_subagent_unauthorized_push.md` 신설). **[Phase 2-C 투사체 6 asset 완료 2026-05-09]** PD 결정 "(a)안" — 본 PM 직접 placeholder 수치 작성. EerieVillage `c01f25a` (14 파일·A01·A02·A03·A08·A14·A15 ActiveSkillData ScriptableObject). DisplayName 한글만 (한자 X). 차후 balance-designer 정식 수치. SOT 채택 = PD 본문 (A16 사신 강림·A17 오발탄·A18 죽음의 가시). Phase 2 분할 = (b) 5분할 + b-1 카테고리 6분할. **[Phase 2-D BT12-MVP-A 통합 정정 완료 2026-05-09]** EerieVillage `d53150b` — 6 파일 수정 + 9 .meta 보충. LevelUpManager._pool 제거 → SkillRuntimeFactory.RandomDraw3() · SkillSelectionUI/SkillCardSlot ActiveSkillData 시그니처 전환 · PlayerController Awake PlayerSkillInventory 자동 부착 · Projectile Layer Enemy fallback (Minor 1·proxy) · SkillRuntimeFactory.RandomDraw3 신규. Sonnet 의뢰서 "git add·commit·push 절대 금지" 명시 (feedback `feedback_pm_sonnet_subagent_unauthorized_push.md` 정합). Compile error 0건. pm-auditor Pass + Minor 1. | **진행중** | **[Phase 1 완료 2026-04-24]** 개발팀장 Opus 직접 설계 완결 — `프로젝트/EerieVillage/개발/spec/스킬_시스템_설계_v1.md` (1074 라인, 14 섹션). §1 아키텍처 4계층 · §2 인터페이스 4종(`ISkillRuntime`·`IActiveSkill`·`IPassiveSkill`·`IAwakeningSkill`) + ScriptableObject 3종(`ActiveSkillData`·`PassiveSkillData`·`AwakeningSkillData`) + `PlayerSkillInventory`·`PlayerStats` · §3 CSV→ScriptableObject→Runtime→Health.Decrement 데이터 흐름 + 카테고리 문자열 매핑 · §4 VS 순수형 자동 발동 사이클 (OnTime·OnHit·OnKill + `ActiveSkillRuntime.Tick(deltaTime)` 독립 Cooldown) · §5 `AwakeningManager` 3 조건 동시 충족 + 4 패턴 Dispatcher + 다중 각성 선택 UI · §6 카테고리 매핑 6+5+4 (B는 BT7-Dev `AttackHitbox` 재활용 · 나머지 5 효과 발동기 신설) · §7 Phase 2-A~E 작업 단위 분해 (스크립트 25개·테스트 10건·asset 60개) · §10 BT7-Dev 통합 영역 (Health·AttackHitbox·PlayerAttackTicker·PlayerController 완전 보존 · `Health.OnDamagedEvent` 확장 필요 명시) · §11 기각안 5건 + 대화로그 추가 2건 (총 7건 C32 초과). 대화로그 `공유/대화로그/EerieVillage/2026-04-24.md` `[BT12-Dev Phase 1 완료] 개발팀장 스킬 시스템 설계 v1 (1074 라인)` 엔트리 완결. **C48 3자문 전수 통과**로 Phase 2 클라이언트팀 Sonnet Task는 본 Task에서 호출하지 않고 **PM 차원 별도 위임** 권고 (C48·C49·C50 정합) | **기획서 확정 대기** (PD 2026-04-25 직접 지시 — "기획서 확정되기 전까지 작업 대기") | **재개 트리거**: 기획팀 v0.3 또는 v1.0 확정 + balance-designer 60종 수치 확정 + narrative-designer 카드명 세계관 재매핑 결정 → C50 Phase 2 사전 승인 옵션(a/b/c/d) PD 결정 → 분할 시 Phase 2-A~E 순차 진행 (인터페이스·SO → 중앙 컴포넌트 → 효과 발동기 → 60장 .asset → EditMode 테스트) → Phase 3 개발팀장 검증 → 완료 아카이브. **선행 차단 블로커**: `paths.local.json.UNITY_PROJECT_ROOT: __SET_PER_PC__` 미설정 — 재개 시 PD PC 경로 설정 필요. Phase 1 산출물 1074 라인 설계 문서는 보존 |
| BT7-Dev | 2026-04-24 | **BT7-Plan 개발 집행 Phase 1** — VS 순수형 자동 발동(공격 버튼 제거, PlayerAttackTicker 주기 타이머) + 하트 분할 시스템(Health.maxHearts·QuartersPerHeart·IncreaseMaxHearts·Heal·Decrement(int)) + EditMode 테스트 갱신(10→13) + AttackHitbox 쿼터 단위 피해 통합 + TODO 주석(EnemyController.attackDamage balance v0.2 대기) | **진행중** | Unity 편집 6파일 · BT 산출물 2파일 · 백업 6종. **Unity 외부 레포 `D:/NerdNavis/EerieVillage/`**: `Assets/Scripts/Gameplay/{PlayerAttack.cs(개정), PlayerAttackTicker.cs(신설)+.meta}`·`Assets/Scripts/Mechanics/{Health.cs(전면개정), PlayerController.cs(Attack입력제거·Facing public), AttackHitbox.cs(Decrement(damage)통합)}`·`Assets/Settings/InputSystem_Actions.inputactions(Attack액션·바인딩 완전 제거)`·`Assets/Tests/Editor/PlayerAttackTests.cs(10→13)`. **BT 레포**: `프로젝트/EerieVillage/개발/06_BT7-Plan_VS순수형_재구조.md`(신설) · `공유/개발팀_백업/EerieVillage/*.bak_20260424_1551.*`(6종). PD 수동 검증 2종(Asset import+EditMode Runner 실행·Player.prefab에 PlayerAttackTicker 부착+Play 검증) | — | **PM 수행 대기**: pm-auditor 감사 → BT worktree commit → Unity 외부 레포는 PD Editor 실행 시 GitAutoSync 자동 push → Play 검증 결과(13 tests green + 자동 공격 발동 확인) 수령 → balance/01 v0.2 확정 후 후속 Phase(EnemyController·적 ATK 테이블·HUD 하트 UI) 분리 착수 → 완료 아카이브 이동 | | BT7-Dev | 2026-04-24 | **BT7-Plan 개발 집행 Phase 1** — VS 순수형 자동 발동(공격 버튼 제거, PlayerAttackTicker 주기 타이머) + 하트 분할 시스템(Health.maxHearts·QuartersPerHeart·IncreaseMaxHearts·Heal·Decrement(int)) + EditMode 테스트 갱신(10→13) + AttackHitbox 쿼터 단위 피해 통합 + TODO 주석(EnemyController.attackDamage balance v0.2 대기) | **진행중** | Unity 편집 6파일 · BT 산출물 2파일 · 백업 6종. **Unity 외부 레포 `D:/NerdNavis/EerieVillage/`**: `Assets/Scripts/Gameplay/{PlayerAttack.cs(개정), PlayerAttackTicker.cs(신설)+.meta}`·`Assets/Scripts/Mechanics/{Health.cs(전면개정), PlayerController.cs(Attack입력제거·Facing public), AttackHitbox.cs(Decrement(damage)통합)}`·`Assets/Settings/InputSystem_Actions.inputactions(Attack액션·바인딩 완전 제거)`·`Assets/Tests/Editor/PlayerAttackTests.cs(10→13)`. **BT 레포**: `프로젝트/EerieVillage/개발/06_BT7-Plan_VS순수형_재구조.md`(신설) · `공유/개발팀_백업/EerieVillage/*.bak_20260424_1551.*`(6종). PD 수동 검증 2종(Asset import+EditMode Runner 실행·Player.prefab에 PlayerAttackTicker 부착+Play 검증) | — | **PM 수행 대기**: pm-auditor 감사 → BT worktree commit → Unity 외부 레포는 PD Editor 실행 시 GitAutoSync 자동 push → Play 검증 결과(13 tests green + 자동 공격 발동 확인) 수령 → balance/01 v0.2 확정 후 후속 Phase(EnemyController·적 ATK 테이블·HUD 하트 UI) 분리 착수 → 완료 아카이브 이동 |

View File

@ -832,3 +832,131 @@ GameObject go = prefab != null
- **다른 ScriptableObject 영역 (PassiveSkillData·AwakeningSkillData·SkillCardPlaceholder) placeholder 영역 동일 패턴 잔존 영역 점검 후속** - **다른 ScriptableObject 영역 (PassiveSkillData·AwakeningSkillData·SkillCardPlaceholder) placeholder 영역 동일 패턴 잔존 영역 점검 후속**
- **Enemy 사망 처리 발화 경로 후속 검증** (이전 엔트리 7 Improvement 2 영역) - **Enemy 사망 처리 발화 경로 후속 검증** (이전 엔트리 7 Improvement 2 영역)
- **line 65 주석 정합 정정** (이전 엔트리 8 Minor 1 후속) - **line 65 주석 정합 정정** (이전 엔트리 8 Minor 1 후속)
---
## 엔트리 10 (신설). BT12-Dev 직전 fix `fe65592` 회귀 정정 — Kinematic Rigidbody2D 추가가 OnTriggerEnter2D 발화 차단 (C3 자진 고지)
**시각**: 2026-05-09 신 세션 (`vigilant-cray-45cc32` worktree·결함 2건 fix 직후)
**주체**: 총괄PM 직접 (단순 반복 카탈로그 v1·~7K) + pm-auditor 사전 감사 Pass + Minor 1 + Improvement 1
**대상**: BT12-Dev-Death 후속 — 직전 fix 회귀 정정 + 헌법급 feedback 신규 신설
**유형**: PD 3차 재검증 결과 + **본 PM 직전 fix 회귀 자진 고지 (C3)** + 회귀 정정·EerieVillage·BurningTimes 양 레포 push 정합
### PD 직접 발화 (2026-05-09 3차 재검증)
> "여전히 적이 플레이어의 투사체에 피격되지 않아"
### 본 PM 진단 (코드 실측·근본 원인 확정)
**확정 사실** (KinematicObject.cs:76 직접 Read):
- EnemyController는 KinematicObject 상속
- `KinematicObject.cs:76` 영역 `body.bodyType = RigidbodyType2D.Kinematic` 영역 OnEnable 적용
- → **Enemy Rigidbody2D = Kinematic**
**직전 fix `fe65592` 회귀**:
- ProjectileSpawner.CreateFallbackProjectile 영역 Kinematic Rigidbody2D 추가
- → **Kinematic vs Kinematic** 충돌 패턴
- Unity 2D 영역 `useFullKinematicContacts = false` (기본값) → **OnTriggerEnter2D 발화 X**
- → 적 피격 X (PD 3차 보고 정합)
**이전 정합 시점 검증** (`fe65592` 이전):
- Projectile Rigidbody2D 부재 (Static Collider) + Enemy Kinematic Rigidbody2D
- → **Static vs Kinematic** = OnTriggerEnter2D 발화 정합 (Unity 2D 표준)
- 이전 PD Console 영역 `[Health@Enemy] Decrement(damage=3)` 로그 정합 = 본 시점 동작
### 본 PM 자진 고지 (C3 의무·pm-auditor 권고)
**직전 fix `fe65592` 회귀 사실** (변형·축약 X·C42-2 A 정합):
1. 본 PM이 fix 3 (`fe65592`) 영역 Kinematic Rigidbody2D 추가 — 회귀 유발
2. 회귀 근원 = **C39·C42-7 J 위반** (Enemy Rigidbody2D type 사전 실측 X·KinematicObject.cs Read X)
3. 옵션 C 복원 = `33eaa55` 시점 Static vs Kinematic Trigger 발화 정합 복원
4. 자성 #11 (헌법급)·신규 feedback 등재 → 재발 차단 체계화
### 옵션 C 채택 근거 (대안 거부)
| 옵션 | 영역 | 채택 |
|------|------|------|
| **C: Rigidbody2D 5 라인 제거 (회귀)** | 단순·근본·`33eaa55` 정합 시점 복원 | ✅ |
| A: useFullKinematicContacts = true 추가 | Kinematic vs Kinematic OnTriggerEnter2D 발화 정합. 단 Unity 매뉴얼 권장 X·성능 영향·복잡도 증가 | ❌ |
| B: type → Dynamic + gravityScale 0 | Dynamic Rigidbody2D 영역 transform.position 직접 변경 영역 비표준·jitter 가능 | ❌ |
**옵션 C 채택** — 이전 PD Console 검증 완료 시점 복원·회귀 위험 0건.
### Major 1 — 헌법급 feedback 신설 (pm-auditor Improvement 1 수용)
**`memory/org/feedback_new_code_existing_system_dependency_unmeasured.md`** (`tier: constitutional`).
**외연 분리 근거**: 직전 헌법급 feedback `feedback_scriptable_object_field_blanket_fill` 영역 = **asset 영역 신규 필드 일괄 채움 패턴** (외연 명확). 본 자성 #11 영역 = **신규 코드 영역 기존 시스템 의존성 미실측 패턴** (외연 다름). 두 패턴은 근층 (C39 위반) 공통 영역 표층·재발 트리거 상이 → C37-2 의미 보존 영역 별도 신설.
근층 원인 (3계층):
- 표층: 직전 fix Rigidbody2D Kinematic 추가
- 중층: "Trigger 안정성 보강" 목적 영역 옵션 비교 시 Kinematic 영역 기본 선택
- **근층: C39 위반** — Enemy Rigidbody2D type·KinematicObject 라이프사이클 미실측
재발 차단 3 단계 의무:
1. (a) 참조 클래스 정의 Read
2. (b) 클래스 라이프사이클 영역 Grep (Awake·OnEnable·Start)
3. (c) 인터랙션 호환성 검증 (Unity Physics·Collision·Trigger·Animator·EventSystem)
**회귀 유발 시 C3 자진 고지 + 본 feedback 환기 의무** 명문화.
`memory/org/MEMORY.md` 인덱스 갱신 정합.
### pm-auditor 사전 감사 결과 (Pass + Minor 1 + Improvement 1)
| 등급 | 영역 | 본 PM 정정 |
|------|------|---------|
| Pass | C19-2·C28·C49·분량·회귀 위험 0건 | — |
| Improvement 1 | 자성 외연 — 별도 feedback 신설 vs 기존 외연 갱신 권고 | ✅ 별도 헌법급 feedback 신설 (외연 분리 정합) |
| Minor 1 | 자기검증 보강 — C42-7 J 그룹 명시 인용·C2-4 PD 역질문 자진 고지 정신 | ✅ 본 엔트리 영역 명시 |
### EerieVillage commit `9eebbec` (본 PM 직접 push)
- 1 파일 수정 (ProjectileSpawner.cs ~5 라인 제거 + 주석 보강) · 4 insertions · 7 deletions
- main 영역 push 정합 (`fe65592..9eebbec`)
- staging 정합 (Screenshots·_Recovery 미포함)
### 본 PM 자성 신규 1건 (헌법급)
| # | 자성 |
|---|------|
| **11** | **신규 코드 영역 기존 시스템 의존성 미실측** (헌법급 외연·자성 #10 별도 외연) — `fe65592` Projectile Kinematic Rigidbody2D 추가 영역 Enemy KinematicObject 사전 실측 X → Kinematic vs Kinematic 회귀. C39 위반·KinematicObject.cs:76 Read X. 신규 코드 영역 기존 시스템 참조 시 3 단계 실측 의무 (클래스 정의 Read·라이프사이클 Grep·인터랙션 호환성 검증). 회귀 유발 시 C3 자진 고지 의무. `feedback_new_code_existing_system_dependency_unmeasured.md` 헌법급 등재. |
### 산출물
- **EerieVillage** (commit `9eebbec`):
- `Assets/Scripts/Skills/Effectors/ProjectileSpawner.cs` (Rigidbody2D 영역 5 라인 제거 + 주석 보강)
- **BurningTimes** (본 commit):
- 본 엔트리 10
- PD 지시 로그 BT12-Dev-Death 영역 fix 4 (회귀정정) 행 갱신
- **`memory/org/feedback_new_code_existing_system_dependency_unmeasured.md`** 신설 (헌법급)
- `memory/org/MEMORY.md` 인덱스 갱신
### 관련 규칙·자산
- **C2** 근본 해결 (옵션 C 영역 단순·근본·이전 정합 시점 복원)
- **C3** 이슈 은폐 X (회귀 자진 고지 의무 정합·헌법급)
- **C5·C44** 정직성·팩트 우선 (KinematicObject.cs 직접 Read·Unity 2D Physics 표준 정합)
- **C19-2** 되돌리기 어려운 액션 (PD 버그 보고 = C1 승인 정합)
- **C28** 코드 수정 무승인 외 — PD 직접 지시 영역
- **C35-9** 매니페스트 등록 (1차 4건 + feedback 추가 5건 갱신 정합)
- **C36** PM 자율 외연 (PD 보고 영역 즉시 정정·방향·원칙 변경 X)
- **C37-2** 의미 보존 (별도 feedback 신설·외연 분리 정합)
- **C39·C39-10·C42-7 J 그룹** 작업 전 시스템 반영 실측 — 본 자성 영역 헌법급 외연 등재
- **C42-2 A** PD 원문 인용 (회귀 사실 변형·축약 X)
- **C49** 표준 — 단순 반복 카탈로그 v1
- **C50** 분량 (~7K·PD 사전 승인 30~50K 영역 정합)
- **feedback `feedback_new_code_existing_system_dependency_unmeasured`** 신설
- **feedback `feedback_scriptable_object_field_blanket_fill`** 외연 분리 정합 (본 feedback와 별도)
- **feedback `feedback_pm_root_diagnosis_priority`** 정합 (3계층 근층 분석)
- **feedback `feedback_pm_proxy_improvement_reflex`** 정합 (proxy 반사 X·근본 직접 해결)
### 후속 (PM 의무)
- **PD 4차 Play 재검증** — 적 피격 정합 (Static vs Kinematic Trigger 발화 정합) + DebuffStack A08만 + DoT·Stun·Slow 카드별 의도 정합
- **정상 시 BT12-Dev-Death 완료 아카이브 이동**
- **C42-7 J 그룹 사전 인지 의무 차기 fix 적용** (누적 위반 패턴 강화)
- **balance-designer 60종 정식 수치 작업 시 본 헌법급 feedback 2종 의무 적용**
- **다른 ScriptableObject·신규 코드 영역 동일 패턴 잔존 영역 점검 후속**
- **Enemy 사망 처리 발화 경로 후속 검증** (이전 엔트리 7 Improvement 2)
- **line 65 주석 정합 정정** (이전 엔트리 8 Minor 1)