콘텐츠로 이동

ADR-007: v6 → v7 전환 (Peak-Aware FL Clean Restart for Presentation)

상태: Approved (2026-04-19)

맥락

v6 phase는 FedPM/codebook MVP, FL baseline 확장, BESS 시뮬레이션, 파이프라인 감사 등 여러 실험을 동시 진행했으나 다음 구조적 문제가 누적됨:

  • track-e v3 patchwork: critic 2차 적대적 리뷰 CONDITIONAL REJECT 대응 과정에서 Tier 1a/1b 분할, provisional/final Branch, 5분기 자동 분류 등 복잡도가 비용 대비 결과보다 커짐
  • 단일 seed 한계: 핵심 수치(B0=42.51, R1b Phase3b=38.40, "9.8% reduction")가 모두 seed=42 단일이며 5-seed bootstrap CI 검증 미수행
  • Silent failure: FedPM-Phase2 11 runs 중 다수가 PAPE=nan, fail-fast 게이트 부재로 사후 발견
  • process-level 사각지대: PAPE/HR 정의 dual-track 위험, scaler space leakage, figure data sourcing 비재현성 등이 코드/실험 레벨에 잠복

이 상태에서 동일 트랙 위에 추가 실험을 누적하는 것은 결과 신뢰도가 더 손상될 위험이 큼.

결정

v7 = clean restart. v6의 실험 코드/MLflow run은 lessons-learned로 보존하되, v7은 다음 단일 초록(2026-04-19 사용자 수정판)의 검증에만 집중하는 새 phase로 시작한다.

v7 초록 (변경 불가)
(i) peak-weighted loss
(ii) dual-path = shared VQ codebook + DLinear residual (per-household)
- 평가: PAPE, HR
- "best across baselines"
- "9.8% PAPE reduction vs local-only"
- "light-weight model surpasses time-series foundation models"

용도: 학술 논문 아닌 발표자료. 우선순위 = 속도 + 정확성.

프로세스 핵심 결정: 1. 단계 0.5 Vertical Slice Smoke Test (12 runs, 6 Critical Gates) 신설 — 본 캠페인 진입 전 process error 차단 2. Per-run fail-fast hook (7-metric) — 모든 단계에 적용 3. 단일 entry point (v7_runner.py --mode={smoke,main}) — smoke ↔ main 코드 경로 100% 공유 4. Claim별 자동 rollback (orchestrator override 금지)

상세 설계: docs/reference/project_state/track_v7_design.md

계승 사항 (from v6)

  • 데이터 split / scaler / 가구 5종: v6 split 그대로 사용
  • Peak-weighted loss 구현: v6 코드(peak_alpha=2.0 SmoothL1) 재사용
  • DLinear 구현: v6 baseline 재사용
  • VQ codebook 구현: FedPM src/fed_learning/fedpm.py 재사용 (M=256, D=64, γ=0.95)
  • DLinear residual 통합 패턴: v6 Phase3b experiments/federated/v6_0415_fedpm_original.py의 dual-path 통합 (use_dlinear_residual=True)
  • MLflow 로깅 의무: CLAUDE.md MLflow Logging Rules + 본 phase 추가 (y_pred artifact, fail-fast metric)

폐기 사항 (from v6)

  • track-e v3 Tier 1a/1b 분할: provisional/final Branch 구조 폐기. v7은 단일 캠페인.
  • Branch A/B/C/D/E 5분기: rollback 규칙은 claim별 단순 통과/미통과 + 자동 rollback 문구 적용으로 단순화.
  • Heterogeneity sweep (Dirichlet α): v7 범위에서 보류. 발표자료 용도면 5가구 default 분배로 충분.
  • lab-leader 에이전트 호출: 이전 plan들이 lab-leader 산출물이지만, 현재는 main session(orchestrator)이 직접 수행.
  • BESS 시뮬레이션: v7 범위 제외 (TSG/AE 저널 용도가 아님).
  • track-a~e 활성 상태: 모든 활성 track을 archive로 이동. 새 단일 track-v7로 통합.

근거

  • 사용자가 (c) 완전 재시작 옵션 명시 선택 (2026-04-19 세션)
  • exp-expert ↔ exp-critic 1차 cycle 후 process design 통합 합의 도달
  • v6 patchwork 누적이 발표자료 마감 기준 효율성을 침해

진행 현황

  • 초록 확정 (2026-04-19)
  • v7 design spec 작성 (docs/reference/project_state/track_v7_design.md)
  • worktree 생성 (.claude/worktrees/v7-planning, branch v7-planning)
  • v6 활성 track 모두 todos/archive/ 이동
  • todos/track-v7_peak_aware_fl.md 생성
  • v6 project_state 문서 superseded 전환
  • experiments/README.md 버전 이력 갱신
  • experiments/federated/v7_runner.py 단일 entry point 구현 (engineer)
  • 단계 0 사전 등록 (golden tensor 5쌍 + fail-fast threshold v6 historical 추출)
  • 단계 0.5 smoke test 실행

미결 사항

  • TSFM 비교 (단계 6)에서 사용할 모델 확정: Chronos + TimeMoE 권장, 대안 (Moirai, Lag-Llama) 추후 결정
  • 가구 Apt_max_load 식별 (단계 0 통계로 확정)