Files
yao-meta-skill/scripts/description_optimizer_reporting.py
YAO 31ce04c655 Split meta skill CLI and review gates
Merge the beta-ready Yao Meta Skill architecture, report, evidence gate, and release-boundary updates.\n\nRelease boundary: beta/public testing is allowed; formal world-class, fully reviewed, or superiority claims remain blocked until the pending evidence gates are accepted.
2026-06-17 18:43:02 +08:00

142 lines
6.5 KiB
Python

SCRIPT_INTERFACE = "internal-module"
SCRIPT_INTERFACE_REASON = "Imported by optimize_description.py to render description optimization reports."
def render_markdown(report: dict, title: str) -> str:
lines = [
f"# {title}",
"",
f"Winner: `{report['winner']['label']}`",
"",
f"- current tokens: `{report['current_candidate']['estimated_tokens']}`",
f"- winner tokens: `{report['winner']['estimated_tokens']}`",
]
if report["baseline"]:
lines.append(f"- baseline tokens: `{report['baseline']['estimated_tokens']}`")
lines.extend(
[
"",
"## Winner",
"",
report["winner"]["description"],
"",
"## Candidate Ranking",
"",
"| Candidate | Tokens | Dev FP | Dev FN | Dev Near | Holdout FP | Holdout FN |",
"| --- | ---: | ---: | ---: | ---: | ---: | ---: |",
]
)
for candidate in report["candidates"]:
holdout = candidate.get("holdout", {})
lines.append(
f"| `{candidate['label']}` | {candidate['estimated_tokens']} | {candidate['dev']['false_positives']} | {candidate['dev']['false_negatives']} | {candidate['dev']['near_neighbor_pass_rate']} | {holdout.get('false_positives', '-')} | {holdout.get('false_negatives', '-')} |"
)
lines.extend(
[
"",
"## Acceptance Gates",
"",
"| Gate | Winner FP | Winner FN | Current FP | Current FN | Baseline FP | Baseline FN |",
"| --- | ---: | ---: | ---: | ---: | ---: | ---: |",
]
)
for gate_name, gate in (
("Holdout", report["acceptance_gates"]["holdout_non_regression"]),
("Blind Holdout", report["acceptance_gates"]["blind_holdout_non_regression"]),
("Judge Blind Holdout", report["acceptance_gates"]["judge_blind_holdout_non_regression"]),
("Adversarial Holdout", report["acceptance_gates"]["adversarial_holdout_non_regression"]),
):
winner_gate = gate.get("winner") or {}
current_gate = gate.get("current") or {}
baseline_gate = gate.get("baseline") or {}
if not winner_gate and not current_gate and not baseline_gate:
continue
lines.append(
f"| {gate_name} | {winner_gate.get('false_positives', '-')} | {winner_gate.get('false_negatives', '-')} | {current_gate.get('false_positives', '-')} | {current_gate.get('false_negatives', '-')} | {baseline_gate.get('false_positives', '-')} | {baseline_gate.get('false_negatives', '-')} |"
)
lines.extend(
[
"",
"## Calibration",
"",
"| Gate | Winner Gap | Winner Risk | Winner Boundary Rate | Current Gap | Baseline Gap |",
"| --- | ---: | --- | ---: | ---: | ---: |",
]
)
for gate_name, gate in (
("Holdout", report["acceptance_gates"]["holdout_non_regression"]),
("Blind Holdout", report["acceptance_gates"]["blind_holdout_non_regression"]),
("Judge Blind Holdout", report["acceptance_gates"]["judge_blind_holdout_non_regression"]),
("Adversarial Holdout", report["acceptance_gates"]["adversarial_holdout_non_regression"]),
):
winner_calibration = gate.get("winner_calibration") or {}
current_calibration = gate.get("current_calibration") or {}
baseline_calibration = gate.get("baseline_calibration") or {}
if not winner_calibration and not current_calibration and not baseline_calibration:
continue
lines.append(
f"| {gate_name} | {winner_calibration.get('score_gap', '-')} | {winner_calibration.get('risk_band', '-')} | {winner_calibration.get('boundary_case_rate', '-')} | {current_calibration.get('score_gap', '-')} | {baseline_calibration.get('score_gap', '-')} |"
)
lines.extend(
[
"",
"## Judge Blind Summary",
"",
"| Gate | Winner Agreement | Winner Mean Confidence | Current Agreement | Baseline Agreement |",
"| --- | ---: | ---: | ---: | ---: |",
]
)
judge_gate = report["acceptance_gates"]["judge_blind_holdout_non_regression"]
judge_winner = (judge_gate.get("winner") or {}).get("judge_summary") or {}
judge_current = (judge_gate.get("current") or {}).get("judge_summary") or {}
judge_baseline = (judge_gate.get("baseline") or {}).get("judge_summary") or {}
if judge_winner or judge_current or judge_baseline:
lines.append(
f"| Judge Blind Holdout | {judge_winner.get('agreement_rate', '-')} | {judge_winner.get('mean_confidence', '-')} | {judge_current.get('agreement_rate', '-')} | {judge_baseline.get('agreement_rate', '-')} |"
)
lines.extend(
[
"",
"## Family Health",
"",
"| Gate | Winner Clean Families | Winner Weakest Family | Current Clean Families | Baseline Clean Families |",
"| --- | --- | --- | --- | --- |",
]
)
for gate_name, gate in (
("Holdout", report["acceptance_gates"]["holdout_non_regression"]),
("Blind Holdout", report["acceptance_gates"]["blind_holdout_non_regression"]),
("Judge Blind Holdout", report["acceptance_gates"]["judge_blind_holdout_non_regression"]),
("Adversarial Holdout", report["acceptance_gates"]["adversarial_holdout_non_regression"]),
):
winner_health = gate.get("winner_family_health") or {}
current_health = gate.get("current_family_health") or {}
baseline_health = gate.get("baseline_family_health") or {}
if not winner_health and not current_health and not baseline_health:
continue
weakest = winner_health.get("weakest_family") or {}
weakest_label = (
f"{weakest.get('family')} ({weakest.get('errors')} errors)"
if weakest.get("family")
else "-"
)
lines.append(
f"| {gate_name} | {winner_health.get('clean_family_count', '-')}/{winner_health.get('family_count', '-')} | {weakest_label} | {current_health.get('clean_family_count', '-')}/{current_health.get('family_count', '-')} | {baseline_health.get('clean_family_count', '-')}/{baseline_health.get('family_count', '-')} |"
)
lines.extend(
[
"",
"## Selection Logic",
"",
"Ordered by:",
]
)
for item in report["selection_logic"]["priority"]:
lines.append(f"- {item}")
return "\n".join(lines) + "\n"