콘텐츠로 이동

Source: report/version7/reporter/v7_stage0_stage05_interim_report.md

v7 Peak-Aware FL 캠페인 Stage 0 + Stage 0.5 중간 보고서

브랜치: v7-planning 기준일: 2026-04-20 (UTC 기준 smoke 실행 완료일) 상위 문서: - ADR: docs/decisions/ADR-007_v6_to_v7.md - Design spec: docs/reference/project_state/track_v7_design.md - Track TODO: todos/track-v7_peak_aware_fl.md


1. Executive Summary

1.1 본 phase의 목적 (비전문가용 한 문단)

v7은 발표자료 제출용 peak-aware 연합학습(FL) 프레임워크를 숫자로 검증하는 clean-restart phase이다. 핵심 주장은 두 가지로 압축된다 — (i) peak 시점에 가중치를 둔 loss가 peak 예측을 개선하며, (ii) 공유 VQ codebook + 개별 DLinear residual 이중 경로가 baseline/TSFM 대비 우수하다는 것. 본 중간 보고서는 이 검증 캠페인의 가장 앞단인 사전 등록(Stage 0)수직 슬라이스 smoke test(Stage 0.5) 까지의 진척과 발견을 정리한다.

1.2 현재 진행률

Stage 상태 산출물
0 사전 등록 ✅ 완료 (cycle 2, critic 통과) golden tensor G1~G5 freeze, Option B threshold 확정, Apt88 지정
0.5 smoke test ⚠️ 발견 단계 (9/12 runs 실행, Gate 5 FAIL) 6-Gate 평가 완료, Gate 5 재설계 완료, A3 발산 확인
1 Baseline 🚫 HOLD Stage 0.5 통과 + A3 발산 수정 대기
2 Ablation 🚫 HOLD Stage 1 종속
4 VQ 개선 🚫 HOLD Stage 2 종속
5 통계 / 6 TSFM / 발표자료 🚫 HOLD 상류 종속

1.3 핵심 발견 2가지

발견 1 — 기존 Gate 5 metric은 v6 back-test에서 0% 통과였다 (작동 불가능한 임계였음). 원설계 moving_avg / initial_avg < 0.5 임계는 "val loss가 반으로 줄어야 수렴"을 요구했지만, v6 converged run 22개 back-test 결과 p50 = 0.929로 집계됐다 — 즉 v6의 정상 수렴 run도 이 임계를 단 하나도 통과하지 못했다 (legacy_FAIL_count=22/22, false-positive rate = 1.0). critic이 지적하고, expert가 rel_decrease = (초기 3점 평균 − 말미 3점 평균) / 초기 3점 평균 기반 3-tier metric으로 재설계했다 (PASS ≥ 0.0017 / WARNING 0.0 ~ 0.0017 / FAIL < 0.0). v6 back-test에서 신 metric은 PASS 19건 + WARNING 1건(TPR = 90.9%)으로 정상 동작.

발견 2 — A3 "full proposed" cell이 smoke 3 seed 모두 val_loss 발산 (loss 상승). Stage 0.5 smoke에서 A3는 3 seed 모두 rel_decrease 음수(−1.3% ~ −1.9%) = 학습 진행 시 val loss가 오히려 증가. B0 local (PASS, 1.8~3.0% 감소) / B2 FedProx (PASS~WARNING, 0.1~1.0% 감소) 대비 명확히 다른 행동이다. A3의 final val_loss 절대값도 0.62 ~ 0.67로 B0 (0.35) / B2 (0.34) 대비 약 2배. 이 현상은 초록의 핵심 claim(C2/C3/C4/C5/C6) 기반을 직접 위협하며, 원인 규명 없이는 Stage 1 진입이 의미가 없다.

1.4 Stage 1 진입 HOLD 사유 (현 시점)

  1. Gate 5 rel_decrease metric이 코드(smoke_analysis.py)에 반영되지 않음 — design spec/preview만 존재하고 실행 경로는 여전히 legacy ratio 기준.
  2. A3 발산의 원인 구성 요소 미특정 — peak_alpha=2.0 / VQ init / DLinear residual 중 어느 것이 유발자인지 확인되지 않아 수정 scope 불명확.

2. 완료 작업 Timeline

2.1 Stage 0 — 사전 등록 (2 cycles)

Cycle 1 → critic review → Cycle 2 (v2)

  • Expert v1 초안: report/version7/exp-expert/v7_0419_stage0_preregistration.md
  • Critic review: report/version7/exp-critic/v7_0419_stage0_preregistration_review.md
  • Expert v2 (critic 반영): report/version7/exp-expert/v7_0419_stage0_preregistration_v2.md

확정 산출물

항목 확정값
Golden tensor G1 (toy, Q90=7.9) expected PAPE = 20.000000 / HR = 1.000000
Golden tensor G2 (degenerate σ=0) expected PAPE = NaN / HR = NaN (by policy)
Golden tensor G3 (Apt6 168h, perfect) expected PAPE = 0.000000 / HR = 1.000000, q90 = 2.918
Golden tensor G4 (Apt6 168h, const mean) expected PAPE = 67.342534 / HR = 0.619048
Golden tensor G5 (Apt15 336h, uniform RNG seed=42) expected PAPE = 64.279282 / HR = 0.511905
Metric definition hash 8be2bd2f691deed0 (sha256 상위 16 hex, v2 기준)
Apt_max_load (smoke용 1가구) Apt88 (5/5 peak-load metric 1위, critic M2 민감도 검증 통과)
7-metric fail-fast threshold Option Bval ratio > 1.5 + train > 3.0 (static)

Design spec 반영 위치: §2.2 (metric 정의 + golden tensor), §2.3 (통계 방법), §2.4 (fail-fast).

근거 수치 (v6 n=22 converged back-test): - final_val_loss / initial_val_loss 분포: p50 = 0.929, p95 = 1.001, max = 1.001 - final_train_loss 분포 (n=3): max = 0.541 → static 3.0 ceiling (~5.5배 margin)

v6 Historical 근거 산출물

  • outputs/v7_stage0/v6_loss_distribution.csv — 14개 v6 experiment에서 추출한 loss 통계
  • outputs/v7_stage0/stage0_summary.json — Stage 0 결정 기록
  • outputs/v7_stage0/golden_tensors/ — G3/G4/G5의 y_true.npy / y_pred.npy freeze 산출

2.2 v7 Runner Scaffolding + 학습 루프 + MLflow 로깅

  • 신규 entry point: experiments/federated/v7_runner.py (~77KB 단일 파일)
  • CLI: --mode={smoke,main} / --phase={baseline,ablation,vq_improvement} / --cells / --seeds / --households
  • CELL_REGISTRY 12종: B0, B1, B2, B3, B4 / A1, A2, A3, A4 / V1, V2, V3
  • Gate 1 hash assertion 활성 (fail-fast 실제 체크, dry-run 아님)
  • 공용 모듈: src/peak_analysis/v7/metrics.py — PAPE_v7 / HR_v7 / definition_hash() 단일 소스
  • MLflow 로깅 (의무 6종 모두 이행):
  • per-epoch / per-round train_loss, val_loss
  • best checkpoint artifact
  • test y_true.npy + y_pred.npy artifact
  • 가구별 + avg PAPE, HR, MSE, MAE
  • 7-metric fail-fast 지표
  • config 전체 (pape_definition_hash, scaler_space_signature 포함)

2.3 Stage 0.5 Smoke Infrastructure (2 cycles)

Cycle 1 → critic CRITICAL 5건 → Cycle 2 (v2)

  • Expert v1: report/version7/exp-expert/v7_stage05_gate_criteria.md (gate criteria)
  • Engineer contract v1: report/version7/exp-expert/v7_stage05_engineer_contract.md
  • Critic review: report/version7/exp-critic/v7_stage05_smoke_infra_review.md
  • Expert v2: report/version7/exp-expert/v7_stage05_smoke_infra_v2.md

Critic CRITICAL 5건 해소 결과

# 이슈 해소
1 Gate key alias 불일치 (G1~G6 vs gate_1~gate_6) 단일 명명으로 통일
2 Gate 2 / Gate 6 FAIL 시 정책 불명확 자동 engineer 호출 + 사용자 알림 (Q2 정책)
3 PASS path unit tests 부재 tests/test_v7_stage05_* 작성
4 dead arg 잔존 제거 후 CLI 표면 최소화
5 v6 N=1 참조를 variance 기준으로 차용 경고 report/version6/exp-expert/v6_baseline_reference.md에 사용 경고 명시 (Gate 판정에 사용 금지)

2.4 Stage 0.5 Smoke 9 runs 실행 + 6-Gate 평가

  • 실행 명령 (설계값): v7_runner.py --mode=smoke --households=Apt6,Apt_max --cells=B0,B2,A3 --seeds=42,43,123
  • 실제 실행: 9 runs (3 cells × 3 seeds, 단일 household 경로 per run)
  • MLflow experiment: v7-peak-aware-fl
  • 평가 스크립트: experiments/federated/v7_stage05_smoke_analysis.py
  • 평가 산출물:
  • outputs/v7_stage05/smoke_report_20260420_021905.md — 최신 verdict 보고서
  • outputs/v7_stage05/smoke_verdict_20260420_021905.json — 기계 판독 JSON
  • outputs/v7_stage05/figures/smoke_{pape,hr,mse}_avg_20260420_021905.png — Gate 4 검증 대상

2.5 Gate 5 Redesign (2 cycles)

  • Expert v1: report/version7/exp-expert/v7_stage05_gate5_redesign_v2.md
  • Critic review: report/version7/exp-critic/v7_stage05_gate5_threshold_review.md
  • Engineer contract: report/version7/exp-expert/v7_stage05_gate5_engineer_contract.md
  • v6 back-test 산출: outputs/v7_stage05/v6_gate5_backtest.{json,csv} (n=22, MIN_STEPS ≥ 10)
  • Preview 산출 (신 metric을 smoke 9 run에 적용): outputs/v7_stage05/smoke_gate5_preview.json

3. 기술 산출물 Inventory

3.1 신규 모듈 / 스크립트

경로 역할
src/peak_analysis/v7/metrics.py PAPE_v7 / HR_v7 / definition_hash 단일 소스
experiments/federated/v7_runner.py 단일 entry point (~77KB, smoke ↔ main 코드 경로 공유)
experiments/federated/v7_0419_stage0_preregistration.py Stage 0 재현 스크립트 (definition_hash 산출 포함)
experiments/federated/v7_stage05_smoke_analysis.py 6-Gate 자동 평가 + verdict/report 생성

3.2 테스트 현황 (155+ tests)

범주 대략 규모
v7_runner (CLI / registry / dispatch) 57 tests
v7 training 경로 53 tests
Stage 0 재현 26 tests
Stage 0.5 smoke analysis 19 tests
MLflow params 계약 ~22 tests

3.3 보고서 목록

Expert - report/version7/exp-expert/v7_0419_process_redesign_with_smoke_test.md - report/version7/exp-expert/v7_0419_stage0_preregistration.md (v1) - report/version7/exp-expert/v7_0419_stage0_preregistration_v2.md - report/version7/exp-expert/v7_stage05_gate_criteria.md - report/version7/exp-expert/v7_stage05_smoke_infra_v2.md - report/version7/exp-expert/v7_stage05_gate5_redesign_v2.md - report/version6/exp-expert/v6_baseline_reference.md (N=1 사용 경고 포함)

Critic - report/version7/exp-critic/v7_0419_stage0_preregistration_review.md - report/version7/exp-critic/v7_stage05_smoke_infra_review.md - report/version7/exp-critic/v7_stage05_gate5_threshold_review.md

Engineer contract - report/version7/exp-expert/v7_stage05_engineer_contract.md - report/version7/exp-expert/v7_stage05_gate5_engineer_contract.md

3.4 MLflow

Experiment 용도 Runs
v7-stage0-preregistration Stage 0 v3 산출 (golden tensor freeze + hash) 1
v7-peak-aware-fl Stage 0.5 smoke (9 runs, 이후 Stage 1~4 공용) 9

3.5 Smoke 9 runs — run_id 및 라벨

Run Cell Seed run_id (full)
1 B0 42 4c013601955b4240ab8d02b1fa442048
2 B0 43 88b6fdba0e6545f78d892d401504020f
3 B0 123 9ce63bc1909f402a901b3b97743b7104
4 B2 42 87716252c99342df9f73763f78116ecc
5 B2 43 4b324359c16b41fab909f672d33c813a
6 B2 123 70d3176828514ff58b6dcdca125f5c86
7 A3 42 e2c2c5137a32436f9be80c113995ad41
8 A3 43 7d2c8fdd952b46068fb4a0ea27aa4b6c
9 A3 123 07764d6e45844166af639b071e50efe3

4. Stage 0.5 6-Gate 결과 Matrix

outputs/v7_stage05/smoke_verdict_20260420_021905.json 기반. 6 Gate 중 Gate 5만 FAIL. 전체 verdict = FAIL (FAIL 1건이라도 있으면 HOLD 정책).

Gate B0-s42 B0-s43 B0-s123 B2-s42 B2-s43 B2-s123 A3-s42 A3-s43 A3-s123 결과
G1 (definition_hash + golden tensors) PASS PASS PASS PASS PASS PASS PASS PASS PASS PASS
G2 (scaler space, VQ cell만) n/a n/a n/a n/a n/a n/a PASS PASS PASS PASS
G3 (MLflow artifact 완전성) PASS PASS PASS PASS PASS PASS PASS PASS PASS PASS
G4 (figure run_id 쿼리 + PNG EXIF) PASS (3 figure)
G5 (legacy 임계 기준) FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL FAIL
G6 (paired 동일 split data hash) PASS PASS PASS PASS

Gate 세부

  • G1: 9/9 run 모두 definition_hash = 8be2bd2f691deed0 일치 + G1~G5 golden tensor expected 값 모두 match.
  • G2: 공통 signature = 752452383a98bc03, unit = standardized (VQ cell인 A3에서만 해당).
  • G3: 9/9 run이 best.ckpt / y_true.npy / y_pred.npy / per-epoch loss / 7-metric을 artifact로 완비.
  • G4: smoke_pape_avg / smoke_hr_avg / smoke_mse_avg 3종 PNG 모두 mlflow.search_runs() query 기반 생성 + run_id EXIF 임베드 확인.
  • G5 (legacy ratio): moving/initial ratio 범위 0.975 ~ 1.014로, 9/9 run 모두 legacy 임계 0.6 기준 FAIL. 이 임계 자체가 v6 실제 분포와 모순되는 작동 불가능한 임계였음 → 재설계 완료 (§5.1).
  • G6: seed별 (42/43/123) 3개 cell이 동일 train/val/test data hash 공유 확인 (train=a00f61e9f82e96a2, val=d454d3e3f2f7eb4d, test=de5cf8b0379cc074).

5. 주요 발견 (심화)

5.1 발견 1 — Gate 5 metric 결함 규명과 재설계

원설계의 문제 (legacy)

  • 식: final_val_loss_moving_avg(last 3) / initial_val_loss_moving_avg(first 3) < 0.5
  • 해석: 초기 대비 val loss가 절반 이하로 줄어야 수렴 인정.
  • v6 back-test (outputs/v7_stage05/v6_gate5_backtest.json, n=22 converged runs, MIN_STEPS ≥ 10):
  • legacy_ratio_moving_over_initial 분포: p05 = 0.911, p50 = 0.965, p95 = 0.999, max = 1.000
  • legacy PASS count = 0 / WARNING = 0 / FAIL = 22 → false-positive rate = 1.0
  • 결론: v6의 정상 수렴 run조차 단 하나도 통과하지 못하는 작동 불가능한 임계.

신 metric (v3, critic 반영)

  • 식: rel_decrease = (mean(val_loss[:3]) − mean(val_loss[-3:])) / mean(val_loss[:3])
  • 전제: len(val_loss) ≥ 6, block_size = 3 (smoke 최소 10 round에서 안정)
  • 3-tier cutoffs (v6 percentile 기반):
  • PASS: rel_decrease ≥ 0.0017 (v6 P10, PASS rate = 86.4%)
  • WARNING: 0.0 ≤ rel_decrease < 0.0017 (v6 P05 ~ P10 borderline)
  • FAIL: rel_decrease < 0.0 (net increase — 수렴 방향 반대)
  • v6 back-test 결과 (신 metric): PASS 19 / WARNING 1 / FAIL 2, TPR(PASS or WARN) = 90.9%
  • 반영 위치: design spec §3 Gate 5 + §2.4 line 116 (§2.4 val-divergence와 Gate 5 상호 보완 관계 명시)

Smoke 9 run 신 metric preview (smoke_gate5_preview.json)

Cell-Seed rel_decrease 신 metric verdict legacy ratio
B0-s42 0.030072 PASS 0.978628
B0-s43 0.029720 PASS 0.975406
B0-s123 0.018253 PASS 0.985070
B2-s42 0.001212 WARNING 1.000351
B2-s43 0.009746 PASS 0.995218
B2-s123 0.005041 PASS 0.996454
A3-s42 −0.018681 FAIL 1.014198
A3-s43 −0.013291 FAIL 1.011567
A3-s123 −0.013578 FAIL 1.010581
  • Tally: PASS 5 / WARNING 1 / FAIL 3 / ERROR 0
  • Stage 1 권고: HOLD (A3 cell이 3/3 FAIL)

5.2 발견 2 — A3 "full proposed" cell val_loss 발산

Cell별 학습 경로 요약 (smoke 9 run)

Cell 구성 rel_decrease 범위 val_loss 경향 final_val_loss 범위
B0 Local DLinear +1.8% ~ +3.0% 단조 감소 0.35 (3 seed 공통 수렴대)
B2 FedProx (μ=0.01) + DLinear +0.1% ~ +1.0% 완만 감소 0.34 (3 seed 공통 수렴대)
A3 peak-weighted loss + shared VQ codebook + DLinear residual (full proposed) −1.3% ~ −1.9% 단조 증가 0.62 ~ 0.67 (B0 대비 ~2배)

A3 val_loss 시계열 (10 point 기준, preview JSON에서 추출)

  • A3-s42 (run e2c2c513): 0.6483 → 0.6310 → 0.6406 → 0.6422 → 0.6483 → 0.6469 → 0.6467 → 0.6567 → 0.6508 → 0.6483
  • A3-s43 (run 7d2c8fdd): 0.6635 → 0.6664 → 0.6599 → 0.6543 → 0.6627 → 0.6653 → 0.6678 → 0.6712 → 0.6707 → 0.6744
  • A3-s123 (run 07764d6e): 0.6070 → 0.6112 → 0.6169 → 0.6151 → 0.6184 → 0.6211 → 0.6147 → 0.6201 → 0.6175 → 0.6224

원인 후보 (시점별 우선순위)

  1. peak_alpha = 2.0 scale 과대: peak-weighted SmoothL1의 peak-time 가중이 전체 grad 크기를 키워 최적화 불안정.
  2. VQ codebook 초기화 / gradient flow: codebook commitment loss가 DLinear residual 경로와 gradient 충돌.
  3. DLinear residual gradient 충돌: dual-path 합산이 학습 초반 residual을 키워 val에서 악화.

검증 방법 (후속 Task #12)

  • A1 smoke (peak-weighted loss only, VQ/Residual 제거): 발산 여부 → peak_alpha 배제/확정.
  • A2 smoke (SmoothL1 + VQ + DLinear, peak-weighted 제거): 발산 여부 → VQ+Residual 조합 검증.
  • A4 smoke (peak-weighted + VQ, DLinear residual 제거): 발산 여부 → residual 경로 검증.
  • 3개 ablation의 비교로 single-factor attribution이 이론상 가능 (A3만 발산 vs 일부 ablation도 발산).

6. Claim 영향 분석 (C1 ~ C7)

초록(2026-04-19 수정판) 기준, A3 발산이 지속될 경우의 영향.

# Claim 통과 기준 A3 발산 시 위협도 Rollback 문구
C1 FL + privacy motivation 서술 없음
C2 peak-weighted loss 효과 (A1 vs A0) Wilcoxon p<0.05 원인 = peak_alpha이면 위협 "asymmetrically weighted"
C3 VQ codebook 기여 (A3 vs A1) Bootstrap 95% CI 하한 > 0 원인 = VQ init이면 위협 "(ii)" 구절 재구성
C4 DLinear residual 기여 (A3 vs A4) Wilcoxon p<0.05 원인 = residual이면 위협 "local adaptation head"
C5 best across baselines (A3 vs B0~B4) Wilcoxon + Bonferroni 다수 PASS 현재 성립 불가 (A3 loss > B0, B2) "competitive peak accuracy"
C6 PAPE 9.8% reduction vs local-only (B0−A3)/B0 CI 하한 > 5% A3 fix 없이 산출 불가 실측 CI median %로 교체
C7 light-weight surpasses TSFM Chronos + TimeMoE zero-shot 비교 A3 fix와 무관하게 진행 가능 비교 유지 + param 비율 명기

결론: C2 ~ C6 모두 A3 정상 수렴이 전제. A3 발산 원인 규명 → 수정 → Stage 1 재smoke가 필요 경로. C7만 독립적으로 선행 가능하지만 발표 자료 일관성 측면에서 A3 fix 후 수행 권장.


7. Workload 재추정

항목 초기 추정 (design §7) 재추정 (2026-04-20)
Stage 0 사전 등록 0.5h 0.5h (완료, 실제 2 cycle 소요)
Stage 0.5 smoke 2h ≈2h (1차 완료, 재smoke 필요)
Stage 1 baseline (25 runs, 병렬) 3h 3h
Stage 2 ablation (20 runs) 7h 7h
Stage 4 VQ 개선 (15 runs) 5.5h 5.5h
Stage 5 통계 + Stage 6 TSFM + 발표자료 12h 12h
재smoke buffer +2 ~ 4h +2 ~ 4h
A3 발산 진단 + 수정 + 재smoke (신규) +4 ~ 8h
Gate 5 rel_decrease 코드 이식 (신규) +0.5 ~ 1h
32 ~ 34h (≈ D+3~4) 36.5 ~ 42.5h (≈ D+4~5)

발표 자료 마감 여유 재확인 필요 (현 추정은 +4 ~ 8h slip). A3 원인이 peak_alpha 단일 scalar 조정으로 해결되는 경우 범위 하단, 구조적 수정이 필요한 경우 범위 상단.


8. 다음 단계 (병렬 dispatch 중)

Task # 주체 내용 상태
#11 engineer Gate 5 rel_decrease 코드 이식 (v7_stage05_smoke_analysis.py) + 3-tier verdict 구현 + 단위 테스트 진행 중
#12 exp-expert A3 발산 진단 — A1/A2/A4 ablation smoke (각 3 seed) + 원인 single-factor attribution 진행 중
#5 Stage 1 진입 HOLD (#11/#12 완료 + A3 수정 재smoke 통과 후)
#13~ 순차 Stage 2 (20 runs) → Stage 4 (15 runs) → Stage 5 통계 → Stage 6 TSFM → 발표 자료 대기

Stage 1 진입 차단 요인 (재확인)

  1. Gate 5 신 metric이 코드 경로에 반영되어야 함 (smoke_analysis.py + 단위 테스트 통과).
  2. A3 cell이 정상 수렴해야 함 — 원인 규명 후 수정 반영한 재smoke에서 Gate 5 PASS.
  3. 재smoke에서 모든 6-Gate 재통과.

위 3조건 동시 만족 전에는 Stage 1 (25 runs × baselines) 실행 금지 (자원 낭비 + 기준 없는 비교 위험).


9. 재현 참조 (독자가 직접 확인 가능한 경로)

  • Stage 0 pre-registration 재실행: uv run python -m experiments.federated.v7_0419_stage0_preregistration
  • Smoke 실행: uv run python -m experiments.federated.v7_runner --mode=smoke --households=Apt6,Apt88 --cells=B0,B2,A3 --seeds=42,43,123
  • 6-Gate 재평가: uv run python -m experiments.federated.v7_stage05_smoke_analysis
  • v6 Gate 5 back-test: outputs/v7_stage05/v6_gate5_backtest.py

MLflow 조회:

import mlflow
runs = mlflow.search_runs(experiment_names=["v7-peak-aware-fl"])

핵심 숫자 재산출에 필요한 파일: - outputs/v7_stage05/smoke_verdict_20260420_021905.json - outputs/v7_stage05/smoke_gate5_preview.json - outputs/v7_stage05/v6_gate5_backtest.json - outputs/v7_stage0/stage0_summary.json


10. 위험 / 의사결정 요약

위험 / 결정 현 상태
Gate 5 legacy 임계가 실제 분포와 모순 해소 설계 완료, 코드 이식 대기 (#11)
A3 발산 → 초록 핵심 claim 위협 원인 진단 중 (#12). 진단 후 수정 + 재smoke 필수
Workload +4 ~ 8h slip 발표 자료 마감 재검토 필요
Q2 정책 (Gate FAIL 시 자동 engineer 호출) 이번 Gate 5 FAIL에서 실제 발동 — policy 검증됨
v6 N=1 참조 남용 위험 v6_baseline_reference.md에 사용 경고 삽입, Gate 판정에 사용 금지 (critic 반영)

보고자: Peak Analysis Research Team (reporter 역할) 상태: draft — Gate 5 코드 이식 (#11) + A3 진단 (#12) 완료 후 final로 전환 예정