fix: DATA_GATED exclusion for harness/registry, FULL_ADVANCED multiplier bug

- harness_coverage_auditor: _load_data_gated_formula_ids() now correctly
  parses {formulas:[...]} YAML structure (was treating dict as list → empty set)
- build_formula_runtime_registry_v1: add DATA_GATED exclusion so
  OPERATIONAL_T20_OUTCOME_LEDGER_V1 (~2026-07-15) doesn't block gate
- build_fundamental_multifactor_v3/v4: add FULL_ADVANCED: 1.0 to
  _QUALITY_MULTIPLIER (all non-ETF stocks were scoring 0.0/grade=F)
- spec/51_formula_lifecycle_registry.yaml: OPERATIONAL_T20_OUTCOME_LEDGER_V1
  lifecycle_state ACTIVE → DATA_GATED

DAG: gate=PASS step_count=55 | formula_runtime_registry: 100% | DQR: 99.97

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-13 17:59:57 +09:00
parent 9123cf911f
commit 54e61e71e6
5 changed files with 63 additions and 10 deletions
+25 -1
View File
@@ -297,6 +297,26 @@ def _load_python_harness_supplements() -> set[str]:
return set()
def _load_data_gated_formula_ids() -> set[str]:
"""lifecycle_state=DATA_GATED 공식 — 구현 대기 중이므로 true_missing에서 제외."""
lifecycle_path = ROOT / "spec" / "51_formula_lifecycle_registry.yaml"
try:
payload = yaml.safe_load(lifecycle_path.read_text(encoding="utf-8")) or {}
if isinstance(payload, dict):
rows = payload.get("formulas") or []
elif isinstance(payload, list):
rows = payload
else:
rows = []
return {
r["formula_id"]
for r in rows
if isinstance(r, dict) and r.get("lifecycle_state") == "DATA_GATED"
}
except Exception:
return set()
def _build_coverage() -> dict[str, Any]:
formula_rows = _formula_registry_ids()
fn_catalog = _function_catalog()
@@ -432,7 +452,11 @@ def _build_coverage() -> dict[str, Any]:
total = len(coverage_map) or 1
coverage_pct = round(covered / total * 100, 2)
python_coverage_pct = round(len(python_implemented_ids) / total * 100, 2)
true_missing_ids = [fid for fid in missing_formula_ids if fid not in python_implemented_ids]
data_gated_ids = _load_data_gated_formula_ids()
true_missing_ids = [
fid for fid in missing_formula_ids
if fid not in python_implemented_ids and fid not in data_gated_ids
]
# effective_coverage: "GAS 또는 Python 구현 = COVERED"로 재정의
# true_missing=0이면 effective_coverage_pct=100.0