feat: 운영보고서 성과 준비도 브리지 표시 + 기준선 갱신

- 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 <noreply@anthropic.com>
This commit is contained in:
2026-06-14 22:26:52 +09:00
parent f530ceed58
commit 20f0973f74
2 changed files with 34 additions and 3 deletions
+3 -3
View File
@@ -1,9 +1,9 @@
{ {
"formula_id": "AUDIT_REPOSITORY_ENTROPY_V2", "formula_id": "AUDIT_REPOSITORY_ENTROPY_V2",
"gate": "PASS", "gate": "PASS",
"total_file_count": 1693, "total_file_count": 1697,
"package_script_count": 17, "package_script_count": 17,
"temp_json_count": 155, "temp_json_count": 159,
"budget": { "budget": {
"schema_version": "repository_entropy_budget.v1", "schema_version": "repository_entropy_budget.v1",
"max_total_files": 2200, "max_total_files": 2200,
@@ -15,5 +15,5 @@
"keep package scripts within release envelope" "keep package scripts within release envelope"
] ]
}, },
"source_zip_sha256": "dcc27d38243ebb495b2eee109aaa5c820d7d097010e5549a1e47960a1e8d668f" "source_zip_sha256": "06621508ea3846a5c8aba634a3901c105d4d46ed84148d5886d063d624945b6e"
} }
+31
View File
@@ -871,6 +871,20 @@ def _sell_priority_decision_table(hctx: dict, se: list) -> str:
def _strategy_performance_scoreboard(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 = [ rows = [
("성과 레이블", hctx.get("performance_label", "")), ("성과 레이블", hctx.get("performance_label", "")),
("성과 배수", hctx.get("performance_multiplier", "")), ("성과 배수", hctx.get("performance_multiplier", "")),
@@ -887,6 +901,23 @@ def _strategy_performance_scoreboard(hctx: dict, se: list) -> str:
("의사결정 증거 게이트", sel.get("decision_evidence_gate", "")), ("의사결정 증거 게이트", sel.get("decision_evidence_gate", "")),
("결과 품질 점수", sel.get("outcome_quality_score", "")), ("결과 품질 점수", 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) return _kv(rows)