# WP2 — 현행 FF 엔진 프로빙 결과

> 2026-06-01. 대상: `plans/안전피드램프-advisory-작업지시서.md` WP2. 라이브 `:5000` `/api/ff/advisory` 관찰.
> **방법 제약**: Sim Override는 엔진에 안 닿음(ramp-advisor만) → 본 프로빙은 **엔진이 현재 데모 합성데이터(설정값±variation)로 돌아가는 실제 거동을 관찰**. 의도적 step 주입이 필요한 항목(P4 등)은 운전원 DCS 주입 필요로 분리.

## P0 — 현재 advisory 스냅샷 (feed≈900.9, 정상상태)
```
transient=False  mode=Normal  yield=90.7%
massBalanceState=물질수지 불일치  vLoss=43.3  vLossMa=31.7
front=프론트 하강→boilup↑  (수 초 뒤 baseline 수렴하며 "정상(프론트 안정)"으로)
temps(raw=pct): tica-6111a=79.21  ti-6111b=78.47  ti-6111c=78.69  ti-6111d=78.92
streams: P rec=833.5(pv817) D rec=18.02(pv15.8) B rec=27.03(pv24.8) R rec=666.8(pv653.8)
```

## 프로빙 결과 (코드리딩 주장 검증)

| 프로브 | 주장 | 관찰 | 판정 |
|---|---|---|---|
| **P1** | LevelDriven B/D rec = K×feed (clamp/rate 無) | B rec=**27.019 ≡ 0.03×900.63**, D rec=18.018≡0.02×feed. 시간추이서 feed와 **정확히 선형 추종**(27.018→27.021) | ✅ 확정 |
| (대조) | Commanded P는 deadtime+lag+rate | P rec=**834.8 ≠ 0.95×feed(855.6)** — lag로 뒤처짐 | ✅ LevelDriven과 명확히 구분 |
| **P2** | PCT 꺼짐(dtdp=0) | **모든 temp의 pct == raw**(79.2066=79.2066…) | ✅ PCT dormant 확정 |
| **P3** | pi-6111b 미사용 | 엔진 태그목록(BuildSnapshotAsync)에 pi-6111b 없음 — 코드 사실(관찰 대상 아님) | ✅ 코드 확인 |
| **P4** | feed 급변 시 transient/valid=false | **자연 variation(feed ±0.1)으론 transient 미발화**(FeedMoveThresholdPerMin=0이라 moving 조건 자체 off) | ⚠ 운전원 step 주입 필요 |
| **P5** | D+P+B≠feed → mbState 불일치 | vLoss=43.3(>3%·feed=27) → "불일치", Bpv noise로 "정상"↔"불일치" 토글 | ✅ 단, **데모 PV 비보존 아티팩트**(실제 과추출 아님) |
| **P6** | front 부호 수정 동작 | **override 엔진확장 후 라이브 검증(2026-06-01)**: A=90 고정, D sweep → D↑(94/98)=**프론트 상승→환류↑**, D↓(82/78)=**프론트 하강→boilup↑**, 전환점 D≈A. 구버그면 반대 | ✅ 물리방향 확정 |

## ⚠ 핵심 발견 — 데모 temps가 물리 프로파일 위반
운전원 확정 정상 프로파일은 **A>B>C>D 단조감소**(§10.1). 그러나 데모 실측은:
```
tica-6111a(A)=79.21 > ti-6111d(D)=78.92 > ti-6111c(C)=78.69 > ti-6111b(B)=78.47
→ A>D>C>B  (B가 최저, 비단조)
```
- 데모는 **각 태그 = SP + 일정한 변동량 반복** 시뮬레이션 → temp 순서는 물리 공간구배가 아니라 **각 태그 SP + 변동 위상**의 산물. **공간 구배 미인코딩** → 물리적 단조성 없음 (메모리 `project_demo_system_synthetic_data` 부합).
- **함의 1**: §10 역전판정(`A≥B≥C`)을 이 데모에 켜면 `B<C`라 **항상 "온도 역전" 오발**. → §10/front **검증엔 운전원이 단조 temps를 주입**해야 함.
- **함의 2**: front(A↔D) 부호의 *물리적* 타당성은 데모로 검증 불가(단위테스트로만). 부호 자체는 머지·통과.

## 운전원 DCS 주입이 필요한 잔여 (override 불가)
| 항목 | 필요 주입 | 관찰 |
|---|---|---|
| P4 transient | feed를 FeedMoveThresholdPerMin 이상으로 step | transient=true, stream valid=false |
| S7 과추출(매트릭스) | B pv ≫ 0.03×feed, D+P+B≠feed (realtime_table) | mbState 음의손실/불일치 |
| §10/front 물리검증 | temps를 A>B>C>D 단조로 세팅 후 D 가열 | front "상승→환류↑" |

## 결론
- **확정**: P1(LevelDriven=K×feed 무클램프, 원래 우려 재현)·P2(PCT dormant)·P3(pi-6111b 미사용)·P5(mbState, 단 데모 아티팩트).
- **보류(운전원 주입 필요)**: P4·S7·front 물리검증.
- **신규 이슈**: 데모 temps 비물리(A>D>C>B) — §10/front 라이브 검증의 선결 조건은 단조 temps 주입. (override가 엔진에 닿지 않는 한계와 함께, 자율 검증 범위가 ramp-advisor로 한정됨.)

## 참조
- `plans/안전피드램프-advisory-작업지시서.md` WP2, `docs/안전피드램프-검증시나리오매트릭스.md` S7
- `docs/안전피드램프-한계치-브레인스토밍.md` §10
