Files
QuantEngineByItz/suggest/quant_engine_refactor_master_plan_20260607.yaml
T

1323 lines
50 KiB
YAML

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