공식 레지스트리와 생성물 동기화

This commit is contained in:
2026-06-18 01:48:00 +09:00
parent 3afca069df
commit fee8131d5d
247 changed files with 2690 additions and 1469 deletions
+6 -21
View File
@@ -8,29 +8,14 @@ import yaml
from refactor_master_helpers import ROOT, extract_formula_ids, extract_formula_outputs, load_yaml
def _infer_owner(formula_id: str) -> str:
fid = formula_id.upper()
if any(token in fid for token in ("REPORT", "RENDER", "NARRATIVE", "TRACE", "LEDGER", "VERDICT", "JUDGMENT", "HEADLINE", "SUMMARY", "EXPLAIN")):
return "report_owner"
if any(token in fid for token in ("DATA_", "RAW", "FRESHNESS", "HARNESS", "INGEST", "MISSING", "CONTRACT")):
return "data_owner"
if any(token in fid for token in ("GAS", "ADAPTER", "EXPORT", "RUNTIME", "BUNDLE", "ZIP", "PACKAGE")):
return "release_manager"
if any(token in fid for token in ("CASH", "HEAT", "RISK", "SIZE", "STOP", "TAKE_PROFIT", "PROFIT", "LOSS", "PORTFOLIO", "POSITION", "EXIT", "SELL", "BUY", "ALLOCATION")):
return "quant_owner"
if any(token in fid for token in ("MACRO", "REGIME", "SECTOR", "LIQUIDITY", "SMART_MONEY", "FUNDAMENTAL", "EARNINGS", "GROWTH", "MARKET_SHARE", "MOMENTUM", "FLOW", "ALPHA", "PREDICTION", "PERFORMANCE")):
return "engine_owner"
return "engine_owner"
def main() -> int:
formulas = load_yaml(ROOT / "spec" / "13_formula_registry.yaml").get("formula_registry", {}).get("formulas", {})
owners = load_yaml(ROOT / "spec" / "ownership_map.yaml").get("ownership_map", {})
formula_ids = extract_formula_ids()
output_map = extract_formula_outputs()
missing_owner = [fid for fid in formula_ids if not str(formulas.get(fid, {}).get("owner") or _infer_owner(fid)).strip()]
missing_status = [fid for fid in formula_ids if not str(formulas.get(fid, {}).get("status") or "active").strip()]
missing_owner = [fid for fid in formula_ids if not str(formulas.get(fid, {}).get("owner") or "").strip()]
missing_status = [fid for fid in formula_ids if not str(formulas.get(fid, {}).get("status") or "").strip()]
missing_outputs = [fid for fid, outs in output_map.items() if not outs]
normalized = {
@@ -40,9 +25,9 @@ def main() -> int:
"formulas": [
{
"formula_id": fid,
"owner": formulas.get(fid, {}).get("owner") or _infer_owner(fid),
"status": formulas.get(fid, {}).get("status") or "active",
"output_fields": output_map.get(fid, []) or ["TODO_REQUIRED"],
"owner": formulas.get(fid, {}).get("owner"),
"status": formulas.get(fid, {}).get("status"),
"output_fields": output_map.get(fid, []),
}
for fid in formula_ids
],
@@ -60,7 +45,7 @@ def main() -> int:
"missing_status_list": missing_status[:200],
"missing_output_field_list": missing_outputs[:200],
"owner_map_concepts": len(owners) if isinstance(owners, dict) else 0,
"gate": "PASS",
"gate": "FAIL" if missing_owner or missing_status or missing_outputs else "PASS",
}
out = ROOT / "Temp" / "formula_owner_coverage_v1.json"
out.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8")