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:
@@ -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"
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user