chore: suggest 폴더의 과거 제안서들을 archive 하위로 격리 및 불필요 중복 파일 제거
WBS-9.3 - NULL Policy CI Gate / NULL Policy Validation (pull_request) Failing after 3s
Quant Engine CI/CD Pipeline / validate-core (pull_request) Failing after 2m17s
Quant Engine CI/CD Pipeline / validate-ui-and-storage (pull_request) Has been skipped

This commit is contained in:
2026-06-26 12:19:43 +09:00
parent ebb863371d
commit f72d796636
16 changed files with 0 additions and 12516 deletions
+21
View File
@@ -0,0 +1,21 @@
schema_version: factor_rfc_template.v1
factor_id: FACTOR_ID_HERE
hypothesis: Describe the directional hypothesis.
market_regime_applicability: [bull, bear, sideways]
horizon: short
decay_half_life: 10
input_fields:
- field_name: input_field_1
formula_id: FORMULA_ID_HERE
data_quality_requirements:
- source_type: GAS_AUTO
expected_edge_formula: edge = ...
conflict_precedence: gate_precedence
position_sizing_impact: none
exit_impact: none
golden_cases:
- case_id: golden_case_1
shadow_start_date: "2026-06-07"
activation_threshold: 70
retirement_condition: no edge improvement for 90 days
owner: engine_owner
@@ -0,0 +1,873 @@
schema_version: qedd_refactor_master_plan.v1
document_id: QEDD_REFACTOR_MASTER_TODO_20260610
language: ko-KR
generated_at_kst: '2026-06-10T17:10:00+09:00'
source_basis:
zip: data_feed.zip
zip_sha256: b06b08112a7e67b270db7dfa7888611212759e370694088607f23405de9df77a
primary_authority_files_read:
- AGENTS.md
- docs/doctrine.md
- governance/adr/0011-qedd-methodology.md
- spec/49_refactor_methodology_contract.yaml
- spec/41_release_dag.yaml
- spec/34_architecture_boundaries.yaml
- spec/39_gas_thin_adapter_policy.yaml
- spec/43_quant_factor_taxonomy.yaml
- spec/45_number_provenance_contract.yaml
- spec/46_low_capability_execution_pack.yaml
- spec/release/version_retirement_policy.yaml
- spec/release/repository_entropy_budget.yaml
- runtime/active_artifact_manifest.yaml
- governance/authority_matrix.yaml
non_negotiable_constraints:
- 가격, 수량, TP, SL, 점수는 formula registry와 하네스 산출값만 사용한다.
- LLM은 계산하지 않고 packet/context 값을 copy-only 렌더링한다.
- Python canonical first, GAS thin adapter second 원칙을 유지한다.
- Data -> Feature -> Decision -> Execution -> Report 단방향 경계를 유지한다.
- D+2 현금은 즉시현금 방어선으로 인정한다.
- 주말 리밸런싱과 매월 1/11/21 중간점검 cadence를 runtime contract에 고정한다.
- deprecated artifact와 replay 표본은 active/live 판단 권위로 읽지 않는다.
current_repository_diagnosis:
summary: 방향성은 이미 옳다. 문제는 공식/스키마/툴/문서의 버전 증가가 decision authority를 흐리게 만들 위험이 있다는
점이다.
repository_metrics_observed:
total_zip_entries_observed: 1446
entropy_audit_total_file_count: 1447
package_script_count: 22
temp_json_count: 17
file_extension_counts:
.md: 40
.yaml: 174
.py: 841
.gs: 8
.json: 376
.jsonl: 2
known_strengths:
- active_artifact_manifest.yaml에서 active source를 1개로 수렴시키려는 구조가 존재한다.
- ADR-0011 QEDD가 Contract-First, Python Canonical, No LLM Math 원칙을 명시한다.
- authority_matrix.yaml 기준 authority_collision_count=0 구조를 이미 지향한다.
- release DAG, provenance contract, low capability pack, GAS thin adapter policy가
존재한다.
primary_risks:
- 버전 파일이 여러 곳에 공존하여 사람이 어떤 파일을 수정해야 하는지 흔들릴 수 있다.
- tools/*.py에 빌드/검증/업그레이드 로직이 누적되면 canonical package와 CLI wrapper 경계가 다시 흐려진다.
- factor_lifecycle_registry의 상당수 factor가 draft 상태에 머물면 실제 운용 판단에 기여하지 못하고 문서 부채가
된다.
- LLM 보고 프롬프트가 늘어나면 하네스 산출값과 narrative의 권위 충돌 가능성이 커진다.
- Temp 산출물과 archive 산출물이 인간 검토 과정에서 active처럼 참조될 위험이 있다.
cold_verdict: 새로운 문서를 더 늘리는 방식이 아니라, 권위 경로를 1개로 수렴시키고 모든 확장을 contract -> schema
-> golden -> python -> shadow -> active 순서로만 승격시키는 운영체계가 필요하다.
target_methodology:
name: 'QEDD-OS: Quant Evidence-Driven Deterministic Development Operating System'
objective: 저성능 LLM도 동일한 final_decision_packet을 읽으면 고성능 LLM과 같은 결론을 내도록 만드는 결정론적
퀀트 엔진 개발/운영 방법론
core_doctrine:
- YAML은 계약이다. Python은 계산이다. GAS는 어댑터다. Markdown은 설명이다. LLM은 렌더러다.
- 신규 아이디어는 바로 매수/매도 로직이 아니라 shadow factor로 시작한다.
- 모든 숫자는 source_path, json_pointer, formula_id, input_hash, freshness_status를 가져야
한다.
- 성능이 검증되지 않은 팩터는 active decision에 영향을 주지 않는다.
- 매수/매도 추천은 alpha보다 먼저 손실제한, 현금방어선, 실행가능성, 데이터정합성을 통과해야 한다.
authority_ladder:
- rank: 1
authority: spec/*.yaml
meaning: 계약, 공식, 게이트, 출력 스키마의 원본 권위
- rank: 2
authority: runtime/active_artifact_manifest.yaml
meaning: 현재 active 산출물 alias와 단일 권위 경로
- rank: 3
authority: Temp/final_decision_packet_active.json
meaning: 운영 보고서가 복사해야 하는 최종 패킷
- rank: 4
authority: src/quant_engine
meaning: 계산 구현의 canonical package
- rank: 5
authority: tools/*.py
meaning: 검증/생성 CLI wrapper. 핵심 판단 로직 금지
- rank: 6
authority: gas_*.gs
meaning: collect/normalize/export/display 전용 thin adapter
- rank: 7
authority: prompts/*.md
meaning: copy-only rendering instruction. 계산/순위/수량 산출 금지
development_flow:
- 'CR 생성: change_request_template.yaml로 문제, 기대효과, 영향 범위, rollback 조건을 먼저 쓴다.'
- '계약 작성: spec/*.yaml에 input/output/schema/formula/gate/owner/retirement_condition을
등록한다.'
- '스키마 작성: schemas/*.schema.json 또는 generated schema를 갱신한다.'
- '골든케이스 작성: buy/sell/hold/reject/insufficient_data/avoid 케이스와 경계값 케이스를 먼저 만든다.'
- 'Python 구현: src/quant_engine에 순수 함수로 구현하고 tools는 CLI wrapper만 둔다.'
- 'Property invariant 검증: 결측/위험/현금부족/가격 stale 조건에서 권한이 완화되지 않는지 검증한다.'
- 'Shadow 실행: active decision에 반영하지 않고 shadow ledger에 예측과 실제 결과를 누적한다.'
- 'Promotion gate: 표본 수, 예측개선, drawdown, 충돌률, provenance 100%를 만족할 때만 active 승격한다.'
- 'Release DAG PASS: full gate에서 SKIP/FAIL 없이 통과한 경우만 운영 패키지에 포함한다.'
- 'Post-release review: 주간 리밸런싱과 1/11/21 중간점검 때 drift, 충돌, 성과를 평가한다.'
proposed_repository_operating_model:
directory_contract:
AGENTS.md: 150~220줄 이하의 운영 인덱스. 상세 정책을 직접 길게 쓰지 않는다.
spec/: source of truth. 계약/공식/팩터/리스크/출력/릴리즈 정책만 둔다.
src/quant_engine/: canonical Python package. 모든 계산과 decision logic은 여기로 수렴한다.
tools/: thin CLI. build/validate/render/package 명령만 둔다. 비즈니스 로직은 import해서 호출한다.
gas_*.gs: Google Sheets/Apps Script adapter. decision/sizing/stop/take_profit/risk_score
금지.
governance/: ADR, authority matrix, rule lifecycle, change request, rule hash만
둔다.
schemas/: JSON schema와 generated schema. model parity 검증 대상이다.
tests/golden/: 골든케이스, replay fixture, property/metamorphic fixture.
Temp/: 런타임 산출물. 직접 편집 금지. active manifest를 통해서만 읽는다.
artifacts/archive/: 명시적 보관소. runtime source로 읽지 않는다.
prompts/: copy-only renderer instruction. 계산/판단 로직 금지.
docs/: 사용자 설명과 ADR 해설. 중복 정책 원본 금지.
file_diet_policy:
principle: 문서는 줄이고 계약은 남긴다. 중복 설명은 삭제하고 링크 인덱스로 수렴한다.
targets:
max_active_versions_per_formula: 1
max_shadow_versions_per_formula: 1
auto_archive_when_versions_gte: 3
AGENTS_md_max_lines: 220
prompt_files_max_role: renderer only
tools_business_logic_count: 0
runtime_source_from_archive_count: 0
actions:
- versioned tool 파일은 latest alias 1개와 archive 디렉토리로 분리한다.
- prompts 중 engine_audit_master_prompt_v2/v3 같은 중복 버전은 manifest로 active 1개만 노출한다.
- spec/strategy/*_vN.yaml은 lifecycle registry에 ACTIVE/SHADOW/RETIRED를 반드시 부여한다.
- Temp와 artifacts/canonical에 동일 내용이 있으면 active manifest alias만 남기고 사람이 직접 경로를
인용하지 못하게 한다.
- 문서의 정책 문장은 spec/governance로 이동하고 docs는 해설과 운영 예시만 유지한다.
version_retirement_rules:
- ACTIVE는 항상 1개다.
- SHADOW는 다음 후보 1개만 허용한다.
- RETIRED는 archive로 이동하고 runtime manifest에서 참조 금지한다.
- generated parity 보존이 필요한 schema/model/formula generated 파일만 예외로 둔다.
- 새 버전 생성 시 previous version의 retirement_condition과 migration note를 필수 기록한다.
quant_engine_design:
module_pipeline:
- stage: data
owner: data_engineer
input: external/source workbook/API
output: GatherTradingData.json
hard_gate: schema_presence_score=100 and freshness valid
- stage: feature
owner: quant_researcher
input: GatherTradingData.json
output: Temp/computed_harness_v1.json
hard_gate: all registered formula inputs mapped or DATA_MISSING
- stage: decision
owner: quant_architect
input: computed_harness + contracts
output: Temp/final_decision_packet_active.json
hard_gate: no authority collision, no stale active artifact
- stage: execution
owner: risk_manager
input: final decision packet
output: order table / sell priority table / waterfall
hard_gate: risk/cash/exposure/order grammar pass
- stage: report
owner: pm
input: final packet + provenance ledger
output: operational_report.json/md
hard_gate: copy-only numeric sync and provenance 100%
factor_families_to_standardize:
- family: market_regime
purpose: 시장 위험이 커질 때 신규 매수/포지션 스케일을 자동 축소
required_tests:
- risk monotonicity
- stale macro data block
- cash floor interaction
promotion_evidence:
- live sample >= 30
- replay/live separation pass
- position scale never increases when risk rises
- family: smart_money_liquidity
purpose: 외국인/기관/거래대금/유동성 가속을 이용한 선행성 확인
required_tests:
- lookahead bias zero
- liquidity slippage cap
- distribution divergence detection
promotion_evidence:
- entry timing improvement
- false breakout reduction
- sell-before-distribution hit rate
- family: fundamental_quality
purpose: 단기 테마와 장기 생존력을 분리하여 core/satellite 배분
required_tests:
- data freshness
- sector-neutral comparison
- earnings/cashflow quality consistency
promotion_evidence:
- drawdown adjusted return improvement
- low-quality exclusion effectiveness
- family: entry_timing
purpose: 추격매수/늦은 진입/설거지 방지
required_tests:
- anti-late-entry gate
- pullback quality gate
- entry decile stability
promotion_evidence:
- late entry loss rate reduction
- stop hit within T+5 reduction
- family: exit_value_preservation
purpose: 수익금을 지키기 위한 단계익절, 트레일링스탑, 현금회복 최적화
required_tests:
- sell priority linearization
- waterfall single responsibility
- profit lock monotonicity
promotion_evidence:
- realized gain protection
- drawdown after profit reduction
- cash shortfall recovery
- family: portfolio_risk_budget
purpose: 목표 5억 원 도달을 위한 현금/섹터/종목/스타일 리스크 예산 관리
required_tests:
- position heat cap
- sector concentration cap
- D+2 cash defense recognition
promotion_evidence:
- cash floor breach zero
- portfolio beta/heat within cap
- goal risk budget traceability
- family: execution_quality
purpose: 호가/틱/수량/슬리피지/주문문법을 deterministic하게 고정
required_tests:
- tick normalization
- order grammar
- quantity integer
- stale price zero quantity
promotion_evidence:
- order rejection rate reduction
- numeric mismatch zero
algorithm_expansion_rule:
before_adding_any_factor:
- factor_id를 spec/factor_lifecycle_registry.yaml에 등록한다.
- hypothesis, horizon, decay_half_life, input_fields, expected_edge_formula를 쓴다.
- market_regime_applicability와 conflict_precedence를 쓴다.
- position_sizing_impact와 exit_impact를 diagnostic/scale/gate/block 중 하나로 명시한다.
- golden_cases와 property invariant를 먼저 만든다.
- 최소 30개 live 표본 전에는 active decision 영향도를 0으로 둔다.
- no_edge_improvement_lookback_days=90 또는 high_conflict이면 retire한다.
forbidden_shortcuts:
- 성과가 좋아 보인다는 이유만으로 shadow를 건너뛰고 active 승격 금지
- LLM narrative로 buy/sell gate 완화 금지
- replay 성과를 live 성과처럼 표현 금지
- 미등록 공식으로 포지션 사이징 금지
- 다중 조건 주문문으로 매도 우선순위 뒤섞기 금지
harness_architecture:
harness_stack:
- layer: contract_validation
purpose: YAML/spec/schema shape 검증
must_pass:
- validate_specs
- validate_schema_model
- validate_field_dictionary
- layer: golden_case_validation
purpose: 정답이 알려진 buy/sell/hold/reject/avoid/insufficient_data 재현
must_pass:
- validate_golden_coverage_100
- layer: property_invariant_validation
purpose: 시장위험/현금부족/결측/stale 가격 증가 시 권한이 완화되지 않는지 검증
must_pass:
- property_invariants
- layer: architecture_boundary_validation
purpose: renderer 계산, GAS business logic, reverse dependency 차단
must_pass:
- validate_gas_thin_adapter
- architecture_boundary_zero
- layer: provenance_validation
purpose: 보고서 숫자 100% provenance 보장
must_pass:
- validate_number_provenance_strict
- layer: active_manifest_validation
purpose: runtime source가 active alias 1개로 수렴하는지 검증
must_pass:
- validate_active_manifest
- validate_runtime_source_whitelist
- layer: shadow_live_validation
purpose: replay/shadow/live 혼입 차단
must_pass:
- validate_no_replay_live_mix
- live_sample_qualification
- layer: low_capability_llm_validation
purpose: 저성능 LLM도 packet copy-only로 같은 결과를 내는지 검증
must_pass:
- validate_low_capability_pack
- numeric_copy_only_sync
universal_release_gates:
active_artifact_match_pct: 100.0
number_provenance_coverage_pct: 100.0
formula_owner_coverage_pct: 100.0
golden_coverage_pct: 100.0
authority_collision_count: 0
manual_override_field_count: 0
renderer_calculation_count: 0
reverse_dependency_count: 0
gas_forbidden_responsibility_count: 0
runtime_source_from_deprecated_artifact_count: 0
llm_numeric_generation_count: 0
release_failed_checks_count: 0
strict_mode_skip_count: 0
new_harnesses_to_add:
- id: H001_DECISION_TRACE_REPLAY
file: tools/validate_decision_trace_replay_v1.py
contract: spec/52_decision_trace_replay_contract.yaml
purpose: 최종 매수/보유/매도 결론까지 사용된 모든 gate와 feature를 trace로 복원
acceptance:
- every final verdict has ordered gate_trace
- missing gate_trace blocks release
- id: H002_FACTOR_CONFLICT_MATRIX
file: tools/validate_factor_conflict_matrix_v1.py
contract: spec/53_factor_conflict_matrix.yaml
purpose: 스마트머니/펀더멘털/모멘텀/리스크 팩터 충돌 시 우선순위 자동 판정
acceptance:
- conflict_precedence defined for every active factor
- unresolved conflict count = 0
- id: H003_ANTI_BACKFILL_LOOKAHEAD
file: tools/validate_no_lookahead_bias_v1.py
contract: spec/54_temporal_data_integrity.yaml
purpose: 백필 데이터와 실시간 데이터의 timestamp/freshness 혼입 차단
acceptance:
- feature_timestamp <= decision_timestamp
- backfilled_after_decision_count = 0
- id: H004_EXECUTION_SIMULATOR
file: tools/validate_execution_simulator_v1.py
contract: spec/55_execution_simulator_contract.yaml
purpose: 틱 정규화, 최소주문수량, 예수금, D+2 현금, 슬리피지 적용 후 실제 주문 가능성 검증
acceptance:
- invalid_order_count = 0
- cash_floor_after_orders >= required_cash_floor
- id: H005_REPORT_RENDER_DIFF
file: tools/validate_report_render_diff_v1.py
contract: spec/56_renderer_copy_only_contract.yaml
purpose: operational_report.md/json의 숫자가 final packet과 1:1 복사인지 검증
acceptance:
- numeric_diff_count = 0
- unsupported_narrative_softening_count = 0
- id: H006_ENTROPY_BUDGET_ENFORCER
file: tools/validate_repository_entropy_budget_v3.py
contract: spec/release/repository_entropy_budget.yaml
purpose: 파일 수만 보지 않고 active duplicate, version sprawl, docs policy duplication까지
측정
acceptance:
- active_duplicate_count = 0
- stale_version_exposed_count = 0
- policy_duplicate_count <= approved_budget
- id: H007_SHADOW_PROMOTION_SCORECARD
file: tools/build_shadow_promotion_scorecard_v1.py
contract: spec/57_shadow_promotion_scorecard.yaml
purpose: 신규 팩터를 active로 올릴지 수치로 판단
acceptance:
- live_sample_count >= 30
- edge_improvement_positive
- drawdown_not_worse
- conflict_rate_within_cap
- id: H008_LLM_DETERMINISM_AUDIT
file: tools/validate_llm_determinism_pack_v1.py
contract: spec/58_llm_determinism_contract.yaml
purpose: 저성능 LLM용 pack이 계산 없이 동일 결론을 렌더링할 만큼 충분한지 검증
acceptance:
- all decision fields precomputed
- all tables sorted in packet
- no instruction requires arithmetic
low_capability_llm_execution_protocol:
principle: LLM에게 생각을 시키지 말고, 이미 계산된 값을 올바른 순서로 복사하게 만든다.
required_context_pack_order:
- 01_metadata_and_manifest_alias
- 02_portfolio_health
- 03_hard_blockers
- 04_sell_priority_table
- 05_buy_hold_sell_action_table
- 06_cash_and_risk_budget
- 07_shadow_ledger_visible_items
- 08_data_missing_items
- 09_market_regime_summary_precomputed
- 10_education_notes_preapproved
- 11_forbidden_phrases_and_no_math_rules
renderer_rules:
- 표 정렬은 packet에서 이미 끝난 순서를 유지한다.
- 수량/가격/비중/점수/순위/평균/합계 계산을 하지 않는다.
- 값이 없으면 DATA_MISSING — 하네스 업데이트 필요로 표기한다.
- blocked/limited 종목도 산출된 기준가, 손절가, 익절가, 수량을 숨기지 않는다.
- 투자 결론은 final_execution_decision과 gate_trace를 번복하지 않는다.
- 매도 후보가 2개 이상이면 sell priority table을 먼저 출력한다.
- narrative는 gate를 완화하거나 회피하는 표현을 쓰지 않는다.
minimum_packet_fields:
- ticker
- name
- position_class
- final_action
- action_reason_code
- entry_price
- stop_price
- take_profit_ladder
- proposed_quantity
- sell_priority_rank
- cash_impact_krw
- risk_budget_impact
- data_freshness_status
- formula_id
- source_path
- json_pointer
- input_hash
refactor_todo_master:
- phase: P0_freeze_and_baseline
goal: 현재 상태를 손대기 전에 재현 가능한 기준선을 잠근다.
tasks:
- id: P0-T01
action: 현재 data_feed.zip의 sha256과 file count를 runtime/refactor_baseline_v2.yaml에
기록한다.
files:
- runtime/refactor_baseline_v2.yaml
commands:
- python tools/audit_repository_entropy_v2.py --out runtime/refactor_baseline_v2.yaml
done_when:
- total_file_count recorded
- package_script_count recorded
- temp_json_count recorded
status: completed
- id: P0-T02
action: active_artifact_manifest.yaml의 canonical_source와 active_aliases를 검증한다.
files:
- runtime/active_artifact_manifest.yaml
commands:
- python tools/validate_active_manifest.py --manifest runtime/active_artifact_manifest.yaml
--strict
done_when:
- authority_collision_count == 0
- single_truth_conflict_count == 0
status: completed
- id: P0-T03
action: release DAG를 strict mode로 실행해 실패/스킵 목록을 baseline으로 저장한다.
files:
- Temp/engine_harness_gate_result.json
commands:
- npm run validate-engine-strict
done_when:
- gate result exists
- failed_checks list captured
status: completed
- id: P0-T04
action: 변경 전 operational_report.json과 final_decision_packet_active.json의 numeric
sync 상태를 저장한다.
files:
- Temp/operational_report.json
- Temp/final_decision_packet_active.json
commands:
- python tools/validate_report_packet_sync_v1.py --packet Temp/final_decision_packet_active.json
--report Temp/operational_report.json
done_when:
- numeric mismatch count captured
status: completed
- phase: P1_authority_collapse
goal: 사람과 LLM이 읽는 권위 경로를 하나로 수렴시킨다.
tasks:
- id: P1-T01
action: AGENTS.md를 운영 인덱스로만 유지하고 상세 규칙은 governance/rules 및 spec으로 이동한다.
files:
- AGENTS.md
- governance/rules/*.yaml
- spec/*.yaml
acceptance:
- AGENTS.md <= 220 lines
- all critical authority files listed
- no duplicate formula definitions in AGENTS.md
status: completed
- id: P1-T02
action: spec/aliases.yaml에 legacy path -> canonical path alias를 명시하고 deprecated
path 직접 참조를 차단한다.
files:
- spec/aliases.yaml
- tools/validate_runtime_source_whitelist_v1.py
acceptance:
- deprecated direct reference count = 0
status: completed
- id: P1-T03
action: runtime/active_artifact_manifest.yaml만 Temp active artifact의 진입점으로 허용한다.
files:
- runtime/active_artifact_manifest.yaml
- spec/32_canonical_artifact_resolver.yaml
acceptance:
- runtime source whitelist pass
status: completed
- id: P1-T04
action: authority_matrix.yaml에 모든 output field owner를 100% 등록한다.
files:
- governance/authority_matrix.yaml
- spec/03_formulas/output_field_owner_ledger.yaml
acceptance:
- owned_output_field_pct == 100.0
- manual_override_field_count == 0
status: completed
- phase: P2_contract_first_normalization
goal: 공식/팩터/출력 필드를 계약 우선 구조로 표준화한다.
tasks:
- id: P2-T01
action: spec/13_formula_registry.yaml과 spec/03_formulas/formula_registry.normalized.yaml의
차이를 비교해 canonical registry를 하나로 정한다.
files:
- spec/13_formula_registry.yaml
- spec/03_formulas/formula_registry.normalized.yaml
acceptance:
- one canonical formula registry declared
- duplicate formula_id count = 0
status: completed
- id: P2-T02
action: 모든 formula_id에 owner, input_fields, output_fields, unit, freshness, golden_cases,
lifecycle_state를 채운다.
files:
- spec/13_formula_registry.yaml
- spec/51_formula_lifecycle_registry.yaml
acceptance:
- formula_owner_coverage_pct == 100.0
- formula_lifecycle_missing_count == 0
status: completed
- id: P2-T03
action: factor_lifecycle_registry의 draft factor를 active_candidate, shadow, retired
중 하나로 재분류한다.
files:
- spec/factor_lifecycle_registry.yaml
acceptance:
- factor without owner = 0
- factor without conflict_precedence = 0
- factor without retirement_condition = 0
status: completed
- id: P2-T04
action: field_dictionary를 account_snapshot/raw workbook/report output과 1:1 매핑한다.
files:
- spec/12_field_dictionary.yaml
- spec/14_raw_workbook_mapping.yaml
- spec/15_account_snapshot_contract.yaml
acceptance:
- unmapped required field count = 0
status: completed
- phase: P3_python_canonical_extraction
goal: 계산 로직을 src/quant_engine으로 수렴시키고 tools는 얇게 만든다.
tasks:
- id: P3-T01
action: tools/build_* 내부 비즈니스 계산을 찾아 src/quant_engine/{features,decision,risk,execution}로
이동한다.
files:
- tools/*.py
- src/quant_engine/**
acceptance:
- tools business logic function count = 0
- tools only parse args/call package/write artifact
status: completed
- id: P3-T02
action: src/quant_engine에 domain별 pure function interface를 만든다.
files:
- src/quant_engine/features
- src/quant_engine/decision
- src/quant_engine/risk
- src/quant_engine/execution
acceptance:
- no filesystem access in pure formula functions
- all side effects in adapter layer
status: completed
- id: P3-T03
action: generated formula/model/schema parity를 단일 generator로 만든다.
files:
- tools/generate_schema_models.py
- schemas/generated
- src/quant_engine/models/generated
acceptance:
- schema/model parity pass
- duplicate generated hash is expected and documented
status: completed
- id: P3-T04
action: run_release_dag_v1/v2/v3를 run_release_dag.py + versioned contract로 정리한다.
files:
- tools/run_release_dag.py
- spec/41_release_dag.yaml
acceptance:
- package scripts reference only current CLI
- old versions retired or archived
status: completed
- phase: P4_gas_thin_adapter_enforcement
goal: GAS에서 의사결정/사이징/손절/익절/리스크 계산을 제거한다.
tasks:
- id: P4-T01
action: gas_*.gs 함수를 collect/normalize/export/display/business_logic으로 분류한다.
files:
- gas_*.gs
- Temp/gas_business_logic_audit_v1.json
commands:
- python tools/validate_gas_thin_adapter_v1.py
acceptance:
- forbidden responsibility count captured
status: completed
- id: P4-T02
action: business_logic 함수는 Python canonical 출력값을 읽는 adapter 호출로 치환한다.
files:
- gas_*.gs
- src/quant_engine/**
acceptance:
- decision/sizing/stop_loss/take_profit/risk_score in GAS = 0
status: completed
- id: P4-T03
action: GAS 함수 호출 인자 수와 exported context key를 검증한다.
files:
- tools/validate_gas_call_arity.py
- gas_*.gs
commands:
- npm run validate-gas-call-arity
acceptance:
- call arity mismatch count = 0
status: completed
- phase: P5_harness_completion
goal: 모든 알고리즘 확장이 수치 증거 없이는 active가 될 수 없게 만든다.
tasks:
- id: P5-T01
action: new_harnesses_to_add H001~H008 계약 파일을 spec/52~58로 추가한다.
files:
- spec/52_decision_trace_replay_contract.yaml
- spec/53_factor_conflict_matrix.yaml
- spec/54_temporal_data_integrity.yaml
- spec/55_execution_simulator_contract.yaml
- spec/56_renderer_copy_only_contract.yaml
- spec/57_shadow_promotion_scorecard.yaml
- spec/58_llm_determinism_contract.yaml
acceptance:
- all new contracts validate
status: completed
- id: P5-T02
action: property_invariants.yaml을 실제 validator와 연결한다.
files:
- spec/property_invariants.yaml
- tools/validate_property_invariants_v1.py
acceptance:
- all invariants executable
- violation blocks release
status: completed
- id: P5-T03
action: live/replay/shadow 분리를 formula/factor promotion gate의 필수조건으로 만든다.
files:
- spec/44_live_replay_separation.yaml
- tools/validate_no_replay_live_mix_v2.py
acceptance:
- replay metric cannot unlock active
- live sample < 30 blocks PASS_100
status: completed
- id: P5-T04
action: backtest/replay 결과에는 latency, slippage, 거래비용, survivorship bias flag를
필수로 붙인다.
files:
- spec/29_backtest_harness_contract.yaml
acceptance:
- unadjusted replay performance cannot promote factor
status: completed
- phase: P6_low_capability_llm_pack
goal: LLM 성능과 관계없이 동일한 보고서 결론이 나오도록 packet을 완성한다.
tasks:
- id: P6-T01
action: Temp/final_context_for_llm_v5.yaml에 모든 정렬/순위/표시 문자열을 사전 계산해서 넣는다.
files:
- Temp/final_context_for_llm_v5.yaml
- spec/46_low_capability_execution_pack.yaml
acceptance:
- all required_sections present
- no arithmetic instruction required
status: completed
- id: P6-T02
action: 프롬프트에서 계산/평균/순위/재해석 지시를 삭제하고 copy-only template으로 축소한다.
files:
- prompts/low_capability_report_renderer.md
- prompts/report_renderer_prompt.md
acceptance:
- llm_numeric_generation_count = 0
status: completed
- id: P6-T03
action: operational_report.md/json의 모든 숫자를 provenance ledger와 대조한다.
files:
- Temp/number_provenance_ledger_v4.json
- Temp/operational_report.md
- Temp/operational_report.json
commands:
- python tools/validate_number_provenance_strict_v3.py --ledger Temp/number_provenance_ledger_v4.json
--report Temp/operational_report.md
acceptance:
- number_provenance_coverage_pct == 100.0
status: completed
- phase: P7_file_diet_and_entropy_control
goal: 지나치게 많은 문서/버전/도구를 줄이고 장기 유지보수성을 확보한다.
tasks:
- id: P7-T01
action: 동일 basename의 v1/v2/v3 파일 그룹을 inventory로 뽑아 ACTIVE/SHADOW/RETIRED를 지정한다.
files:
- runtime/refactor_version_inventory_v1.yaml
acceptance:
- unclassified version group count = 0
status: completed
- id: P7-T02
action: 활성 prompt는 renderer 1개, audit 1개, capture parse 1개로 제한한다.
files:
- prompts/*.md
- runtime/active_artifact_manifest.yaml
acceptance:
- active prompt count by role <= 1
status: completed
- id: P7-T03
action: archive에 있는 artifact는 runtime resolver가 직접 읽지 못하게 whitelist validator를
강화한다.
files:
- tools/validate_runtime_source_whitelist_v1.py
acceptance:
- runtime source from artifacts/archive count = 0
status: completed
- id: P7-T04
action: README/docs는 운영 명령과 의사결정 이론 설명만 남기고 정책 원본은 spec/governance로 링크한다.
files:
- README.md
- docs/*.md
acceptance:
- policy duplicate sections removed
- doc links resolve
status: completed
- phase: P8_release_train_and_operating_cadence
goal: 매주/월중 점검과 릴리즈 관리를 자동화된 의식으로 만든다.
tasks:
- id: P8-T01
action: spec/operating_cadence.yaml에 weekend rebalance와 1/11/21 mid-check를 release
DAG input으로 연결한다.
files:
- spec/operating_cadence.yaml
- tools/run_release_dag.py
acceptance:
- rebalance_required and mid_check_required computed in packet
status: completed
- id: P8-T02
action: 매주 리밸런싱 전용 checklist를 final_context_for_llm에 포함한다.
files:
- spec/46_low_capability_execution_pack.yaml
- Temp/final_context_for_llm_v5.yaml
acceptance:
- weekend rebalance section present when required
status: completed
- id: P8-T03
action: 대형 IPO/시장상관/차익실현 사전 판단은 event_response/proactive_exit_radar로만 산출한다.
files:
- spec/exit/event_response.yaml
- spec/exit/proactive_exit_radar.yaml
acceptance:
- IPO event does not bypass sell priority waterfall
status: completed
- phase: P9_performance_governance
goal: 엔진이 수익률만 올리는 것이 아니라 수익금을 지키는지 평가한다.
tasks:
- id: P9-T01
action: 성과 평가는 gross return이 아니라 net return, max drawdown, hit rate, late-entry
loss rate, profit giveback으로 분해한다.
files:
- spec/17_performance_contract.yaml
- spec/37_evaluation_dashboard_contract.yaml
acceptance:
- performance dashboard has net and risk-adjusted metrics
status: completed
- id: P9-T02
action: 신규 팩터의 승격은 prediction_match_rate보다 drawdown 개선과 false-positive 감소를 더 우선한다.
files:
- spec/57_shadow_promotion_scorecard.yaml
acceptance:
- promotion scorecard includes drawdown_not_worse and false_positive_reduction
status: completed
- id: P9-T03
action: 목표금액 5억 기준 risk budget drift와 cash defense drift를 매 release에 기록한다.
files:
- spec/36_goal_risk_budget_harness.yaml
acceptance:
- goal risk budget trace exists in final packet
status: completed
command_playbook:
baseline:
- python tools/audit_repository_entropy_v2.py --out runtime/refactor_baseline_v2.yaml
- python tools/validate_active_manifest.py --manifest runtime/active_artifact_manifest.yaml
--strict
- npm run validate-engine-strict
daily_engine_gate:
- npm run convert-data-json
- npm run validate-proposal-reference:strict
- npm run full-gate:proposal-strict
release_gate:
- npm run full-gate
- npm run validate-engine-strict
- npm run prepare-upload-zip -- --validation-mode release --profile
after_gas_change:
- npm run validate-gas-call-arity
- python tools/validate_gas_thin_adapter_v1.py
- npm run full-gate:proposal-strict
after_formula_change:
- 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
- npm run validate-engine-strict
after_prompt_or_report_change:
- python tools/render_operational_report.py --json GatherTradingData.json --output
Temp/operational_report.md --report-json-output Temp/operational_report.json
- python tools/validate_operational_report_contract.py
- python tools/validate_report_packet_sync_v1.py --packet Temp/final_decision_packet_active.json
--report Temp/operational_report.json
- python tools/validate_number_provenance_strict_v3.py --ledger Temp/number_provenance_ledger_v4.json
--report Temp/operational_report.md
definition_of_done:
refactor_release_done_when:
- Release DAG strict mode PASS
- strict mode SKIP count = 0
- authority_collision_count = 0
- single_truth_conflict_count = 0
- active_artifact_match_pct = 100.0
- number_provenance_coverage_pct = 100.0
- golden_coverage_pct = 100.0
- schema/model parity PASS
- GAS forbidden responsibility count = 0
- tools business logic count = 0
- LLM numeric generation count = 0
- runtime source from archive/deprecated artifact count = 0
- new active factor has shadow scorecard and live_sample_count >= 30
- all report numbers resolve to source_path/json_pointer/formula_id/input_hash/freshness_status
human_review_checklist:
- 이 변경이 투자 판단을 바꾸는가? 바꾼다면 formula/factor lifecycle과 shadow evidence가 있는가?
- 이 변경이 보고 표현만 바꾸는가? 그렇다면 숫자 provenance와 copy-only sync가 유지되는가?
- 이 변경이 데이터 수집만 바꾸는가? 그렇다면 freshness와 raw workbook mapping이 깨지지 않았는가?
- 이 변경이 GAS에 계산을 되살리는가? 하나라도 그렇다면 반려한다.
- 이 변경이 문서를 늘리는가? 기존 spec/governance로 흡수할 수 있으면 새 문서를 만들지 않는다.
recommended_next_7_days:
- day: D1
focus: P0 baseline + P1 authority collapse
deliverables:
- refactor_baseline_v2.yaml
- AGENTS.md shrink plan
- alias/deprecated reference audit
- day: D2
focus: P2 formula/factor lifecycle normalization
deliverables:
- formula lifecycle missing list
- factor draft/shadow/retired classification
- day: D3
focus: P3 tools business logic extraction inventory
deliverables:
- tools_logic_inventory.yaml
- src/quant_engine module map
- day: D4
focus: P4 GAS thin adapter audit
deliverables:
- gas_business_logic_audit_v1.json
- migration patches
- day: D5
focus: P5 new harness contracts H001-H008
deliverables:
- spec/52~58 contract drafts
- release DAG node additions
- day: D6
focus: P6 low capability LLM pack
deliverables:
- final_context_for_llm_v6.yaml
- copy-only renderer prompt
- day: D7
focus: P7 entropy diet + full gate
deliverables:
- version inventory
- archive manifest
- strict release PASS report
senior_architect_final_rule: 좋은 퀀트 엔진은 더 많은 규칙을 가진 엔진이 아니라, 손실을 막는 규칙과 수익을 키우는 규칙의
권위가 충돌하지 않는 엔진이다. 확장은 반드시 shadow evidence로 하고, 운영은 반드시 active manifest 하나로 한다.
File diff suppressed because it is too large Load Diff