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.0SmoothL1) 재사용 - 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, branchv7-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 통계로 확정)