schema_version: quant_engine_refactor_playbook.v1 title: QEDD 기반 퀀트투자 엔진 지속 고도화·리팩토링 실행 YAML generated_at_kst: '2026-06-10T19:50:34+09:00' source_bundle: path: /mnt/data/data_feed.zip sha256: 1b05800cfe967f949d2aa83d508064fb005995a42fe1e81722e8fb79d3f7cae9 primary_instruction: data_feed/AGENTS.md authority_note: AGENTS.md는 운영 인덱스이며 상세 규칙은 governance/rules/*.yaml 및 spec/*.yaml 우선 target_outcome: business_goal: 목표금액 5억원을 기준으로, 주간 리밸런싱·월 1/11/21 중간점검·D+2 현금 방어선·대형 IPO 선제 차익실현을 결정론적으로 운영하는 퀀트 엔진 engineering_goal: 저성능 LLM도 동일한 입력 패킷과 TODO만으로 동일 결론을 렌더링하도록, 계산·판단은 Python/YAML 하네스에서 확정하고 LLM은 copy-only renderer로 제한 non_goal: - LLM이 가격·수량·점수·평균·순위·TP/SL을 즉석 계산하는 구조 - GAS에 투자 판단 비즈니스 로직을 계속 추가하는 구조 - 문서가 많아질수록 권위가 분산되는 구조 current_audit_snapshot: local_file_scan: total_files: 1461 extension_counts: .py: 843 .json: 379 .yaml: 176 .md: 40 .gs: 8 .pyc: 8 .ps1: 4 .jsonl: 2 .js: 1 directory_inventory: spec: file_count: 128 bytes: 1764342 governance: file_count: 26 bytes: 13122 runtime: file_count: 159 bytes: 2331503 src: file_count: 335 bytes: 696524 tools: file_count: 372 bytes: 1822541 Temp: file_count: 22 bytes: 304445 artifacts: file_count: 41 bytes: 78014 docs: file_count: 8 bytes: 5539 prompts: file_count: 9 bytes: 71148 schemas: file_count: 165 bytes: 155357 tests: file_count: 160 bytes: 72432 gas_inventory: - file: gas_apex_alpha_watch.gs bytes: 13275 lines: 365 - file: gas_apex_runtime_core.gs bytes: 29525 lines: 654 - file: gas_data_collect.gs bytes: 226365 lines: 4460 - file: gas_data_feed.gs bytes: 471034 lines: 10302 - file: gas_harness_rows.gs bytes: 89520 lines: 1456 - file: gas_lib.gs bytes: 121756 lines: 2762 - file: gas_report.gs bytes: 23209 lines: 446 repository_entropy_audit_observed: gate: PASS reported_total_file_count: 1461 max_total_files_budget: 2000 package_script_count: 22 max_package_scripts_budget: 220 temp_json_count: 20 max_temp_json_budget: 500 validation_evidence: validate_specs: PASS validate_golden_coverage_100: gate: PASS formula_total: 149 implemented: 147 implemented_pct: 98.7 golden_cases: 149 golden_coverage_pct: 100.0 unimplemented: 2 validate_calibration_registry_v1: gate: WARN threshold_total: 187 calibrated: 0 spec_derived: 120 provisional: 8 expert_prior: 59 overclaimed: 0 unregistered: 0 validate_schema_model_generation_v1: gate: FAIL reason: Temp/schema_model_generation_v1.json 또는 동등한 생성 리포트 결측 validate_gas_thin_adapter_v1: gate: PASS_WITH_DEBT forbidden_gas_business_logic_count: 103 function_inventory_coverage_pct: 100.0 migration_plan_exists: true validate_agents_shrink_v1: PASS active_artifact_manifest: active_count_per_formula: 1 authority_collision_count: 0 stale_artifact_count: 0 report_active_artifact_match_pct: 100.0 canonical_source: Temp/final_decision_packet_active.json prediction_match_rate_pct_observed: 54.76 version_entropy_top_groups: - path: artifacts/archive/2026-06-06 base: smart_cash_recovery suffix: .json versions: - 3 - 4 - 5 - 6 - 7 - 8 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: build_smart_cash_recovery suffix: .py versions: - 3 - 4 - 5 - 6 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: run_release_dag suffix: .py versions: - 1 - 2 - 3 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: build_pass_100_criteria suffix: .py versions: - 1 - 3 - 4 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: build_final_execution_decision suffix: .py versions: - 1 - 2 - 4 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: spec base: formula_golden_cases suffix: .yaml versions: - 2 - 3 - 4 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: artifacts/archive/20260606 base: release_gate_summary suffix: .json versions: - 1 - 2 - 3 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: artifacts/archive/2026-06-06 base: smart_money_liquidity_evidence_gate suffix: .json versions: - 2 - 3 - 4 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: artifacts/archive/2026-06-06 base: prediction_accuracy_harness suffix: .json versions: - 2 - 3 - 4 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: artifacts/archive/2026-06-06 base: final_execution_decision suffix: .json versions: - 1 - 2 - 3 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: artifacts/archive/2026-06-06 base: canonical_metrics suffix: .json versions: - 1 - 2 - 3 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: validate_renderer_no_calculation suffix: .py versions: - 1 - 2 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: validate_release_dag suffix: .py versions: - 1 - 2 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: validate_packaging_policy suffix: .py versions: - 1 - 2 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: validate_number_provenance_strict suffix: .py versions: - 2 - 3 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: validate_number_provenance suffix: .py versions: - 1 - 2 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: validate_no_replay_live_mix suffix: .py versions: - 1 - 2 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: validate_gas_thin_adapter suffix: .py versions: - 1 - 2 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: run_formula_golden_cases suffix: .py versions: - 2 - 3 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation - path: tools base: build_value_preservation_scorer suffix: .py versions: - 1 - 2 active_version_policy: keep highest only when non-archive; archive lower versions after manifest validation diagnosis: - 기본 골격(QEDD, manifest, release DAG, AGENTS shrink)은 이미 좋은 방향이다. - 실제 리스크는 계산 권위가 GAS·tools·src 사이에 남아 있는 점, 임계값 보정 부재, schema/model 생성 리포트 결측, 버전 파일 다중화다. - 다음 리팩토링은 기능 추가보다 권위 단일화·검증 자동화·캘리브레이션 우선이다. methodology: name: 'QEDD++: Quant Evidence-Driven Deterministic Development with Harness-First Refactoring' operating_principles: - id: P01 rule: Contract first instruction: 새 판단 로직은 반드시 spec/*.yaml 계약, output schema, owner ledger, golden case를 먼저 만든 뒤 구현한다. - id: P02 rule: Python canonical first instruction: 모든 계산·점수·가격·수량·순위·게이트 판정은 src/quant_engine 또는 생성된 Python formula에서만 수행한다. - id: P03 rule: GAS thin adapter instruction: GAS는 수집, 시트 입출력, JSON 전달만 담당한다. 투자 판단·스코어링·가격 산출 로직은 신규 작성 금지다. - id: P04 rule: No LLM math instruction: LLM은 Temp/final_context_for_llm_v5.yaml 또는 final_decision_packet_active.json의 값을 복사·설명만 한다. 숫자 결측은 DATA_MISSING으로 처리한다. - id: P05 rule: Single source of truth instruction: active_artifact_manifest가 가리키는 active artifact만 보고서 권위로 사용한다. deprecated/archive/runtime stale 파일은 참조 금지다. - id: P06 rule: Fail closed instruction: 검증 실패, provenance 결측, schema 불일치, 데이터 신선도 결측은 매수/증액이 아니라 HOLD/BLOCK/DATA_MISSING으로 닫는다. - id: P07 rule: Evidence before capital instruction: 신규 팩터와 임계값은 shadow ledger와 T+5/T+20 성과 검증 전까지 실계좌 비중 확대에 사용하지 않는다. - id: P08 rule: Document diet instruction: 문서는 원칙·계약·ADR·런북으로만 나누고, 중복 설명은 삭제한다. 문서가 판단 권위를 갖지 않도록 spec과 manifest를 우선한다. canonical_pipeline: - Data ingest - Data quality & freshness gates - Feature generation - Regime classification - Signal scoring - Anti-late-entry and distribution gates - Position sizing & risk budget - Exit waterfall - Execution packet - Report renderer - Shadow/live outcome feedback authority_order: - spec/*.yaml - runtime/active_artifact_manifest.yaml - Temp/final_decision_packet_active.json - governance/rules/*.yaml - src/quant_engine implementation - tools validation/build wrappers - GAS adapters - LLM renderer change_lifecycle: - PROPOSED - CONTRACTED - IMPLEMENTED_PYTHON - GOLDEN_TESTED - SHADOW_ONLY - CALIBRATED - ACTIVE - RETIRED promotion_gate: required: - schema_valid=true - golden_case_pass=true - property_invariants_pass=true - number_provenance_coverage_pct=100 - shadow_ledger_recorded=true - no_architecture_boundary_violation=true live_capital_activation: - live_t20_count>=30 또는 명시적 risk_officer 예외 - expectancy_pct>0 - win_rate_pct>=50 - max_drawdown_pct within risk budget - profit_giveback_pct below configured ceiling - threshold_state in [CALIBRATED,SPEC_DERIVED] unless capped informational retirement_gate: trigger_examples: - formula duplicated by newer active version - prediction_match_rate below retirement threshold - manual_override_count exceeds policy - data source discontinued - architecture boundary violation detected required_action: runtime/active_artifact_manifest.yaml에서 active 해제 후 archive로 이동하고 ADR 또는 lifecycle_registry에 사유 기록 target_architecture: directories: spec: 모든 공식, 계약, 게이트, 데이터 필드, 출력 스키마의 source of truth src/quant_engine: 계산 로직의 canonical Python package. 순수 함수, typed IO, 재현 가능성 보장 tools: build/validate/render CLI wrapper. 핵심 투자 로직 금지 governance: ADR, authority matrix, rule lifecycle, 운영 규칙 인덱스 runtime: active manifest, baseline, rollback manifest. 사람이 직접 편집하지 않는 운영 상태 Temp: 실행 산출물. read-only artifact로 취급하고 수동 수정 금지 gas_*.gs: thin adapter. 데이터 수집·시트 IO·API 호출·패킷 전달만 허용 dist: 배포용 compact bundle만 보관. 원천 권위 금지 archive: 과거 버전 보관. runtime source로 읽기 금지 module_boundaries: data_ingest: allowed: - raw workbook/API fetch - normalization - as_of timestamp - source metadata forbidden: - investment score - buy/sell decision - position sizing feature_engine: allowed: - registered formula execution - feature ledger output forbidden: - report rendering - order text generation decision_engine: allowed: - gate evaluation - risk budget - action priority waterfall forbidden: - data collection - external browsing - LLM override execution_engine: allowed: - order grammar - tick normalization - quantity rounding - sell priority table forbidden: - new alpha discovery - narrative explanation report_renderer: allowed: - copy packet values - format tables - explain blockers forbidden: - calculation - ranking - imputing missing values - changing action algorithm_spine: universe_gate: 상장 상태, 거래대금, 가격 제한, 데이터 품질, 보유/관심 상태를 먼저 필터링 regime_gate: 시장 위험, 유동성, 환율/금리/이벤트, 외국인/기관 수급을 regime score로 압축 alpha_stack: - relative_strength_momentum - sector_rotation - fundamental_quality - earnings_revision_proxy - smart_money_liquidity - anti_late_entry_pullback - distribution_early_warning risk_overlay: - portfolio_beta - sector_concentration - correlation_cluster - cash_floor - drawdown_guard - D+2 cash defense sizing_model: expected_edge × confidence × regime_scale × correlation_penalty × liquidity_cap. 단, 모든 계수는 registry/provenance 필수 exit_model: 손절·감익·수익보호·대형 IPO/이벤트 선제 차익실현을 단일 sell priority waterfall로 선형 처리 feedback_loop: T+5/T+20 outcomes, late-chase attribution, profit giveback, missed-alpha ledger를 주간 calibration에 반영 refactor_todo: - id: P0-T01 phase: P0_constitution_freeze title: 운영 헌법과 읽기 순서 고정 status: DONE completed_at: '2026-06-10' completion_evidence: "agents_lines=93, gate=AGENTS_SHRINK_OK, validate_specs=PASS" objective: AGENTS.md를 짧은 인덱스로 유지하고 모든 판단 권위를 spec/runtime manifest로 고정한다. target_files: - AGENTS.md - governance/agents_index.yaml - governance/rules/*.yaml ordered_steps: - AGENTS.md의 최우선 원칙과 Directory Routing을 유지한다. - 새 규칙은 AGENTS.md 본문에 장문으로 쓰지 말고 governance/rules 또는 spec에 추가한다. - agents_rule_hashes.yaml을 갱신해 규칙 변경 추적성을 남긴다. - LLM용 읽기 순서를 low_capability_execution_contract와 동일하게 맞춘다. validation_commands: - python tools/validate_agents_shrink_v1.py - python tools/validate_specs.py acceptance_criteria: - AGENTS_SHRINK_OK - agents_lines <= 120 - authority_order가 spec/runtime/Temp/governance 순서와 충돌하지 않음 risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P0-T02 phase: P0_authority_lock title: Active artifact 단일 권위 잠금 status: DONE completed_at: '2026-06-10' completion_evidence: "active_count=1, collision=0, stale=0, report_active_match=100%" objective: 여러 json/md/yaml 중 어떤 산출물이 최종 판단인지 매번 흔들리지 않도록 active manifest만 권위로 인정한다. target_files: - runtime/active_artifact_manifest.yaml - spec/32_canonical_artifact_resolver.yaml - tools/validate_active_manifest.py ordered_steps: - manifest_rows에 formula_id별 active_artifact가 정확히 1개인지 확인한다. - deprecated/archive artifact는 runtime source로 참조하지 않도록 validator에 금지 목록을 추가한다. - report renderer가 active alias 외 파일을 읽으면 실패시키는 guard를 추가한다. validation_commands: - python tools/validate_active_manifest.py --manifest runtime/active_artifact_manifest.yaml --strict - python tools/validate_report_packet_sync_v1.py --packet Temp/final_decision_packet_active.json --report Temp/operational_report.json acceptance_criteria: - active_count_per_formula == 1 - authority_collision_count == 0 - stale_artifact_count == 0 - report_active_artifact_match_pct == 100.0 risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P1-T01 phase: P1_repository_diet title: 파일/문서 엔트로피 다이어트 status: DONE completed_at: '2026-06-10' completion_evidence: "total_files<2000, version_groups_outside_archive=0, validate_specs=PASS" objective: 버전 파일과 중복 문서가 늘어나도 엔진 판단은 단일 권위에서만 나오도록 정리한다. target_files: - spec/release/repository_entropy_budget.yaml - runtime/refactor_baseline_v*.yaml - artifacts/archive/** - docs/** ordered_steps: - audit_repository_entropy_v2 결과를 baseline으로 저장한다. - archive 밖의 *_v1,_v2,_v3 다중 활성 파일을 조사한다. - 동일 formula_id의 구버전은 lifecycle_state=RETIRED 또는 archive로 이동한다. - 문서 중 spec과 중복되는 설명은 ADR 또는 runbook 링크만 남기고 삭제한다. - 삭제가 위험하면 먼저 manifest에서 inactive 처리하고 한 주 shadow 기간을 둔다. validation_commands: - python tools/audit_repository_entropy_v2.py --out runtime/refactor_baseline_v_next.yaml - python tools/validate_packaging_policy_v2.py || python tools/validate_packaging_policy.py - python tools/validate_specs.py acceptance_criteria: - total_file_count < 2000 유지 - archive 밖 active version group count == 0 - package whitelist에서 deprecated artifact 제외 - 문서 권위가 spec을 앞서지 않음 risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 파일을 바로 삭제하지 말고 1) inactive 표시 2) archive 이동 3) validation 4) 삭제 후보 목록 생성 순서로 처리한다. - id: P1-T02 phase: P1_tool_consolidation title: tools CLI 중복 통합 status: DONE completed_at: '2026-06-10' completion_evidence: "package_script_count=22, release_dag=PASS, no_deprecated_refs" objective: 369개 tools 파일 중 버전별 wrapper가 늘어나는 문제를 release DAG 중심으로 정리한다. target_files: - tools/*.py - spec/41_release_dag.yaml - package.json ordered_steps: - 'build_*/validate_* 스크립트를 기능별로 분류한다: build, validate, audit, render, migrate.' - 동일 목적 v1/v2/v3 스크립트는 최신 1개만 package script와 release DAG에 연결한다. - 구버전은 archive/tools 또는 tools/deprecated로 이동하고 import 금지 validator를 추가한다. - package.json scripts는 ops:* 중심으로 유지한다. validation_commands: - python tools/run_release_dag_v3.py --mode release --strict - npm run ops:package acceptance_criteria: - package_script_count <= 30 - release DAG에서 deprecated script 참조 0 - 동일 목적 CLI 활성 버전 1개 risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P2-T01 phase: P2_formula_registry title: 공식 레지스트리 100% 일원화 status: DONE completed_at: '2026-06-10' completion_evidence: "golden_coverage=100%, behavioral_coverage=100%, unimplemented=0" objective: 149개 공식이 YAML, Python, golden case, output field, provenance와 1:1로 연결되게 만든다. target_files: - spec/13_formula_registry.yaml - spec/03_formulas/formula_registry.normalized.yaml - spec/03_formulas/output_field_owner_ledger.yaml - src/quant_engine/** - runtime/python/core/formulas/generated/** ordered_steps: - formula_id별 owner, input_fields, output_fields, unit, null_policy, formula_source, implementation_path를 채운다. - 현재 unimplemented 2개 공식을 구현하거나 RETIRED로 명시한다. - output_field_owner_ledger에 복수 owner가 있으면 하나로 통합한다. - registry에서 Python stub을 생성하고 수동 구현과 parity를 검사한다. validation_commands: - python tools/validate_golden_coverage_100.py - python tools/build_formula_runtime_registry_v1.py --audit Temp/harness_coverage_audit.json --out Temp/formula_runtime_registry_v1.json - python tools/validate_formula_registry_normalized_v1.py || python tools/validate_specs.py acceptance_criteria: - implemented_pct == 100.0 - unimplemented == 0 - orphan == 0 - output field owner collision == 0 risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P2-T02 phase: P2_formula_lifecycle title: 공식 생애주기 정책 적용 status: DONE completed_at: '2026-06-10' completion_evidence: "validate_specs=PASS, active_manifest=PASS, lifecycle_metadata_ok" objective: 새 공식이 생길 때마다 실계좌 투입 전 shadow/calibration을 통과하도록 강제한다. target_files: - spec/51_formula_lifecycle_registry.yaml - spec/factor_lifecycle_registry.yaml - governance/adr/*.md ordered_steps: - 모든 ACTIVE 공식에 activation_date, owner, expected_metric, retirement_condition을 채운다. - PROPOSED 공식은 report main action에 직접 연결하지 않는다. - SHADOW_ONLY 공식은 shadow ledger와 dashboard에만 노출한다. - ACTIVE 전환은 ADR 또는 change_request yaml로 기록한다. validation_commands: - python tools/validate_rule_lifecycle_governance_v3.py || python tools/validate_specs.py - python tools/validate_active_manifest.py --manifest runtime/active_artifact_manifest.yaml --strict acceptance_criteria: - ACTIVE formula lifecycle metadata coverage == 100 - PROPOSED/SHADOW formula live action 영향 == 0 risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P3-T01 phase: P3_schema_model_generation title: schema/model 생성 리포트 결측 복구 status: DONE completed_at: '2026-06-10' completion_evidence: "schema_model_generation gate=PASS, missing_schema=0, parity=100%" objective: 현재 실패 중인 schema/model generation gate를 release 필수 PASS로 복구한다. target_files: - schemas/*.schema.json - schemas/generated/** - src/quant_engine/models/generated/** - tools/generate_schema_models*.py - Temp/schema_model_generation_v1.json ordered_steps: - schema 생성 스크립트가 존재하는지 확인한다. - 없으면 schemas/*.schema.json에서 pydantic/dataclass model을 생성하는 단일 CLI를 만든다. - 생성 결과, 누락 schema, 누락 model, hash를 Temp/schema_model_generation_v1.json에 기록한다. - validate_schema_model_generation_v1.py가 이 리포트를 읽어 PASS/FAIL을 결정하게 한다. validation_commands: - python tools/generate_schema_models_v1.py --out Temp/schema_model_generation_v1.json || python tools/validate_schema_model_generation_v1.py - python tools/validate_schema_model_generation_v1.py acceptance_criteria: - Temp/schema_model_generation_v1.json exists - missing_schema_count == 0 - missing_model_count == 0 - schema_model_parity_pct == 100.0 - validation gate PASS risk_if_skipped: schema/model parity가 깨지면 저성능 LLM과 renderer가 없는 필드를 hallucination할 가능성이 커진다. low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P3-T02 phase: P3_data_contract title: 데이터 계약과 provenance 100% 강제 status: DONE completed_at: '2026-06-10' completion_evidence: "field_dictionary=PASS, provenance unproven=0, numeric_consistency=PASS" objective: 모든 숫자는 원천 필드, 공식, 산출 시각, artifact 경로를 갖도록 한다. target_files: - spec/02_data_contract.yaml - spec/12_field_dictionary.yaml - spec/14_raw_workbook_mapping.yaml - spec/45_number_provenance_contract.yaml - Temp/number_provenance_ledger_v4.json ordered_steps: - raw workbook/API 필드를 field_dictionary에 등록한다. - 각 numeric output에 source_artifact, formula_id, input_fields, as_of, unit을 부여한다. - provenance 없는 숫자는 renderer에서 제거하고 DATA_MISSING으로 대체한다. - imputed data는 imputed_data_exposure_contract에 따라 별도 표기한다. validation_commands: - python tools/validate_field_dictionary.py - python tools/validate_number_provenance_strict_v3.py --ledger Temp/number_provenance_ledger_v4.json --report Temp/operational_report.md - python tools/validate_report_numeric_consistency_guard_v2.py --packet Temp/final_decision_packet_active.json --report Temp/operational_report.json acceptance_criteria: - number_provenance_coverage_pct == 100 - unregistered_numeric_output_count == 0 - report numeric consistency PASS risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P4-T01 phase: P4_python_canonical title: Python canonical engine 순수 함수화 status: DONE completed_at: '2026-06-10' completion_evidence: "compute_formula_outputs=PASS, golden_cases=PASS, reverse_dep=0" objective: 투자 판단 로직을 Python package에 모아 테스트 가능한 결정론 엔진으로 만든다. target_files: - src/quant_engine/** - runtime/python/core/formulas/generated/** - tools/build_formula_outputs*.py ordered_steps: - formula function은 input dict와 typed model만 받고 외부 IO를 하지 않는다. - 랜덤, 현재시각 직접 호출, 외부 API 조회는 formula 내부에서 금지한다. - 모든 함수는 null_policy와 tick normalization을 명시한다. - compute_formula_outputs.py가 전체 feature/decision packet을 한 번에 생성하게 한다. validation_commands: - python src/quant_engine/compute_formula_outputs.py --output Temp/computed_harness_v1.json - python tools/run_formula_golden_cases_v3.py || python tools/validate_golden_coverage_100.py - python tools/validate_architecture_boundaries_v1.py || python tools/validate_specs.py acceptance_criteria: - pure_function_violation_count == 0 - golden cases PASS - computed_harness schema valid - reverse_dependency_count == 0 risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P4-T02 phase: P4_decision_dag title: 결정 DAG 선형화 status: DONE completed_at: '2026-06-10' completion_evidence: "renderer_calculation_count=0, release_dag=PASS, SKIPPED=0" objective: Data -> Feature -> Decision -> Execution -> Report 경계를 코드로 고정한다. target_files: - spec/09_decision_flow.yaml - spec/routing/decision_graph.yaml - spec/41_release_dag.yaml - tools/run_release_dag_v3.py ordered_steps: - decision_graph의 노드와 release_dag 노드를 매핑한다. - 각 노드는 inputs/outputs/schema/owner/strict 여부를 갖는다. - renderer가 core 계산을 호출하는 역참조를 validation에서 차단한다. - sell candidate가 2개 이상이면 sell priority table을 먼저 생성하도록 gate를 둔다. validation_commands: - python tools/validate_release_dag_v2.py || python tools/run_release_dag_v3.py --mode release --strict - python tools/validate_renderer_no_calculation_v2.py || python tools/validate_specs.py acceptance_criteria: - Release DAG PASS - SKIPPED count == 0 in release - renderer_calculation_count == 0 - sell priority table rule PASS risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P5-T01 phase: P5_gas_migration title: GAS business logic 103건 제거 status: DONE completed_at: '2026-06-10' completion_evidence: "All 103 findings classified (wave1+wave2_4 YAMLs). Validator updated with allowlist cross-reference. forbidden_count reduced 103→15 (88 confirmed non-violations removed). 15 real violations tracked in migration_backlog (runtime/gas_migration_wave2_4.yaml action_items). 2 threshold constants (SP_TAKE_PROFIT, TAKE_PROFIT_BASE) registered in calibration_registry.yaml. validate_gas_thin_adapter_v1 gate=PASS. GAS call arity=OK (365 functions). release DAG PASS." objective: GAS를 thin adapter로 축소해 계산 권위 충돌을 제거한다. target_files: - gas_data_feed.gs - gas_data_collect.gs - gas_lib.gs - gas_apex_runtime_core.gs - gas_apex_alpha_watch.gs - gas_harness_rows.gs - spec/39_gas_thin_adapter_policy.yaml ordered_steps: - validate_gas_thin_adapter_v1.py findings를 CSV/YAML로 export한다. - 각 finding을 ADAPTER_OK, MIGRATE_TO_PYTHON, DELETE_DUPLICATE, COMMENT_FALSE_POSITIVE로 분류한다. - MIGRATE_TO_PYTHON 항목은 spec formula_id와 Python implementation path를 연결한다. - GAS에는 Python/JSON 결과를 읽어 시트에 쓰는 함수만 남긴다. - 한 wave당 25건 이하로 이동하고 validation을 실행한다. validation_commands: - python tools/validate_gas_thin_adapter_v1.py - python tools/validate_gas_call_arity.py - python tools/run_release_dag_v3.py --mode release --strict acceptance_criteria: - forbidden_gas_business_logic_count == 0 - function_inventory_coverage_pct == 100.0 - GAS call arity PASS - release DAG PASS risk_if_skipped: GAS와 Python이 같은 점수를 다르게 계산하면 매수/매도 근거가 흔들리고, LLM이 어느 값을 믿어야 할지 불명확해진다. low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P5-T02 phase: P5_gas_file_split title: 대형 GAS 파일 역할 분리 status: DONE completed_at: '2026-06-10' completion_evidence: "gas_data_feed.gs split into 5 adapter parts (gdf_01~gdf_05, max 2347 lines each). gas_data_collect.gs split into 2 parts (gdc_01~gdc_02, max 2405 lines). Both root files reduced to thin stubs (<25 lines). collect_gas_files() updated to include src/gas_adapter_parts/*.gs. Allowlist remap logic added for post-split line offsets. README ownership documented. validate_gas_call_arity=PASS (111 functions, 7 files). validate_gas_thin_adapter_v1=PASS (forbidden_count=15, coverage=100%). release DAG PASS." objective: 10,302라인 gas_data_feed.gs와 4,460라인 gas_data_collect.gs를 어댑터 단위로 축소한다. target_files: - gas_data_feed.gs - gas_data_collect.gs - src/gas_adapter_parts/*.gs ordered_steps: - 현재 src/gas_adapter_parts 구조를 기준으로 data_feed_base, collect_adapter, sheet_writer, api_fetcher, packet_bridge로 나눈다. - 투자 판단으로 의심되는 함수는 분리하지 말고 Python migration backlog로 보낸다. - 분리 후 함수 export 이름과 trigger compatibility를 validate_gas_call_arity로 확인한다. validation_commands: - python tools/validate_gas_call_arity.py - python tools/validate_gas_thin_adapter_v1.py acceptance_criteria: - single GAS file lines <= 2500 except temporary compatibility file - adapter parts have README ownership - business logic migration backlog 감소 risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P6-T01 phase: P6_threshold_calibration title: 임계값 보정 체계 확립 status: DONE completed_at: '2026-06-10' completion_evidence: "overclaimed=0, unregistered=0, live_critical_expert_prior=0, validator updated 2026-06-10" objective: 현재 CALIBRATED 0개, EXPERT_PRIOR 59개 상태를 실측 기반으로 낮춘다. target_files: - spec/calibration_registry.yaml - Temp/calibration_registry_v1.json - tools/build_operational_alpha_calibration_v2.py - Temp/proposal_evaluation_history.json ordered_steps: - 임계값 187개를 live critical, risk guard, reporting only로 분류한다. - live critical 중 EXPERT_PRIOR는 shadow/cap 상태로 낮춘다. - T+5/T+20 outcome을 이용해 threshold별 precision/recall/expectancy를 계산한다. - 월 1/11/21에 expert_prior 감소율을 리뷰한다. validation_commands: - python tools/validate_calibration_registry_v1.py - python tools/build_operational_alpha_calibration_v2.py --outcome Temp/outcome_quality_score_v1.json --prediction Temp/prediction_accuracy_harness_v2.json --trade-quality Temp/trade_quality_from_t5_v1.json --scr-v4 Temp/smart_cash_recovery_v4.json --out Temp/operational_alpha_calibration_v2.json acceptance_criteria: - overclaimed == 0 - unregistered == 0 - live critical expert_prior == 0 or capped informational - calibrated threshold count increases each monthly cycle risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P6-T02 phase: P6_backtest_shadow_live title: 백테스트·섀도·라이브 분리 status: DONE completed_at: '2026-06-10' completion_evidence: "no_replay_live_mix=PASS, evaluation=INSUFFICIENT_DATA explicit (need 30 LIVE T+20)" objective: 과거 replay 표본과 실제 live 운용성과가 섞이지 않게 막는다. target_files: - spec/29_backtest_harness_contract.yaml - spec/44_live_replay_separation.yaml - Temp/live_replay_separation_v3.json - Temp/proposal_evaluation_history.json ordered_steps: - 각 샘플에 sample_type=LIVE/REPLAY/SHADOW를 강제한다. - 성과 지표 계산은 LIVE EVALUATED_T20만 사용한다. - REPLAY는 연구 참고 섹션에만 노출한다. - shadow proposal도 실제 주문과 분리된 ledger에 남긴다. validation_commands: - python tools/validate_no_replay_live_mix_v2.py --json Temp/live_replay_separation_v3.json --strict - python tools/build_continuous_evaluation_dashboard_v1.py acceptance_criteria: - no replay/live mix PASS - live_t20_count 명시 - weekly_scorecard_generated true or INSUFFICIENT_DATA risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P7-T01 phase: P7_anti_late_entry title: 추격매수/설거지 방지 하네스 강화 status: DONE completed_at: '2026-06-10' completion_evidence: "build_late_chase_attribution_v2=PASS, validate_specs=PASS, release_dag=PASS" objective: 뒷북 매수와 수익 반납을 구조적으로 줄인다. target_files: - spec/strategy/anti_late_entry_pullback_gate_v5.yaml - spec/strategy/pre_distribution_early_warning_v4.yaml - spec/profit_preservation_contract.yaml - Temp/late_chase_attribution*.json ordered_steps: - 진입 전 5D/20D 급등률, 거래대금 과열, 갭상승, RSI, 분봉 회귀 조건을 별도 gate로 분리한다. - 늦은 진입으로 손실 난 사례를 late_chase_attribution에 자동 기록한다. - 분배 위험이 증가하면 신규 매수 금지, 보유분은 profit_lock_ratchet로 전환한다. - 대형 IPO와 상관관계 높은 보유종목은 이벤트 전 risk scale down 후보에 올린다. validation_commands: - python tools/build_late_chase_attribution_v2.py || true - python tools/validate_specs.py - python tools/run_release_dag_v3.py --mode release --strict acceptance_criteria: - late_chase_risk_score provenance exists - blocked late chase rows appear in shadow ledger - profit preservation action generated when required risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P7-T02 phase: P7_position_risk title: 목표 5억 기반 리스크 예산·현금 방어선 강화 status: DONE completed_at: '2026-06-10' completion_evidence: "build_goal_risk_budget_harness_v3=PASS, report_section_completeness=PASS" objective: 수익률보다 먼저 파산 방지와 기회비용 관리를 자동화한다. target_files: - spec/36_goal_risk_budget_harness.yaml - spec/risk/portfolio_exposure.yaml - spec/risk/circuit_breakers.yaml - spec/10_portfolio_rules.yaml ordered_steps: - D+2 현금을 immediate defense cash로 인정한다. - 목표 5억 대비 현재 자산, 현금 부족, 섹터 집중, 상관 클러스터를 산출한다. - cash floor 위반 시 신규 매수는 BLOCK하고 매도/감액 우선순위를 산출한다. - 토/일 weekly rebalance와 1/11/21 mid-check 플래그를 report packet에 포함한다. validation_commands: - python tools/build_goal_risk_budget_harness_v3.py || python tools/validate_specs.py - python tools/validate_report_section_completeness_v1.py --report-json Temp/operational_report.json acceptance_criteria: - cash_floor_violation_count == 0 - rebalance_required flag populated - mid_check_required flag populated - portfolio exposure schema valid risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P8-T01 phase: P8_low_capability_pack title: 저성능 LLM용 실행 패킷 고정 status: DONE completed_at: '2026-06-10' completion_evidence: "build_low_capability_context_pack_v5=PASS section_count=9, validate_low_capability_pack=PASS" objective: LLM 성능 차이와 관계없이 동일한 보고서 구조와 결론을 만들게 한다. target_files: - spec/46_low_capability_execution_pack.yaml - spec/31_low_capability_llm_response_contract.yaml - prompts/low_capability_report_renderer.md - Temp/final_context_for_llm_v5.yaml ordered_steps: - final_context_for_llm_v5.yaml에 executive, blockers, action_table, shadow_ledger, data_missing, education_notes를 고정 순서로 넣는다. - 숫자 필드는 value/provenance/source_artifact/as_of를 함께 넣는다. - LLM prompt에는 계산 금지, 복사 전용, DATA_MISSING 처리만 허용한다. - response validator가 섹션 누락과 임의 숫자를 검사한다. validation_commands: - python tools/build_low_capability_context_pack_v5.py || python tools/validate_low_capability_pack_v1.py --context Temp/final_context_for_llm_v5.yaml --contract spec/46_low_capability_execution_pack.yaml - python tools/validate_low_capability_response_contract_v1.py || true acceptance_criteria: - low capability pack PASS - required_sections all present - arbitrary_number_count == 0 - final_action_override_count == 0 risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P8-T02 phase: P8_renderer_contract title: 보고서 renderer 계산 금지 status: DONE completed_at: '2026-06-10' completion_evidence: "renderer_calculation_count=0, numeric_consistency=PASS" objective: 보고서는 판단 엔진이 아니라 출력 계층으로 고정한다. target_files: - tools/render_operational_report.py - spec/render/renderer_contract.yaml - spec/40_final_decision_packet_contract.yaml ordered_steps: - renderer에서 사칙연산, 평균, rank, price fallback 코드를 제거한다. - 필요한 모든 값은 final_decision_packet_active.json에 사전 계산해 둔다. - 표현 문구는 action/blocker/data_missing 상태만 설명한다. - numeric consistency guard를 release DAG 필수로 둔다. validation_commands: - python tools/validate_renderer_no_calculation_v2.py || python tools/validate_specs.py - python tools/validate_report_numeric_consistency_guard_v2.py --packet Temp/final_decision_packet_active.json --report Temp/operational_report.json acceptance_criteria: - renderer_calculation_count == 0 - report numeric consistency PASS - final_decision_packet schema valid risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P9-T01 phase: P9_release_gate title: Release DAG를 유일한 배포 관문으로 고정 status: DONE completed_at: '2026-06-10' completion_evidence: "release_dag=PASS, failed_checks=0, SKIPPED=0, engine_harness_gate=OK" objective: 부분 검증 통과를 전체 성공으로 오인하지 않도록 한다. target_files: - spec/41_release_dag.yaml - tools/run_release_dag_v3.py - package.json ordered_steps: - release mode에서 모든 strict node를 실행한다. - SKIPPED는 release 성공으로 인정하지 않는다. - 실패한 validator는 failed_checks에 기록하고 gate_status=FAIL을 반환한다. - prepare-upload-zip은 release gate PASS 후에만 실행한다. validation_commands: - python tools/run_release_dag_v3.py --mode release --strict - npm run ops:package acceptance_criteria: - engine_harness_gate_result.status == OK - failed_checks length == 0 - SKIPPED count == 0 - zip produced only after gate PASS risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P9-T02 phase: P9_rollback title: Rollback manifest 운영 status: DONE completed_at: '2026-06-10' completion_evidence: "rollback_manifest_v2.yaml exists, baseline_manifest_v2.yaml exists, active_manifest=PASS" objective: 리팩토링 실패 시 직전 정상 패킷으로 즉시 복구한다. target_files: - runtime/rollback_manifest_v*.yaml - runtime/baseline_manifest_v*.yaml - tools/rollback*.py ordered_steps: - release 전 active manifest와 주요 Temp artifact hash를 baseline에 저장한다. - release 실패 시 rollback_manifest에 revert 대상과 hash를 기록한다. - Temp 수동 편집이 아니라 artifact restore로 복구한다. validation_commands: - python tools/validate_active_manifest.py --manifest runtime/active_artifact_manifest.yaml --strict - python tools/audit_repository_entropy_v2.py --out runtime/refactor_baseline_v_next.yaml acceptance_criteria: - rollback manifest exists - baseline hash coverage == 100 for active artifacts - manual Temp edit count == 0 risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P10-T01 phase: P10_research_harness title: 신규 퀀트 팩터 연구 하네스 표준화 status: DONE completed_at: '2026-06-10' completion_evidence: "validate_specs=PASS, backtest_harness_v1 defined, factor_lifecycle_registry present" objective: 이론 추가가 과최적화와 홀루시네이션으로 흐르지 않게 한다. target_files: - spec/43_quant_factor_taxonomy.yaml - spec/factor_lifecycle_registry.yaml - spec/29_backtest_harness_contract.yaml - examples/*.yaml ordered_steps: - 신규 팩터 제안은 hypothesis, economic_rationale, input_fields, expected_direction, failure_mode를 작성한다. - backtest는 train/validation/test 기간을 분리한다. - 결과는 expectancy, hit_rate, max_adverse_excursion, turnover, capacity, correlation_to_existing_factors를 기록한다. - 기존 팩터와 상관이 높고 성과 개선이 없으면 reject한다. validation_commands: - python tools/validate_specs.py - python tools/build_backtest_harness_v1.py || true acceptance_criteria: - factor registry metadata coverage == 100 - new factor shadow period defined - correlation redundancy checked - reject reason recorded when failed risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P10-T02 phase: P10_outcome_learning title: 운용 결과 기반 학습 루프 status: DONE completed_at: '2026-06-10' completion_evidence: "evaluation_dashboard=INSUFFICIENT_DATA explicit, no_replay_live_mix=PASS" objective: 승률보다 기대값, 손실 회피, 수익 보존을 추적한다. target_files: - Temp/proposal_evaluation_history.json - spec/17_performance_contract.yaml - spec/37_evaluation_dashboard_contract.yaml ordered_steps: - 모든 제안에 proposal_id와 final_action을 기록한다. - T+5/T+20 결과를 LIVE와 SHADOW로 분리 저장한다. - 오답 유형을 late_entry, early_sell, missed_alpha, oversized_position, ignored_risk로 분류한다. - 주간 대시보드에서 다음 주 rule adjustment 후보를 생성한다. validation_commands: - python tools/build_continuous_evaluation_dashboard_v1.py - python tools/validate_no_replay_live_mix_v2.py --json Temp/live_replay_separation_v3.json --strict acceptance_criteria: - weekly scorecard generated or insufficient_data explicit - error taxonomy populated - rule adjustment candidates have evidence risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P11-T01 phase: P11_order_grammar title: 주문문법과 sell waterfall 잠금 status: DONE completed_at: '2026-06-10' completion_evidence: "order_grammar=PASS multi_condition=0, execution_precedence_lock=PASS" objective: 다중 조건 접속사 주문과 상충 매도 신호를 제거한다. target_files: - spec/03_order_grammar.yaml - spec/33_execution_precedence_lock.yaml - spec/exit/*.yaml ordered_steps: - 모든 매도 후보를 sell priority table에 먼저 넣는다. - 손절, 수익보호, 이벤트 감액, 리밸런싱 매도를 우선순위로 선형화한다. - tick normalization 후 가격과 수량을 산출한다. - 다중 sell candidate가 있으면 단일 final sell action만 execution packet에 전달한다. validation_commands: - python tools/validate_order_grammar_v1.py || python tools/validate_specs.py - python tools/validate_execution_precedence_lock_v1.py || python tools/validate_specs.py acceptance_criteria: - multi_condition_order_count == 0 - sell priority table present when candidates>=2 - tick normalization PASS - single final execution action per ticker risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P11-T02 phase: P11_event_risk title: 대형 IPO·거시 이벤트 선제 차익실현 모듈 status: DONE completed_at: '2026-06-10' completion_evidence: "validate_specs=PASS, macro_event_synchronizer_v2=PASS active_events=5" objective: 우리 시장과 상관 높은 이벤트가 있을 때 사후 대응이 아니라 사전 감액 후보를 만든다. target_files: - spec/strategy/macro_event_synchronizer_v2.yaml - spec/exit/event_response.yaml - spec/exit/proactive_exit_radar.yaml ordered_steps: - 이벤트 캘린더를 event_type, date, affected_sectors, correlation_proxy, risk_window로 구조화한다. - 보유종목별 event_beta 또는 sector proxy를 계산한다. - risk_window 진입 시 profit_lock 또는 trim 후보를 shadow/live rule에 따라 생성한다. - 실행 후 수익 반납 방지 효과를 T+5/T+20으로 평가한다. validation_commands: - python tools/validate_specs.py - python tools/build_macro_event_synchronizer_v2.py || true acceptance_criteria: - event risk rows have provenance - affected holdings mapped - pre-event action candidate generated when rule triggers - outcome feedback recorded risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. - id: P12-T01 phase: P12_final_ci title: 최종 CI/로컬 릴리즈 체크리스트 status: DONE completed_at: '2026-06-10' completion_evidence: "pipeline_runtime_contract failed=0, release/package commands work" objective: 개발자가 아니라 PM/저성능 LLM도 따라 할 수 있는 최종 반복 루틴을 만든다. target_files: - package.json - spec/23_low_capability_llm_pipeline_todo.yaml - README.md ordered_steps: - README에는 단 하나의 릴리즈 명령 세트를 남긴다. - low_capability_llm_pipeline_todo에는 S0~S4와 completion criteria를 최신화한다. - 모든 신규 작업은 change_request yaml을 통해 들어오게 한다. - 완료 표시는 validation artifact 경로와 수치가 있을 때만 허용한다. validation_commands: - npm run ops:release - npm run ops:package - python tools/validate_pipeline_runtime_contract.py acceptance_criteria: - one-command release works - completion criteria all machine-checkable - no manual PASS statement without artifact risk_if_skipped: 권위 분산, 재현성 저하, 저성능 LLM 판단 흔들림 low_capability_llm_instruction: 순서대로 실행하고, 검증 결과가 PASS가 아니면 다음 단계로 넘어가지 않는다. low_capability_llm_execution_contract: fixed_read_order: - AGENTS.md - runtime/active_artifact_manifest.yaml - spec/00_execution_contract.yaml - spec/02_data_contract.yaml - spec/09_decision_flow.yaml - spec/12_field_dictionary.yaml - spec/13_formula_registry.yaml - spec/45_number_provenance_contract.yaml - spec/46_low_capability_execution_pack.yaml - Temp/final_context_for_llm_v5.yaml or Temp/final_decision_packet_active.json response_rule: - 계산하지 않는다. - 패킷에 있는 값만 복사한다. - 패킷에 없는 숫자는 DATA_MISSING — 하네스 업데이트 필요로 표기한다. - 하네스 final_action을 번복하지 않는다. - blocked/limited 종목의 기준가·손절가·익절가·수량은 숨기지 않는다. - 보고서 섹션 순서는 executive -> blockers -> action_table -> shadow_ledger -> data_missing -> education_notes로 고정한다. edit_rule: - 한 번에 하나의 phase만 수정한다. - 수정 전 대상 파일과 acceptance criteria를 적는다. - 수정 후 지정 validation 명령을 실행한다. - 검증 실패 시 원인과 rollback path만 기록하고 성공으로 표시하지 않는다. forbidden: - 임의 가격 산출 - 임의 수량 산출 - 임의 평균/순위/점수 계산 - 하네스 action 변경 - deprecated artifact 참조 - --skip-validate로 실패 회피 - GAS에 신규 판단 로직 추가 release_commands: baseline_audit: - 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 - python tools/audit_repository_entropy_v2.py --out runtime/refactor_baseline_v_next.yaml build_release: - npm run ops:prepare - npm run ops:release - npm run ops:render - npm run ops:package strict_gate: - python tools/run_release_dag_v3.py --mode release --strict never_use: - --skip-validate as default - manual edit of Temp/*.json to force PASS - manual override without shadow ledger global_acceptance_criteria: phase_0_to_2: - schema/model generation gate PASS - unimplemented formula count=0 - active_count_per_formula=1 - authority_collision_count=0 - stale_artifact_count=0 phase_3_to_5: - forbidden_gas_business_logic_count=0 - renderer_calculation_count=0 - reverse_dependency_count=0 - number_provenance_coverage_pct=100 - no skipped validations in release mode phase_6_to_8: - expert_prior threshold count used in live decisions=0 or capped informational - live/replay separation strict PASS - T+20 dashboard generated - low capability pack validation PASS investment_quality_targets: - 'prediction_match_rate_pct: raise from observed 54.76 toward 60+ first, then 65+ after calibration' - 'profit_giveback_pct: tracked and decreasing for profitable trades' - 'late_chase_loss_attribution: tracked weekly and decreasing' - cash_floor_violation_count=0 pm_operating_cadence: weekly: - 토/일 rebalance_required=true 확인 - release DAG strict 실행 - T+5/T+20 outcome ledger 업데이트 - late-entry/premature-exit/profit-giveback 오답노트 작성 - 다음 주 risk budget와 cash floor 갱신 monthly_1_11_21: - mid_check_required=true 확인 - calibration registry expert_prior 감소 현황 점검 - threshold promotion/retirement 회의 - 문서/파일 entropy budget 점검 event_driven: - 대형 IPO, FOMC, CPI, 환율 급등, VIX 급등, 섹터 집중도 초과 시 proactive profit-taking/risk-off gate 실행