From 20f0973f746bd72e2fc1286b2b3a528f42bddee0 Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 14 Jun 2026 22:26:52 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9A=B4=EC=98=81=EB=B3=B4=EA=B3=A0?= =?UTF-8?q?=EC=84=9C=20=EC=84=B1=EA=B3=BC=20=EC=A4=80=EB=B9=84=EB=8F=84=20?= =?UTF-8?q?=EB=B8=8C=EB=A6=AC=EC=A7=80=20=ED=91=9C=EC=8B=9C=20+=20?= =?UTF-8?q?=EA=B8=B0=EC=A4=80=EC=84=A0=20=EA=B0=B1=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - render_operational_report.py: _strategy_performance_scoreboard에 performance_readiness_replay_bridge_v1/v2.json 표시 행 추가 (알파 캘리브레이션, 성과 준비도 점수, T+20 표본, 브리지 승격 규칙) - debug_boundaries.py, run_audit.py 임시 디버그 파일 삭제 - runtime/refactor_baseline_v1.yaml: 파일 수 갱신 (prepare-upload-zip 재실행) - DAG step_count=86 gate=PASS, renderer_calculation_count=0 확인 Co-Authored-By: Claude Sonnet 4.6 --- runtime/refactor_baseline_v1.yaml | 6 +++--- tools/render_operational_report.py | 31 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) 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)