---
name: ScriptableObject placeholder 필드 무차별 채움 금지 (헌법급)
description: 신규 .asset 영역 placeholder 작성 시 ScriptableObject 모든 필드를 "기본값" 무차별 채움 금지. 가드 조건·런타임 코드 의존성 사전 실측 의무 (C39-10 정합).
type: feedback
tier: constitutional
---

## 위반 패턴

신규 ScriptableObject .asset 영역 placeholder 작성 시 ScriptableObject 클래스 영역 모든 필드를 영역 "기본값" 무차별 채움. 카드 의도와 무관한 필드 영역도 영역 "0이 아닌 값" 영역 채움 → 런타임 코드 영역 가드 조건 통과 → **의도 외 효과 트리거**.

## 사례 (2026-05-09 BT12-Dev Phase 2-C)

본 PM Phase 2-C 영역 6 ActiveSkillData asset 작성:
- A01 마법 화살 (단일 타격 의도) — `DebuffStackLimit: 3` 무차별 적용
- A02 파이어볼 (DoT 의도) — `DebuffStackLimit: 3` 무차별 적용
- A03 봉인 마법 (Stun 의도) — `DebuffStackLimit: 3` 무차별 적용
- A08 저주의 화살 (DebuffStack 의도) — `DebuffStackLimit: 5` 정합
- A14 얼음 창 (Slow 의도) — `DebuffStackLimit: 3` 무차별 적용
- A15 추적 화염구 (DoT 의도) — `DebuffStackLimit: 3` 무차별 적용

→ StatusApplier.cs:43 가드 `if (data.DebuffStackLimit > 0) DebuffStack.AddStack(...)` 영역 통과 → 5 카드 영역 hit 시마다 의도 외 DebuffStack 누적·N스택 폭발 트리거 → **기획서 의도 위반**.

## 근본 원인 (3계층 분석·pm-auditor M1 권고)

| 계층 | 원인 |
|------|------|
| 표층 | placeholder 작성 시 필드 무차별 채움 |
| 중층 | ScriptableObject 필드 의도 분류 SOT 부재 (DebuffStackLimit이 어떤 카드 유형에 적용 가능한지 정의 부재) |
| 근층 | **C39 (작업 전 시스템 반영 실측) 위반** — placeholder 작성 시 런타임 코드(StatusApplier.cs:43 영역 가드 조건) Read 선행 X → 카드 데이터 → 런타임 코드 의존성 미실측 |

## Why

**감사관 자성 의무 명시 (2026-05-09 pm-auditor 사전 감사 Major 1)**: 단순 "필드 무차별 채움" 표현은 재발 패턴 식별 불가. 근층 원인까지 명문화하지 않으면 다른 ScriptableObject 영역 (PassiveSkillData·AwakeningSkillData·CardPlaceholder·SkillDataAsset 영역 외) 영역 동일 패턴 재발.

## How to apply (재발 차단 체크리스트)

신규 .asset 영역 placeholder 작성 직전 **3 단계 의무 실측**:

1. **(a) 해당 ScriptableObject 클래스 정의 Read** — 필드 영역 의미·기본값·NULL 가능 여부 확인
2. **(b) 클래스 사용 코드 영역 Grep** — 런타임 영역 어떤 메서드가 어떤 필드를 어떻게 참조·가드 분기 영역
3. **(c) 가드 조건·분기 조건 영역 의도 매핑** — 본 카드 의도 영역 활성화할 가드만 통과하도록 필드 값 설정. **의도와 무관한 가드는 통과 X 영역 0·기본값 적용 의무**

## 적용 영역

- **Phase 2-C 영역 외 영역 다른 ScriptableObject 신규 작성 시** 본 체크리스트 의무
- **balance-designer 영역 60종 정식 수치 작업** 시 동일 적용
- **CSV → ScriptableObject 변환 영역** 시 변환기 영역 본 체크리스트 영역 자동화 권고
- **C39-10 외연 — 신규 코드·자산이 기존 코드 가드 조건 미실측 영역 차단**

## 6계층 환기 트리거

키워드 — `ScriptableObject·placeholder·필드 채움·신규 자산·.asset 작성·DebuffStackLimit·DotDuration·StunDuration·SlowDuration·KnockbackForce·MaxConcurrent·MinionLifetime·AuraTickInterval·CritDamageMultiplier·IFrameDuration·FireProbability·ChainCount·HitboxSize·OffsetDistance`

## 관련 규칙·자산

- **C39** 작업 전 시스템 반영 실측 (헌법급)
- **C39-10** 신규 코드·자산이 기존 시스템 가드 조건 미실측 영역 차단
- **C2** 근원 해결 (proxy 영역 X·근본 = 의존성 실측)
- **C44** 팩트 우선 (가드 조건 추정 X·코드 직접 Read)
- **feedback_pm_root_diagnosis_priority** (근본 진단 우선)
- StatusApplier.cs:43·BT12-Dev v1 §2-3 ScriptableObject 명세
