schema_version: v8_9_p3_adoption_plan.v1
meta:
  title: v8_9_p3_adoption_plan
  source_proposal: suggest/quant_investment_engine_v8_9_portfolio_optimizer_canonical_refactored.yaml
  predecessor:
    - governance/todo/v8_9_p0_adoption_plan.yaml
    - governance/todo/v8_9_p1_adoption_plan.yaml
    - governance/todo/v8_9_p2_adoption_plan.yaml
  decision_basis: >
    P0+P1+P2 완료 후 사용자가 "로드맵에 따라서 제안한 모든 작업을 순차적으로 진행"을 3회 재요청(2026-06-17).
    원본 제안서의 implementation_todo_v8_9 중 P1_optimizer_and_simulation, P3_sell_and_rebalance에서
    아직 다루지 않은 5개 항목을 P3로 채택. 이번이 로드맵의 마지막 라운드다 — 이후 implementation_todo_v8_9
    전체가 소진된다.
  scope:
    - P1_optimizer_and_simulation: state_vector constructor, walk-forward bootstrap, post-trade MRC/CVaR per set
    - P3_sell_and_rebalance: mandatory cadence gate, legacy-to-CMA transfer plan as planning input

tasks:
  - id: P3-A
    title: STATE_VECTOR_CONSTRUCTOR_V1
    output_file: spec/formulas/domains/portfolio.yaml
    detail: holdings, cash, tax_lots, sector_graph, factor_exposures, macro_regime_probabilities를 단일 state_vector로 통합.
    implementation: tools/build_state_vector_constructor_v1.py

  - id: P3-B
    title: WALK_FORWARD_BOOTSTRAP_V1
    output_file: spec/formulas/domains/simulation.yaml
    detail: >
      historical_returns 표본에서 walk-forward(시간순 비복원 윈도우) 및 regime-matched(동일 레짐
      필터) 리샘플링으로 net_profit_distribution_after_tax_fee_slippage를 생성.
      FORECAST_SIMULATION_ENGINE_V1의 입력을 채우는 상류 엔진. 표본 부족 시 DATA_MISSING.
    implementation: tools/build_walk_forward_bootstrap_v1.py

  - id: P3-C
    title: TRANSITION_SET_ENUMERATOR_V1 확장 — set 단위 MRC/CVaR/concentration/cash_floor
    output_file: spec/formulas/domains/portfolio.yaml
    detail: 기존 cash_floor/concentration delta 합산만 하던 것을 post_trade_MRC, post_trade_CVaR95까지 포함하도록 확장.
    implementation: tools/build_transition_set_enumerator_v1.py (확장)

  - id: P3-D
    title: REBALANCE_CADENCE_GATE_V1
    output_file: spec/formulas/domains/portfolio.yaml
    detail: >
      주간(토/일) 및 매월 1/11/21일 점검을 의무 실행하되, transition_utility_after_tax_cost가
      양수이거나 hard_risk_block이 active일 때만 실제 리밸런싱을 허용. 그 외에는 점검 결과만
      emit하고 NO_TRADE.
    implementation: tools/build_rebalance_cadence_gate_v1.py

  - id: P3-E
    title: WEEKLY_LEGACY_TRANSFER_PLAN_V1
    output_file: spec/formulas/domains/cash.yaml
    detail: >
      주간 레거시종목→CMA 이전 계획(weekly_legacy_to_cma_transfer_plan_krw)을 입금 확인 전까지
      deployable_cash_krw에 합산하지 않는다. 계획 단계와 확정 단계를 분리.
    implementation: tools/build_weekly_legacy_transfer_plan_v1.py

  - id: P3-F
    title: schema/model + decision_flow/manifest 배선 + 전체 검증
    detail: 5개 신규/확장 공식의 schemas/generated + src/quant_engine/models/generated 생성, spec/09_decision_flow.yaml 및 runtime/active_artifact_manifest.yaml 배선, 5개 validator 재실행.
    depends_on: [P3-A, P3-B, P3-C, P3-D, P3-E]

verification:
  status: DONE
  validated_at: "2026-06-22"
  validator: "python tools/validate_v8_9_p3_adoption_plan_v1.py"
  evidence:
    - "Temp/v8_9_p3_adoption_plan_v1.json"
    - "Temp/state_vector_constructor_v1.json"
    - "Temp/walk_forward_bootstrap_v1.json"
    - "Temp/transition_set_enumerator_v1.json"
    - "Temp/rebalance_cadence_gate_v1.json"
    - "Temp/weekly_legacy_transfer_plan_v1.json"
  notes:
    - "P3-A~P3-E builder scripts exist and emitted canonical Temp artifacts."
    - "spec/09_decision_flow.yaml and runtime/active_artifact_manifest.yaml already reference the five formula IDs."
    - "DATA_MISSING and NO_TRADE outputs are expected when source data is absent; they do not imply validator failure."
