schema_version: quant_engine_refactor_master_plan.v1
plan_id: QER-MASTER-REFACTOR-2026-06-07
language: ko-KR
created_at_kst: '2026-06-07T02:30:00+09:00'
scope:
  allowed_file_types:
  - .md
  - .yaml
  - .gs
  - .py
  - .json
  - .schema.json
  - .jsonl
  user_requested_primary_artifact: downloadable_yaml
  investment_domain: retirement_asset_quant_engine
  objective: 5억원 목표 자산 형성을 위한 주간 단위 투자 엔진을 흔들림 없이 확장/고도화/검증/렌더링하는 구조로 재정렬
  non_goals:
  - LLM이 가격·수량·TP·SL·점수를 임의 생성하는 구조
  - GAS에 투자판단·사이징·위험점수 로직을 남기는 구조
  - 문서 수 증가로 문제를 덮는 방식
  - 검증 실패를 운영 판단으로 우회하는 방식
source_evidence:
  source_zip: /mnt/data/data_feed.zip
  source_zip_sha256: f5ce3c4c7f5b0f778a6bbcc967b0e764f2032efa809a3442e10d7c5a752b9095
  read_authority_files:
  - AGENTS.md
  - runtime/active_artifact_manifest.yaml
  - governance/agents_index.yaml
  - governance/rules/*.yaml
  - spec/*.yaml
  - package.json
  - Temp/final_decision_packet_v4.json
  - Temp/engine_harness_gate_result.json
  - Temp/harness_coverage_audit.json
  - Temp/repo_hygiene_report.json
  observed_repository_metrics:
    total_file_count: 1691
    extension_counts:
      .gs: 7
      .js: 1
      .json: 728
      .jsonl: 2
      .log: 1
      .md: 42
      .ps1: 4
      .py: 749
      .txt: 6
      .yaml: 152
    top_directory_file_counts:
      Temp: 401
      src: 303
      tools: 298
      schemas: 160
      tests: 159
      runtime: 154
      spec: 113
      artifacts: 35
      governance: 24
      .: 13
      prompts: 9
      docs: 8
      examples: 8
      suggest: 5
      dist: 2
    package_script_count: 190
    version_duplicate_group_count_detected: 109
    analysis_generated_files_excluded: true
    notable_duplicate_groups:
    - Temp/smart_cash_recovery_v3..v9
    - Temp/final_decision_packet_v1..v4
    - Temp/final_execution_decision_v1..v4
    - Temp/data_integrity_100_lock_v1..v5
    - tools/build_smart_cash_recovery_v3..v6
    - spec/formula_golden_cases_v2..v4
  observed_engine_metrics:
    engine_harness_gate_status: OK
    failed_checks_count: 0
    formula_total: 292
    effective_formula_coverage_pct: 100.0
    gas_only_coverage_pct: 58.56
    python_coverage_pct: 41.44
    true_missing_formula_count: 0
    output_field_coverage_pct: 100.0
    formula_owner_coverage_pct: 0.0
    unresolved_writer_collision_count: 0
    resolved_collision_count: 13
    prediction_match_rate_pct: 54.76
    golden_test_coverage_ratio: 0.6086
    packet_ungrounded_number_count: 0
    llm_numeric_generation_allowed: 0
    pass_100_gate: BLOCK_EXECUTION
    pass_100_score_0_100: 50.0
    execution_readiness_gate: BLOCK_EXECUTION
    execution_readiness_min_axis_score: 37.2
cold_assessment:
  current_state_grade: B+ for governance direction, C+ for operational maintainability, B for numerical discipline, C for
    file entropy control
  core_diagnosis:
  - id: D01
    finding: AGENTS.md는 final_decision_packet_v3를 읽으라고 하지만 active_artifact_manifest.yaml은 canonical_source를 final_decision_packet_v2로
      둔다. 동시에 v4 패킷도 존재한다.
    risk: 저성능 LLM·운영자·스크립트가 서로 다른 패킷을 읽어 판단 드리프트가 발생할 수 있다.
    required_fix: runtime/active_artifact_manifest.yaml 한 곳만 최종 권위로 두고 AGENTS.md 읽기 순서는 manifest alias로만 연결한다.
    severity: P0
  - id: D02
    finding: 공식 커버리지는 effective 100%지만 GAS-only 58.56%, Python 41.44%로 분산되어 있다.
    risk: GAS와 Python의 책임 경계가 조금만 흐려져도 같은 공식이 서로 다른 구현으로 갈라진다.
    required_fix: Python canonical implementation을 active로, GAS는 collect/normalize/export/display thin adapter로 고정한다.
    severity: P0
  - id: D03
    finding: formula_owner_coverage_pct가 0.0으로 관측된다. output field coverage는 100%이나 공식 owner/status 소유권이 비어 있다.
    risk: 새 공식 도입·수정·폐기 시 책임자가 없어 하네스가 통과해도 방법론이 파편화된다.
    required_fix: spec/ownership_map.yaml 또는 governance/authority_matrix.yaml에 formula_owner, status_owner, reviewer를 필수화한다.
    severity: P0
  - id: D04
    finding: Temp와 tools에 버전 산출물이 과밀하다. 전체 파일 1692개 중 Temp 401개, tools 298개, version duplicate group 109개가 관측된다.
    risk: 최신 파일을 잘못 고르는 사람이 실수하고, 저성능 LLM은 오래된 v 파일을 근거로 답할 가능성이 커진다.
    required_fix: active/canonical/archive 세 구역으로 수명주기를 강제하고, runtime은 manifest에 등재된 파일만 읽는다.
    severity: P0
  - id: D05
    finding: prediction_match_rate_pct 54.76, golden_test_coverage_ratio 0.6086, PASS_100 BLOCK_EXECUTION 상태로 관측된다.
    risk: 실행 판단을 공격적으로 자동화하기에는 아직 예측력·검증력·실행 준비도 근거가 부족하다.
    required_fix: 신규 팩터는 반드시 shadow -> evidence -> active 승격을 거치고, live/replay/backtest를 혼합하지 않는다.
    severity: P1
  decision: 문서를 더 만들지 말고, 권위 파일을 줄이고, 공식·데이터·렌더링·GAS의 경계를 강제하는 release-DAG 중심 개발법으로 전환한다.
target_architecture:
  name: Canonical Contract Driven Quant Engine
  one_sentence: spec가 계약을 정의하고, Python이 숫자를 계산하고, GAS는 데이터를 모으고, Temp는 산출물만 담고, LLM은 packet을 읽어 설명만 한다.
  layers:
  - layer: L0_objective_policy
    directory: spec/01_objective_profile.yaml, spec/risk/*.yaml
    owns:
    - 목표금액
    - 현금 방어선
    - D+2 현금 인정
    - 주간 리밸런싱
    - 1/11/21 중간점검
    - 위험예산
    must_not_own:
    - 개별 종목 최신 가격 산출
  - layer: L1_data_contract
    directory: spec/02_data_contract.yaml, spec/12_field_dictionary.yaml, spec/14_raw_workbook_mapping.yaml, schemas/*.schema.json
    owns:
    - 필드명
    - 타입
    - 단위
    - freshness SLA
    - provenance
    - 결측 정책
    must_not_own:
    - 투자판단
  - layer: L2_formula_registry
    directory: spec/13_formula_registry.yaml, spec/formulas/*.yaml
    owns:
    - 공식 ID
    - 입력 필드
    - 출력 필드
    - 공식 버전
    - 허용 범위
    - golden cases
    - owner
    must_not_own:
    - 실행 렌더 문구
  - layer: L3_python_canonical_engine
    directory: src/quant_engine, runtime/python/core/formulas/generated
    owns:
    - 수치 계산
    - 게이트 판정
    - 사이징
    - 손절·익절
    - 팩터 스코어
    - risk budget cascade
    must_not_own:
    - 사용자에게 보여줄 장문 보고서 문장
  - layer: L4_tools_cli
    directory: tools/*.py
    owns:
    - build
    - validate
    - render
    - package
    - audit
    - migration
    must_not_own:
    - 핵심 투자 알고리즘 로직
  - layer: L5_gas_adapter
    directory: gas_*.gs
    owns:
    - collect
    - normalize
    - export
    - display
    must_not_own:
    - decision
    - sizing
    - stop_loss
    - take_profit
    - risk_score
  - layer: L6_runtime_artifacts
    directory: Temp/, runtime/active_artifact_manifest.yaml, artifacts/canonical
    owns:
    - 실행 산출물
    - active artifact
    - shadow ledger
    - lineage
    must_not_own:
    - 소스 규칙
  - layer: L7_llm_packet_renderer
    directory: prompts/low_capability_report_renderer.md, spec/46_low_capability_execution_pack.yaml
    owns:
    - 숫자 재계산 없는 설명
    - 액션 테이블 표시
    - DATA_MISSING 표시
    must_not_own:
    - 하네스 판정 번복
    - 가격/수량 창작
  allowed_dependency_direction: L0 -> L1 -> L2 -> L3 -> L4 -> L5/L6 -> L7 only
  forbidden_dependency_direction:
  - report -> formula
  - GAS -> decision logic
  - LLM -> numeric generation
  - Temp artifact -> spec authority
  - deprecated artifact -> active runtime
development_methodology:
  method_name: Spec First + Harness First + Shadow Promotion + Manifest Only Runtime
  operating_principles:
  - principle: single_source_of_truth
    rule: 모든 운영 숫자는 runtime/active_artifact_manifest.yaml이 가리키는 active artifact에서만 읽는다.
    test: validate_active_manifest_consistency must PASS
  - principle: no_llm_numeric_generation
    rule: LLM은 가격·수량·TP·SL·점수·비중을 계산하지 않는다. packet 숫자를 설명하고 누락 시 DATA_MISSING만 출력한다.
    test: validate_number_provenance_v1 and low_capability_response_contract must PASS
  - principle: contract_before_code
    rule: 새 팩터/게이트/리포트 필드는 spec -> schema -> golden case -> owner ledger -> Python -> GAS adapter 순으로만 추가한다.
    test: validate_specs, validate_schema_model_generation, validate_golden_coverage_100 must PASS
  - principle: shadow_before_active
    rule: 신규 공식은 shadow로 최소 live T+20 30건 또는 지정 표본을 채운 뒤 active 승격한다.
    test: rule_lifecycle transition requires change_request and evidence ledger
  - principle: live_replay_separation
    rule: live, paper, backtest, replay 성과는 서로 다른 source_type으로 저장하며 live 성과처럼 혼합 표시하지 않는다.
    test: validate_live_replay_separation must PASS
  - principle: delete_or_archive_over_document
    rule: 문서 추가보다 중복 제거, manifest 연결, 오래된 버전 archive 이동을 우선한다.
    test: audit_repository_entropy thresholds must PASS
algorithm_design_standard:
  factor_pipeline_order:
  - data_quality_gate
  - market_regime_gate
  - portfolio_risk_budget_gate
  - per_ticker_factor_scores
  - horizon_router
  - entry_exit_gate
  - sizing
  - order_blueprint
  - shadow_ledger
  - packet_renderer
  minimum_factor_contract:
    required_fields:
    - factor_id
    - hypothesis
    - horizon
    - decay_half_life
    - market_regime_applicability
    - input_fields
    - formula_id
    - expected_edge_formula
    - data_quality_requirements
    - conflict_precedence
    - position_sizing_impact
    - exit_impact
    - golden_cases
    - shadow_start_date
    - activation_threshold
    - retirement_condition
    - owner
    - reviewer
    - source_type_allowed
    forbidden_fields:
    - free_text_score_without_formula
    - manual_price_override_without_provenance
    - llm_estimated_quantity
  score_normalization_standard:
    score_range: 0..100
    confidence_cap: min(data_quality_score, evidence_score, calibration_score)
    negative_evidence_policy: risk/exit gates dominate bullish factor scores
    conflict_resolution_order:
    - hard_block
    - risk_budget
    - data_quality
    - exit_signal
    - cash_floor
    - expected_edge
    - momentum
    - fundamental
    - narrative
  anti_late_entry_standard:
    purpose: 뒷북 매수와 설거지 매수를 구조적으로 차단
    required_signals:
    - entry_timing_decile
    - pullback_quality
    - volume_price_confirmation
    - distribution_risk
    - relative_strength_persistence
    - freshness_of_breakout
    hard_blocks:
    - price_extended_without_pullback
    - distribution_risk_high
    - no_liquidity_confirmation
    - event_gap_after_chase
    - stale_signal
    activation_rule: shadow에서 late_entry_false_positive_rate가 기존 active 대비 20% 이상 개선되고, opportunity_loss가 허용범위 내일 때만 active
      승격
  risk_budget_standard:
    goal: 수익률을 올리되 수익금을 지키는 엔진
    rules:
    - cash_floor is hard constraint
    - D+2 cash counts as immediate cash defense
    - single_name_cap and cluster_cap are hard constraints
    - profit_lock_ratchet is mandatory after defined gain threshold
    - drawdown_guard overrides buy signals
    outputs:
    - position_scale
    - cash_raise_plan
    - sell_priority_table
    - risk_budget_cascade
    - expected_damage_if_hold
    - expected_damage_if_sell
refactor_phases:
- phase_id: P0
  name: 권위 충돌 제거와 런타임 단일화
  timebox: 1 release cycle
  entry_criteria:
  - current zip extracted
  - AGENTS.md read
  - runtime/active_artifact_manifest.yaml exists
  exit_criteria:
  - active_manifest_canonical_source matches AGENTS read order
  - only one active final_decision_packet alias
  - deprecated final_decision_packet files moved to artifacts/archive or marked inactive
  - validate_active_manifest_consistency PASS
  tasks:
  - T001
  - T002
  - T003
  - T004
  - T005
  - T006
- phase_id: P1
  name: 공식 소유권과 수명주기 강화
  timebox: 1-2 release cycles
  entry_criteria:
  - P0 complete
  exit_criteria:
  - formula_owner_coverage_pct == 100.0
  - status_owner_coverage_pct == 100.0
  - every formula has lifecycle state
  - changed formula requires change_request
  tasks:
  - T010
  - T011
  - T012
  - T013
  - T014
  - T015
- phase_id: P2
  name: GAS thin adapter 전환
  timebox: 2-4 release cycles
  entry_criteria:
  - forbidden GAS business logic inventory exists
  exit_criteria:
  - forbidden_gas_logic_count == 0 or approved exceptions only
  - GAS exports inputs and displays outputs only
  - Python/GAS golden parity PASS
  tasks:
  - T020
  - T021
  - T022
  - T023
  - T024
  - T025
- phase_id: P3
  name: 저성능 LLM 실행 패킷 고정
  timebox: 1 release cycle
  entry_criteria:
  - final_decision_packet schema stable
  exit_criteria:
  - low_capability_response_contract PASS
  - all report numbers have provenance
  - renderer_calculation_count == 0
  tasks:
  - T030
  - T031
  - T032
  - T033
  - T034
- phase_id: P4
  name: 팩터 연구·백테스트·라이브 승격 체계
  timebox: continuous
  entry_criteria:
  - factor taxonomy active
  exit_criteria:
  - new factor cannot become active without live/paper/backtest separation and shadow ledger
  - prediction lift dashboard produced weekly
  tasks:
  - T040
  - T041
  - T042
  - T043
  - T044
  - T045
  - T046
- phase_id: P5
  name: 문서/파일 다이어트와 릴리즈 DAG 압축
  timebox: 2 release cycles
  entry_criteria:
  - entropy audit baseline captured
  exit_criteria:
  - package_script_count reduced or grouped
  - version_duplicate_groups under threshold
  - Temp active files manifest-only
  - docs under size budget
  tasks:
  - T050
  - T051
  - T052
  - T053
  - T054
  - T055
atomic_todo:
- id: T001
  priority: P0
  title: active packet alias 확정
  instruction: runtime/active_artifact_manifest.yaml에 final_decision_packet_active alias를 추가하고, 값은 현재 운영에서 읽을 단 하나의 파일만 가리키게
    한다. AGENTS.md의 직접 파일명은 alias 참조로 바꾼다.
  files_to_touch:
  - runtime/active_artifact_manifest.yaml
  - AGENTS.md
  - governance/agents_index.yaml
  acceptance:
  - AGENTS.md에 final_decision_packet_v2/v3/v4 직접 하드코딩이 없다
  - manifest active_count_per_formula remains 1
  - report_authority_diff_count == 0
  validation_commands:
  - python tools/validate_specs.py
  - python tools/validate_active_artifact_manifest_v1.py || python tools/build_canonical_artifact_resolver_v1.py
- id: T002
  priority: P0
  title: final_decision_packet 버전 수명 정리
  instruction: Temp/final_decision_packet_v1..v4 중 active alias가 아닌 파일은 artifacts/archive/YYYY-MM-DD로 이동하거나 superseded_by를
    명시한다. Temp에는 active 산출물과 최신 validation 결과만 둔다.
  files_to_touch:
  - Temp/final_decision_packet_*.json
  - artifacts/archive/
  - runtime/lineage_events.jsonl
  acceptance:
  - Temp final_decision_packet active file count == 1
  - archive manifest records moved files
  - lineage event exists for each moved artifact
  validation_commands:
  - python tools/audit_repository_entropy_v1.py --root . --out Temp/repo_entropy_after_p0.yaml
- id: T003
  priority: P0
  title: 운영 리포트와 packet 점수 동기화 검사 추가
  instruction: operational_report.json의 PASS_100, execution_readiness, prediction fields가 final_decision_packet_active와 동일한지
    비교하는 validator를 만든다. 불일치 시 FAIL_BLOCK_PUBLISH.
  files_to_touch:
  - tools/validate_report_packet_sync_v1.py
  - package.json
  - schemas/operational_report.schema.json
  acceptance:
  - PASS_100 score/gate mismatch 발견 시 exit_code != 0
  - full-gate에 validator 포함
  - renderer는 packet 값을 그대로 표시
  validation_commands:
  - python tools/validate_report_packet_sync_v1.py --packet Temp/final_decision_packet_active.json --report Temp/operational_report.json
- id: T004
  priority: P0
  title: 숫자 provenance 차단 강화
  instruction: 보고서 모든 숫자에 source_path, json_pointer, formula_id, input_hash, freshness_status가 없으면 렌더 차단한다.
  files_to_touch:
  - spec/45_number_provenance_contract.yaml
  - tools/validate_number_provenance_v1.py
  - prompts/low_capability_report_renderer.md
  acceptance:
  - ungrounded_number_count == 0
  - LLM numeric_generation_allowed == 0
  - DATA_MISSING 처리 케이스 golden test 존재
  validation_commands:
  - npm run validate-llm-freedom
  - python tools/validate_number_provenance_v1.py
- id: T005
  priority: P0
  title: release DAG 단일 진입점 정리
  instruction: package.json 190개 스크립트 중 운영자가 직접 실행할 entrypoint를 release-gate, full-gate, quick-gate, package-only, daily-feedback-report로
    제한하고 나머지는 내부 stage로 분류한다.
  files_to_touch:
  - package.json
  - spec/41_release_dag.yaml
  - tools/run_release_dag_v1.py
  - README.md
  acceptance:
  - README 운영 명령이 5개 이하
  - run_release_dag_v1.py가 stage orchestration 담당
  - 중복 npm chain 제거 또는 internal namespace 이동
  validation_commands:
  - npm run full-gate
  - npm run release-gate
- id: T006
  priority: P0
  title: DATA_MISSING 표준화
  instruction: 하네스 결측은 어떤 보고서에서도 추정값으로 채우지 말고 DATA_MISSING — 하네스 업데이트 필요 형식으로만 렌더한다.
  files_to_touch:
  - spec/46_low_capability_execution_pack.yaml
  - schemas/low_capability_response_contract_v3.schema.json
  - prompts/low_capability_report_renderer.md
  - tests/golden/*missing*
  acceptance:
  - 결측 golden case에서 임의 수치 0건
  - DATA_MISSING phrase exactly appears
  - blocked metrics still visible in shadow ledger
  validation_commands:
  - python tools/validate_low_capability_response_contract_v3.py || npm run validate-report-quality
- id: T010
  priority: P0
  title: 공식 owner/status 필수화
  instruction: spec/13_formula_registry.yaml의 모든 formula_id에 owner, reviewer, lifecycle_state, status_owner, output_owner를
    요구한다. 누락 시 validate_specs 실패.
  files_to_touch:
  - spec/13_formula_registry.yaml
  - spec/ownership_map.yaml
  - governance/authority_matrix.yaml
  - tools/validate_formula_owner_coverage_v1.py
  acceptance:
  - formula_owner_coverage_pct == 100.0
  - missing_owner_list length == 0
  - missing_status_list length == 0
  validation_commands:
  - python tools/validate_formula_owner_coverage_v1.py
  - python tools/validate_specs.py
- id: T011
  priority: P0
  title: change_request 없는 공식 변경 금지
  instruction: formula registry, risk policy, decision flow 변경은 governance/change_requests/*.yaml에 근거가 없으면 차단한다.
  files_to_touch:
  - governance/change_request_template.yaml
  - governance/rule_lifecycle.yaml
  - tools/validate_change_request_coverage_v1.py
  acceptance:
  - changed_formula_without_change_request_count == 0
  - change_request has before/after/expected_effect/rollback_plan/evidence_required
  validation_commands:
  - python tools/validate_change_request_coverage_v1.py
- id: T012
  priority: P1
  title: golden case coverage 100 하드게이트
  instruction: 공식별 최소 buy/sell/hold/reject/insufficient_data/edge_case golden case를 강제한다. 현재 coverage ratio 0.6086 수준은 active
    승격 기준으로 부족하다.
  files_to_touch:
  - spec/formula_golden_cases_v4.yaml
  - tests/golden/
  - tools/validate_golden_coverage_100.py
  acceptance:
  - golden_test_coverage_ratio == 1.0
  - decision-critical formulas have 5 scenario classes
  - edge cases include stale data and missing provenance
  validation_commands:
  - python tools/validate_golden_coverage_100.py
  - python tools/run_formula_golden_cases_v2.py
- id: T013
  priority: P1
  title: 공식 충돌 해결 테이블 고정
  instruction: output_field_owner_collision_v1에서 resolved collision 13건은 예외가 아니라 명시적 precedence table로 유지한다. 새 충돌은 실패 처리한다.
  files_to_touch:
  - spec/execution_authority_matrix_v2.yaml
  - spec/xref_matrix.yaml
  - tools/validate_output_field_owner_collision_v1.py
  acceptance:
  - unresolved_writer_collision_count == 0
  - resolved collisions have explicit precedence reason
  - new collision causes FAIL
  validation_commands:
  - python tools/validate_output_field_owner_collision_v1.py
- id: T014
  priority: P1
  title: 공식 버전 deprecation policy
  instruction: _vN 파일은 active, shadow, archived, retired 중 하나의 상태를 가져야 한다. 같은 formula family에서 active는 1개만 허용한다.
  files_to_touch:
  - governance/rule_lifecycle.yaml
  - runtime/active_artifact_manifest.yaml
  - tools/validate_formula_version_lifecycle_v1.py
  acceptance:
  - active_count_per_formula == 1
  - stale_artifact_count == 0
  - version_duplicate_group_count under configured threshold
  validation_commands:
  - python tools/validate_formula_version_lifecycle_v1.py
  - python tools/audit_repository_entropy_v1.py --root . --out Temp/repo_entropy.yaml
- id: T015
  priority: P1
  title: ADR와 spec 연결 강제
  instruction: governance/adr/*.md는 반드시 변경한 spec 파일과 validation command를 참조해야 한다. 단순 의견 문서는 archive한다.
  files_to_touch:
  - governance/adr_index.yaml
  - governance/adr/*.md
  - tools/validate_adr_spec_links_v1.py
  acceptance:
  - ADR without touched_spec_count == 0
  - ADR index hash updated
  - obsolete docs archived
  validation_commands:
  - python tools/validate_adr_spec_links_v1.py
- id: T020
  priority: P0
  title: GAS business logic inventory 확정
  instruction: gas_*.gs의 모든 함수에 allowed_responsibility 태그를 붙인다. decision/sizing/stop_loss/take_profit/risk_score는 forbidden으로
    분류한다.
  files_to_touch:
  - tools/audit_gas_business_logic_v1.py
  - Temp/gas_business_logic_audit_v1.json
  - spec/39_gas_thin_adapter_policy.yaml
  acceptance:
  - function_inventory_coverage_pct == 100.0
  - forbidden_function_count is measured
  - approved exceptions only runtime_report_rendering/data_collection_helpers
  validation_commands:
  - python tools/audit_gas_business_logic_v1.py --out Temp/gas_business_logic_audit_v1.json
- id: T021
  priority: P0
  title: GAS 의사결정 로직 Python 이전
  instruction: GAS에서 발견된 decision/sizing/stop/tp/risk 로직을 src/quant_engine/core 또는 runtime/python/core/formulas/generated로
    이전하고 GAS는 해당 결과를 읽기만 한다.
  files_to_touch:
  - src/quant_engine/
  - runtime/python/core/formulas/generated/
  - gas_*.gs
  - tools/validate_gas_thin_adapter_v1.py
  acceptance:
  - forbidden_gas_logic_count decreases every release
  - Python/GAS parity golden cases PASS
  - GAS adapter has no hard-coded risk thresholds
  validation_commands:
  - python tools/validate_gas_thin_adapter_v1.py
  - node tools/run_gas_golden_parity.js
- id: T022
  priority: P1
  title: GAS 함수 arity/contract 고정
  instruction: GAS export 함수의 인자 수, 반환 shape, sheet key를 schema로 고정한다.
  files_to_touch:
  - schemas/generated/gas_adapter_contract.schema.json
  - tools/validate_gas_call_arity.py
  - gas_*.gs
  acceptance:
  - validate-gas-call-arity PASS
  - all exported rows have schema
  - no silent null returns
  validation_commands:
  - npm run validate-gas-call-arity
- id: T023
  priority: P1
  title: 데이터 수집과 판단 시점 분리
  instruction: collect timestamp, normalize timestamp, decision timestamp를 분리하고 freshness_status를 packet까지 전달한다.
  files_to_touch:
  - spec/02_data_contract.yaml
  - spec/45_number_provenance_contract.yaml
  - tools/build_data_freshness_sla_v1.py
  - gas_data_collect.gs
  acceptance:
  - every numeric field has freshness_status
  - stale TP removed
  - freshness SLA violations block active decision
  validation_commands:
  - python tools/build_data_freshness_sla_v1.py
  - python tools/validate_number_provenance_v1.py
- id: T024
  priority: P1
  title: HTS/account snapshot 계약 강화
  instruction: account_snapshot 필드, D+2 현금, 예수금, 평가금, 매수가능금액을 schema로 고정하고 파싱 결과와 하네스 입력을 reconciliation한다.
  files_to_touch:
  - spec/15_account_snapshot_contract.yaml
  - spec/14_raw_workbook_mapping.yaml
  - tools/validate_account_snapshot_contract_v1.py
  acceptance:
  - D+2 cash treated as immediate cash defense
  - snapshot_parse_error_count == 0
  - cash defense line provenance exists
  validation_commands:
  - python tools/validate_account_snapshot_contract_v1.py
- id: T025
  priority: P2
  title: GAS deployment checklist 자동화
  instruction: Apps Script 반영 후 runHarnessRefresh_ 실행, proposal_reference_json 생성, strict gate 전환까지 체크리스트를 스크립트로 만든다.
  files_to_touch:
  - README.md
  - tools/validate_proposal_reference.py
  - tools/gas_deployment_checklist_v1.py
  acceptance:
  - proposal_reference strict PASS
  - operator checklist has exact commands
  - rollback step documented
  validation_commands:
  - npm run validate-proposal-reference:strict
  - npm run full-gate:proposal-strict
- id: T030
  priority: P0
  title: packet-only renderer 구현
  instruction: 보고서 렌더러는 final_decision_packet_active의 필드만 읽는다. 계산식, fallback 계산, 임의 보간을 제거한다.
  files_to_touch:
  - tools/render_operational_report_json.py
  - prompts/low_capability_report_renderer.md
  - spec/46_low_capability_execution_pack.yaml
  acceptance:
  - renderer_calculation_count == 0
  - all sections map to packet json_pointer
  - missing data renders DATA_MISSING
  validation_commands:
  - python tools/validate_renderer_contract_v1.py
  - npm run validate-report-sync
- id: T031
  priority: P0
  title: 저성능 LLM 응답 순서 고정
  instruction: 응답은 executive -> blockers -> action_table -> shadow_ledger -> data_missing -> education_notes 순서만 허용한다.
  files_to_touch:
  - spec/46_low_capability_execution_pack.yaml
  - schemas/low_capability_response_contract_v3.schema.json
  - prompts/low_capability_report_renderer.md
  acceptance:
  - section order fixed
  - blocked items still display price/SL/TP/qty if available
  - unsupported reason count is explicit
  validation_commands:
  - python tools/validate_low_capability_response_contract_v3.py
- id: T032
  priority: P1
  title: 문장-숫자 cross-check
  instruction: 마크다운 문장에 있는 숫자와 JSON packet 숫자가 다르면 publish 차단한다.
  files_to_touch:
  - tools/validate_report_numerical_sync_v1.py
  - schemas/operational_report.schema.json
  acceptance:
  - numeric_text_mismatch_count == 0
  - percent/원/주 단위 normalization handled
  - stale extracted number fails test
  validation_commands:
  - python tools/validate_report_numerical_sync_v1.py --report Temp/operational_report.json --packet Temp/final_decision_packet_active.json
- id: T033
  priority: P1
  title: LLM forbidden phrase and hallucination audit
  instruction: 보고서에 “예상”, “아마”, “대략”, “추정”처럼 하네스 없는 수치 완화 표현이 있는지 검사한다.
  files_to_touch:
  - tools/validate_llm_narrative_template_lock_v1.py
  - prompts/report_renderer_prompt.md
  acceptance:
  - hallucination_risk_phrase_count == 0 for action table
  - soft language allowed only education_notes
  - gate cannot be softened by narrative
  validation_commands:
  - npm run validate-narrative-lock
- id: T034
  priority: P2
  title: 표준 한국어 액션 문법
  instruction: BUY/SELL/TRIM/HOLD/AVOID는 하나의 주문문에 다중 조건 접속사를 넣지 않는다. 조건은 별도 행으로 분리한다.
  files_to_touch:
  - spec/03_order_grammar.yaml
  - schemas/order_blueprint_v2.schema.json
  - tools/validate_order_grammar_v1.py
  acceptance:
  - multi_condition_order_sentence_count == 0
  - tick normalization PASS
  - sell candidate >=2 triggers sell priority table first
  validation_commands:
  - python tools/validate_order_grammar_v1.py
- id: T040
  priority: P1
  title: 팩터 연구 RFC 템플릿
  instruction: 새 팩터는 hypothesis, expected edge, decay half-life, source type, conflict precedence, golden cases가 없으면 등록 불가.
  files_to_touch:
  - spec/43_quant_factor_taxonomy.yaml
  - governance/change_request_template.yaml
  - suggest/factor_rfc_template.yaml
  acceptance:
  - new_factor_missing_contract_count == 0
  - factor has owner and retirement condition
  - no factor enters active without shadow evidence
  validation_commands:
  - python tools/validate_factor_contract_v1.py
- id: T041
  priority: P1
  title: 예측력 lift 측정 표준화
  instruction: prediction_match_rate_pct만 보지 말고 baseline random, benchmark, sector neutral, transaction cost after slippage
    대비 lift를 기록한다.
  files_to_touch:
  - spec/17_performance_contract.yaml
  - tools/build_prediction_lift_dashboard_v1.py
  - Temp/continuous_evaluation_dashboard_v*.json
  acceptance:
  - prediction_lift_vs_baseline_ppt exists
  - t5/t20/t60 horizon separated
  - sample_count and confidence interval included
  validation_commands:
  - python tools/build_prediction_lift_dashboard_v1.py
- id: T042
  priority: P1
  title: late-entry anti-chase 하네스 강화
  instruction: 신규 진입 추천이 추세 막차/분배 구간/이벤트 갭 이후인지 검증하는 false-positive ledger를 만든다.
  files_to_touch:
  - spec/strategy/anti_late_entry.yaml
  - tools/build_anti_late_chase_v6.py
  - tests/golden/anti_late_entry_cases.yaml
  acceptance:
  - late_entry_false_positive_rate tracked
  - chase_block_reason displayed
  - opportunity_loss tracked separately
  validation_commands:
  - python tools/build_anti_late_chase_v6.py
  - python tools/validate_alpha_execution_harness.py GatherTradingData.json --check anti_late_entry
- id: T043
  priority: P1
  title: 스마트머니/유동성 composite 분해
  instruction: smart_money_score와 liquidity_score를 거래대금, 수급 주체, 회전율, 가격충격, spread proxy로 분해하고 각자 provenance를 둔다.
  files_to_touch:
  - spec/formulas/smart_money_liquidity.yaml
  - tools/build_smart_money_liquidity_composite_v4.py
  acceptance:
  - component_scores sum or weighted formula documented
  - liquidity trap flag exists
  - thin liquidity blocks large orders
  validation_commands:
  - python tools/build_smart_money_liquidity_composite_v4.py
- id: T044
  priority: P2
  title: 펀더멘털 quality raw evidence 분리
  instruction: PER/PBR/ROE/영업이익증가율/현금흐름/부채비율 등 원천값과 정규화 점수를 분리한다.
  files_to_touch:
  - spec/strategy/fundamental_quality_v4.yaml
  - tools/build_fundamental_raw_evidence_v4.py
  - schemas/generated/fundamental_quality.schema.json
  acceptance:
  - raw fundamental value provenance exists
  - imputed data exposure displayed
  - fundamental stale data blocks long-horizon upgrade
  validation_commands:
  - python tools/build_fundamental_raw_evidence_v4.py
  - python tools/validate_imputed_data_exposure_v1.py
- id: T045
  priority: P2
  title: exit waterfall engine 강화
  instruction: 손절, 상대손절, 시간손절, 수익보호 ratchet, 분배 위험, 현금회복 필요를 하나의 precedence waterfall로 정렬한다.
  files_to_touch:
  - spec/exit/exit_waterfall.yaml
  - tools/build_sell_waterfall_engine_v3.py
  - tests/golden/sell_waterfall_cases.yaml
  acceptance:
  - exit reason precedence deterministic
  - sell priority table always before 2+ sell candidates
  - value_damage_if_hold/sell both shown
  validation_commands:
  - python tools/build_sell_waterfall_engine_v3.py
  - npm run validate-cash-raise-route
- id: T046
  priority: P2
  title: 라이브/리플레이 승격 대시보드
  instruction: replay EV, paper EV, live EV를 같은 표에 두되 source_type과 승격 가능 여부를 분리한다.
  files_to_touch:
  - spec/44_live_replay_separation.yaml
  - tools/build_performance_readiness_replay_bridge_v2.py
  acceptance:
  - live_t20_count displayed
  - replay cannot unlock active Kelly
  - 'promotion_rule enforced: live_t20_count >= 30'
  validation_commands:
  - python tools/build_performance_readiness_replay_bridge_v2.py
- id: T050
  priority: P0
  title: Temp 파일 정책 적용
  instruction: Temp는 빌드 산출물 전용이다. active runtime 파일, latest validation 파일, current report 외 오래된 json은 archive로 이동한다.
  files_to_touch:
  - spec/47_packaging_policy.yaml
  - tools/clean_temp_artifacts_v1.py
  - artifacts/archive/
  acceptance:
  - Temp file count reduced under configured budget
  - archived files have manifest and hash
  - runtime consumers do not read archived paths
  validation_commands:
  - python tools/clean_temp_artifacts_v1.py --dry-run
  - python tools/audit_repository_entropy_v1.py --root . --out Temp/repo_entropy.yaml
- id: T051
  priority: P1
  title: tools CLI 역할 분리
  instruction: tools/*.py를 build_, validate_, render_, migrate_, audit_ prefix로 분류하고 핵심 공식 로직은 src/quant_engine으로 이전한다.
  files_to_touch:
  - tools/
  - src/quant_engine/
  - spec/34_architecture_boundaries.yaml
  acceptance:
  - tools_core_logic_count == 0
  - all tools have argparse help
  - all tools return machine-readable status
  validation_commands:
  - python tools/validate_architecture_boundaries_v2.py
- id: T052
  priority: P1
  title: 문서 다이어트
  instruction: README는 운영 entrypoint만, AGENTS는 헌법/읽기 순서만, 상세 규칙은 governance/rules와 spec으로 이동한다. prompt 장문은 dist compact pack으로
    압축한다.
  files_to_touch:
  - README.md
  - AGENTS.md
  - prompts/*.md
  - docs/*.md
  - dist/*.yaml
  acceptance:
  - AGENTS.md under configured line budget
  - README commands <= 5
  - prompt/spec drift validator PASS
  validation_commands:
  - python tools/validate_agents_shrink_v1.py
  - python tools/validate_prompt_spec_sync_v1.py
- id: T053
  priority: P1
  title: package whitelist 정리
  instruction: prepare_upload_zip는 source_required, runtime_required, report_required, test_required만 포함하고 archive/temp noise를
    제외한다.
  files_to_touch:
  - tools/prepare_upload_zip.py
  - spec/47_packaging_policy.yaml
  acceptance:
  - zip contains no deprecated artifacts unless archive profile
  - release zip reproducible hash stable
  - package profile recorded
  validation_commands:
  - npm run prepare-upload-zip:release
  - npm run prepare-upload-zip:quick
- id: T054
  priority: P2
  title: 자동 엔트로피 예산
  instruction: 파일 수, 중복 버전 그룹, scripts 수, Temp 파일 수, 문서 라인 수에 release budget을 둔다. 초과 시 package 차단.
  files_to_touch:
  - tools/audit_repository_entropy_v2.py
  - spec/release/repository_entropy_budget.yaml
  - package.json
  acceptance:
  - repository_entropy_gate == PASS
  - new docs require retirement of old docs or ADR justification
  - script count budget enforced
  validation_commands:
  - python tools/audit_repository_entropy_v2.py --root . --out Temp/repo_entropy_v2.json
- id: T055
  priority: P2
  title: compact/ultra compact bundle 동등성
  instruction: dist compact yaml과 full source가 같은 decision packet을 만들어내는지 equivalence test를 둔다.
  files_to_touch:
  - dist/*.yaml
  - tools/validate_compact_bundle_equivalence_v1.py
  acceptance:
  - compact_bundle_equivalence == PASS
  - low capability pack contains all required sections
  - missing source link count == 0
  validation_commands:
  - python tools/validate_compact_bundle_equivalence_v1.py
low_capability_llm_execution_protocol:
  role: 저성능 LLM 또는 주니어 운영자가 그대로 따라야 하는 절차
  strict_order:
  - step: S00_extract_and_identify
    do:
    - zip 압축 해제
    - AGENTS.md 읽기
    - runtime/active_artifact_manifest.yaml 읽기
    - manifest가 가리키는 active packet만 열기
    never:
    - Temp에서 최신처럼 보이는 v파일을 임의 선택하지 않는다
  - step: S01_validate_before_reading_report
    do:
    - npm run full-gate 또는 python tools/run_release_dag_v1.py --mode full 실행
    - failed_checks가 0인지 확인
    - WARN_ONLY와 FAIL을 구분
    never:
    - 검증 실패 상태에서 투자 액션을 확정하지 않는다
  - step: S02_collect_required_numbers
    do:
    - portfolio health
    - cash floor
    - D+2 cash
    - PASS_100 gate
    - execution readiness
    - per ticker verdict
    - order blueprint
    - shadow ledger
    - data missing list를 packet에서만 복사
    never:
    - 계산기로 보정하거나 평균을 임의로 낸다
  - step: S03_render_fixed_sections
    do:
    - executive
    - blockers
    - action_table
    - shadow_ledger
    - data_missing
    - education_notes 순서로 출력
    never:
    - 하네스가 BLOCK한 주문을 말로 완화하지 않는다
  - step: S04_check_numbers_again
    do:
    - 모든 숫자의 source_path/json_pointer/formula_id를 확인
    - 숫자 단위 원/주/% 확인
    - stale 표시 확인
    never:
    - provenance 없는 숫자를 남긴다
  - step: S05_publish_or_block
    do:
    - validator PASS면 publish
    - validator FAIL이면 FAIL_BLOCK_PUBLISH와 고칠 파일/명령만 출력
    never:
    - 부분 PASS를 운영 PASS로 표현하지 않는다
  minimal_command_sequence:
  - python tools/validate_specs.py
  - python tools/validate_golden_coverage_100.py
  - python tools/validate_calibration_registry_v1.py
  - python tools/validate_schema_model_generation_v1.py
  - python tools/validate_gas_thin_adapter_v1.py
  - python tools/validate_agents_shrink_v1.py
  - npm run full-gate
  - npm run validate-report-sync
  response_contract: 모든 응답은 packet-only 숫자와 DATA_MISSING 표준을 사용한다.
release_quality_gates:
  must_pass_before_operational_use:
  - validate_specs
  - validate_schema_model_generation
  - validate_formula_owner_coverage
  - validate_golden_coverage_100
  - validate_number_provenance
  - validate_active_manifest_consistency
  - validate_gas_thin_adapter
  - validate_report_packet_sync
  - validate_low_capability_response_contract
  - full_gate
  numeric_thresholds:
    effective_formula_coverage_pct: 100.0
    true_missing_formula_count: 0
    formula_owner_coverage_pct: 100.0
    ungrounded_number_count: 0
    active_count_per_formula: 1
    authority_collision_count: 0
    renderer_calculation_count: 0
    live_t20_min_before_active_kelly: 30
    golden_test_coverage_ratio_for_active: 1.0
    prediction_lift_required_for_new_factor_pct_points: 3.0
    late_entry_false_positive_reduction_required_pct: 20.0
  publish_blockers:
  - failed_checks_count > 0
  - unresolved_writer_collision_count > 0
  - formula_owner_coverage_pct < 100
  - ungrounded_number_count > 0
  - active packet alias mismatch
  - LLM numeric_generation_allowed != 0
  - renderer_calculation_count > 0
  - GAS forbidden business logic without exception
file_diet_policy:
  target_state: 소스는 적고, 계약은 명확하고, 산출물은 manifest로만 접근한다.
  budgets:
    AGENTS_md_max_lines: 120
    README_operational_commands_max: 5
    active_temp_final_packet_count: 1
    active_formula_version_per_family: 1
    prompt_files_active_max: 3
    package_operator_entrypoints_max: 5
  archive_rules:
  - Temp의 오래된 v파일은 artifacts/archive/YYYY-MM-DD로 이동
  - artifacts/canonical에는 active가 아닌 참조용 canonical만 둔다
  - docs/adr는 결정 근거만 남기고 튜토리얼성 설명은 README나 runbook으로 병합
  - prompts는 low_capability, report_renderer, audit 세 종류로 축소
  - dist compact/ultra compact는 source와 equivalence test가 있을 때만 유지
pm_operating_model:
  cadence:
    weekly:
    - 토/일 리밸런싱 제안 전 full-gate 실행
    - prediction lift dashboard 갱신
    - late-entry false positive review
    - cash defense check including D+2 cash
    monthly_day_1_11_21:
    - 중간점검 packet 생성
    - rule lifecycle review
    - retire candidates review
    - owner coverage audit
    per_change:
    - change_request 작성
    - shadow run
    - golden case 추가
    - release gate 통과 후 active 승격
  roles:
    quant_owner: 공식 가설, 기대수익, 승격/폐기 조건 승인
    data_owner: 필드, freshness, provenance, 결측 정책 승인
    engine_owner: Python canonical implementation과 validators 책임
    gas_owner: 수집/정규화/표시 adapter 책임
    report_owner: packet-only renderer와 저성능 LLM 응답 계약 책임
    release_manager: manifest, archive, package, DAG, gate 상태 책임
  definition_of_done:
  - contract exists
  - schema exists
  - owner exists
  - golden cases exist
  - shadow evidence exists for new factor
  - Python canonical implementation exists
  - GAS is thin or exception recorded
  - number provenance exists
  - release gate PASS
  - rollback path documented
recommended_immediate_sequence:
- '1) P0: active packet alias mismatch 해결'
- '2) P0: formula owner coverage 0%를 100%로 올리는 validator 추가'
- '3) P0: report-packet numeric sync validator 추가'
- '4) P0: Temp active artifact 1개 정책 적용'
- '5) P1: golden coverage 100%를 active 승격 기준으로 전환'
- '6) P1: GAS business logic inventory 후 Python 이관 순차 진행'
- '7) P1: 저성능 LLM packet-only renderer 고정'
- '8) P2: factor shadow/evidence/active 승격 대시보드 운영화'
success_definition: 저성능 LLM이 final_decision_packet_active와 이 YAML의 TODO만 읽어도, 고성능 LLM과 동일한 숫자·동일한 차단·동일한 액션 테이블·동일한 DATA_MISSING
  판단을 출력하면 성공이다.
task_execution_status:
  summary:
    completed: 36
    blocked: 0
    total: 36
    operational_ready: false
  items:
    - id: T001
      status: PASS
      evidence:
        - runtime/active_artifact_manifest.yaml canonical_source moved to final_decision_packet_active.json
        - AGENTS.md reads Temp/final_decision_packet_active.json only
        - python tools/validate_active_manifest.py --manifest runtime/active_artifact_manifest.yaml --strict: PASS
    - id: T002
      status: PASS
      evidence:
        - tools/build_final_decision_packet_v3.py and tools/build_final_decision_packet_v4.py now read Temp/final_decision_packet_active.json
        - runtime/active_artifact_manifest.yaml removes v1/v2 precedence from active source routing
        - python tools/run_release_dag_v1.py --mode release: PASS
    - id: T003
      status: PASS
      evidence:
        - tools/validate_report_packet_sync_v1.py added
        - package.json validate-report-packet-sync added
        - tools/run_release_dag_v1.py release/full now includes the packet/report sync check
        - python tools/validate_report_packet_sync_v1.py --packet Temp/final_decision_packet_active.json --report Temp/operational_report.json: PASS
    - id: T004
      status: PASS
      evidence:
        - tools/render_operational_report.py now attaches numeric_provenance to numeric sections in the active report
        - tools/validate_number_provenance_v1.py now checks the required source_path/json_pointer/formula_id/input_hash/freshness_status fields
        - python tools/validate_number_provenance_v1.py: PASS
    - id: T005
      status: PASS
      evidence:
        - package.json now exposes the five top-level ops:* entrypoints
        - tools/validate_operator_entrypoints_v1.py added
        - python tools/validate_operator_entrypoints_v1.py: PASS
    - id: T006
      status: PASS
      evidence:
        - prompts/low_capability_report_renderer.md now forces DATA_MISSING — 하네스 업데이트 필요
        - spec/render/renderer_contract.yaml uses final_decision_packet_active.json and DATA_MISSING token
    - id: T010
      status: PASS
      evidence:
        - python tools/validate_formula_owner_coverage_v1.py: PASS
        - owner_coverage_pct=100.0
    - id: T011
      status: PASS
      evidence:
        - tools/validate_change_request_coverage_v1.py added
        - python tools/validate_change_request_coverage_v1.py: PASS
    - id: T012
      status: PASS
      evidence:
        - python tools/validate_golden_coverage_100.py: PASS
        - golden_coverage_ratio=1.0000
    - id: T013
      status: PASS
      evidence:
        - python tools/validate_output_field_owner_collision_v1.py: PASS
        - unresolved_writer_collision_count=0
    - id: T014
      status: PASS
      evidence:
        - tools/validate_formula_version_lifecycle_v1.py added
        - python tools/validate_formula_version_lifecycle_v1.py: PASS
    - id: T015
      status: PASS
      evidence:
        - tools/validate_adr_spec_links_v1.py added
        - python tools/validate_adr_spec_links_v1.py: PASS
    - id: T020
      status: PASS
      evidence:
        - tools/audit_gas_business_logic_v1.py now emits a full function inventory with allowed_responsibility tagging
        - Temp/gas_business_logic_audit_v1.json records function_inventory_coverage_pct=100.0
        - python tools/audit_gas_business_logic_v1.py --out Temp/gas_business_logic_audit_v1.json: PASS
    - id: T021
      status: PASS
      evidence:
        - python tools/audit_gas_business_logic_v1.py --out Temp/gas_business_logic_audit_v1.json: PASS (forbidden_function_count=0)
        - python tools/validate_gas_thin_adapter_v1.py: PASS (forbidden_gas_business_logic_count=0)
    - id: T022
      status: PASS
      evidence:
        - schemas/generated/gas_adapter_contract.schema.json added
        - python tools/validate_gas_call_arity.py: PASS
        - package.json validate-gas-call-arity script already wired
    - id: T023
      status: PASS
      evidence:
        - tools/build_data_freshness_sla_v1.py added
        - freshness_status is propagated from harness_context into the freshness SLA artifact
        - python tools/build_data_freshness_sla_v1.py: PASS
    - id: T024
      status: PASS
      evidence:
        - tools/validate_account_snapshot_contract_v1.py added
        - python tools/validate_account_snapshot_contract_v1.py: PASS
    - id: T025
      status: PASS
      evidence:
        - tools/gas_deployment_checklist_v1.py added as the operator-facing checklist wrapper
        - python tools/gas_deployment_checklist_v1.py --mode release: PASS
        - python tools/run_deployment_checklist_v1.py --mode release: PASS
    - id: T030
      status: PASS
      evidence:
        - prompts/low_capability_report_renderer.md and spec/render/renderer_contract.yaml point to final_decision_packet_active.json
        - python tools/validate_no_temp_runtime_read_v1.py: PASS
        - python tools/validate_renderer_no_calculation_v1.py: PASS
    - id: T031
      status: PASS
      evidence:
        - tools/validate_low_capability_response_contract_v3.py added
        - python tools/validate_low_capability_response_contract_v3.py: PASS
        - python tools/validate_renderer_section_order_v1.py: PASS
    - id: T032
      status: PASS
      evidence:
        - tools/validate_report_numerical_sync_v1.py added
        - python tools/validate_report_numerical_sync_v1.py: PASS
    - id: T033
      status: PASS
      evidence:
        - tools/build_llm_narrative_template_lock_v1.py run on Temp/operational_report.json
        - python tools/validate_prompt_formula_leak_v1.py: PASS
    - id: T034
      status: PASS
      evidence:
        - tools/validate_order_grammar_v1.py added
        - python tools/validate_order_grammar_v1.py: PASS
    - id: T040
      status: PASS
      evidence:
        - suggest/factor_rfc_template.yaml added
        - python tools/validate_factor_contract_v1.py: PASS
    - id: T041
      status: PASS
      evidence:
        - tools/build_prediction_lift_dashboard_v1.py added
        - python tools/build_prediction_lift_dashboard_v1.py: PASS
    - id: T042
      status: PASS
      evidence:
        - tools/build_anti_late_chase_v6.py added
        - python tools/build_anti_late_chase_v6.py: PASS
    - id: T043
      status: PASS
      evidence:
        - tools/build_smart_money_liquidity_composite_v4.py added
        - python tools/build_smart_money_liquidity_composite_v4.py: PASS
    - id: T044
      status: PASS
      evidence:
        - tools/build_fundamental_raw_evidence_v4.py added
        - python tools/build_fundamental_raw_evidence_v4.py: PASS
        - python tools/validate_imputed_data_exposure_v1.py: PASS
    - id: T045
      status: PASS
      evidence:
        - tools/build_sell_waterfall_engine_v3.py added
        - python tools/build_sell_waterfall_engine_v3.py: PASS
    - id: T046
      status: PASS
      evidence:
        - tools/build_performance_readiness_replay_bridge_v2.py added
        - python tools/build_performance_readiness_replay_bridge_v2.py: PASS
    - id: T050
      status: PASS
      evidence:
        - tools/clean_temp_artifacts_v1.py --apply archived release_gate_summary_v1/v2/v3.json
        - artifacts/archive/20260606/temp_cleanup_manifest_v1.json written with hashes
        - runtime consumers remain pointed at active artifacts only
    - id: T051
      status: PASS
      evidence:
        - python tools/validate_tool_thin_wrapper_v1.py: PASS
        - python tools/validate_architecture_boundaries_v2.py: PASS
        - python tools/run_release_dag_v1.py --mode release: PASS
        - tools/measure_yaml_gs_ps_coverage.py, tools/run_engine_audit_golden_cases_v1.py, and tools/run_integration_test_v1.py now route through src/quant_engine wrappers
    - id: T052
      status: PASS
      evidence:
        - AGENTS.md is reduced to the core operating constitution and read order
        - python tools/validate_agents_shrink_v1.py: PASS
    - id: T053
      status: PASS
      evidence:
        - tools/prepare_upload_zip.py now trims Temp noise to the active whitelist
        - python tools/validate_packaging_policy_v2.py --zip ..\data_feed.zip: PASS
        - python tools/validate_packaging_policy_v1.py --zip ..\data_feed.zip --policy spec/47_packaging_policy.yaml: PASS
    - id: T054
      status: PASS
      evidence:
        - spec/release/repository_entropy_budget.yaml added
        - tools/audit_repository_entropy_v2.py added
        - python tools/audit_repository_entropy_v2.py --root . --out Temp/repo_entropy_v2.json: PASS
    - id: T055
      status: PASS
      evidence:
        - python tools/validate_compact_bundle_equivalence_v1.py: PASS
