diff --git a/runtime/refactor_baseline_v1.yaml b/runtime/refactor_baseline_v1.yaml index b71d776..195dd39 100644 --- a/runtime/refactor_baseline_v1.yaml +++ b/runtime/refactor_baseline_v1.yaml @@ -1,9 +1,9 @@ { "formula_id": "AUDIT_REPOSITORY_ENTROPY_V2", "gate": "PASS", - "total_file_count": 1693, + "total_file_count": 1697, "package_script_count": 17, - "temp_json_count": 155, + "temp_json_count": 159, "budget": { "schema_version": "repository_entropy_budget.v1", "max_total_files": 2200, @@ -15,5 +15,5 @@ "keep package scripts within release envelope" ] }, - "source_zip_sha256": "dcc27d38243ebb495b2eee109aaa5c820d7d097010e5549a1e47960a1e8d668f" + "source_zip_sha256": "06621508ea3846a5c8aba634a3901c105d4d46ed84148d5886d063d624945b6e" } \ No newline at end of file diff --git a/tools/render_operational_report.py b/tools/render_operational_report.py index 9eeffe4..de4fb1e 100644 --- a/tools/render_operational_report.py +++ b/tools/render_operational_report.py @@ -871,6 +871,20 @@ def _sell_priority_decision_table(hctx: dict, se: list) -> str: def _strategy_performance_scoreboard(hctx: dict, se: list) -> str: + prb_path = ROOT / "Temp" / "performance_readiness_replay_bridge_v1.json" + prb2_path = ROOT / "Temp" / "performance_readiness_replay_bridge_v2.json" + prb = {} + if prb_path.exists(): + try: + prb = json.loads(prb_path.read_text(encoding="utf-8")) + except Exception: + prb = {} + prb2 = {} + if prb2_path.exists(): + try: + prb2 = json.loads(prb2_path.read_text(encoding="utf-8")) + except Exception: + prb2 = {} rows = [ ("성과 레이블", hctx.get("performance_label", "")), ("성과 배수", hctx.get("performance_multiplier", "")), @@ -887,6 +901,23 @@ def _strategy_performance_scoreboard(hctx: dict, se: list) -> str: ("의사결정 증거 게이트", sel.get("decision_evidence_gate", "")), ("결과 품질 점수", sel.get("outcome_quality_score", "")), ] + if isinstance(prb, dict) and prb: + live = prb.get("live") if isinstance(prb.get("live"), dict) else {} + replay = prb.get("replay_informational") if isinstance(prb.get("replay_informational"), dict) else {} + rows += [ + ("알파 캘리브레이션", prb.get("readiness_gate", prb.get("gate", ""))), + ("성과 준비도 점수", prb.get("performance_readiness_score", "")), + ("실운용 T+20 표본", live.get("t20_count", "")), + ("실운용 T+20 판정", live.get("sample_gate", "")), + ("리플레이 T+20 표본", replay.get("t20_count", "")), + ("리플레이 참고", replay.get("note", "")), + ] + if isinstance(prb2, dict) and prb2: + rows += [ + ("브리지 승격 규칙", prb2.get("promotion_rule", "")), + ("브리지 승격 가능", prb2.get("promotion_allowed", "")), + ("브리지 소스 유형", ", ".join(f"{k}:{v}" for k, v in (prb2.get("source_type") or {}).items()) if isinstance(prb2.get("source_type"), dict) else ""), + ] return _kv(rows)