schema_version: v8_9_p2_adoption_plan.v1
meta:
  title: v8_9_p2_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
  decision_basis: >
    P0+P1 완료(spec/tool/schema/golden case/decision_flow/manifest 배선까지) 후 사용자가
    "로드맵에 따라서 제안한 모든 작업을 순차적으로 진행"을 재요청(2026-06-17).
    원본 제안서의 implementation_todo_v8_9 중 P0/P1에서 다루지 않은 4개 세부 항목을 P2로 채택.
  scope:
    - forecast_and_simulation_engine_v8_9.simulation_grid (scenario shock matrix)
    - portfolio_transition_optimizer_v8_9.selection_algorithm (transition-set 조합 열거)
    - model_governance_v8_9.immutable_decision_log_required_fields
    - execution_plan_compiler_v8_9 (LIMIT_SPLIT 전체 컴파일)

tasks:
  - id: P2-A
    title: SCENARIO_SHOCK_MATRIX_V1
    output_file: spec/formulas/domains/simulation.yaml
    detail: >
      base/adverse/liquidity_drought/crisis/fx_shock/tax_cost 6개 시나리오로 net_profit_distribution을
      스트레스 적용. 표본 부족 시 DATA_MISSING(가짜 분포 생성 금지).
    implementation: tools/build_scenario_shock_matrix_v1.py

  - id: P2-B
    title: TRANSITION_SET_ENUMERATOR_V1
    output_file: spec/formulas/domains/portfolio.yaml
    detail: >
      개별 candidate가 아니라 candidate 조합(transition set) 단위로 hard_constraint_pass,
      post_trade_cash_floor_pct, transition_utility_krw를 평가하고 최고 utility set을 선택.
      solver_failure/rank_tie/conflicting_packets fallback은 PORTFOLIO_TRANSITION_UTILITY_V1과 동일.
    implementation: tools/build_transition_set_enumerator_v1.py

  - id: P2-C
    title: IMMUTABLE_DECISION_LEDGER_V1
    output_file: spec/formulas/domains/governance.yaml
    detail: >
      decision_id, timestamp, input_hash_bundle, selected_transition_id, T1/T5/T20_return,
      MAE, MFE를 append-only로 기록. 기존 레코드 수정 금지(append-only 검증).
    implementation: tools/build_immutable_decision_ledger_v1.py

  - id: P2-D
    title: EXECUTION_PLAN_COMPILER_V1
    output_file: spec/formulas/domains/execution.yaml
    detail: >
      EXECUTION_CAPACITY_LADDER_V1 산출물을 LIMIT_SPLIT 30/30/40 슬라이스로 컴파일하고,
      슬라이스 실행 전 cash_floor/capacity/spread 재검증, cancel_remaining_if 조건 평가.
    implementation: tools/build_execution_plan_compiler_v1.py

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