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