Files
yao-meta-skill/scripts/world_class_phase_queue.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

77 lines
3.2 KiB
Python

#!/usr/bin/env python3
"""Build phase-ordered operator queues for world-class evidence collection."""
from collections import defaultdict
from typing import Any
SCRIPT_INTERFACE = "internal-module"
SCRIPT_INTERFACE_REASON = "Imported by prepare_world_class_submission_kit.py to group repair rows into an operator execution queue."
PHASE_LABELS = {
"select-evidence": "Select evidence",
"prepare-draft": "Prepare draft",
"unblock-access": "Unblock access",
"attach-artifacts": "Attach artifacts",
"collect-source": "Collect source",
"repair": "Repair",
}
def _phase_sort_key(row: dict[str, Any]) -> tuple[int, str, str]:
return (
int(row.get("priority", 90) or 90),
str(row.get("evidence_key", "")),
str(row.get("target", "")),
)
def build_phase_queue(repair_rows: list[dict[str, Any]]) -> list[dict[str, Any]]:
"""Group repair rows by execution phase without changing evidence acceptance."""
grouped: dict[str, list[dict[str, Any]]] = defaultdict(list)
for row in sorted(repair_rows, key=_phase_sort_key):
phase = str(row.get("phase", "repair") or "repair")
grouped[phase].append(row)
queue: list[dict[str, Any]] = []
for phase_rows in sorted(grouped.values(), key=lambda rows: _phase_sort_key(rows[0])):
first = phase_rows[0]
phase = str(first.get("phase", "repair") or "repair")
blocked_rows = [row for row in phase_rows if row.get("status") != "ready"]
owners = sorted({str(row.get("owner", "")).strip() for row in phase_rows if str(row.get("owner", "")).strip()})
evidence_keys = sorted(
{str(row.get("evidence_key", "")).strip() for row in phase_rows if str(row.get("evidence_key", "")).strip()}
)
queue.append(
{
"phase": phase,
"label": PHASE_LABELS.get(phase, phase.replace("-", " ").title()),
"priority": int(first.get("priority", 90) or 90),
"status": "blocked" if blocked_rows else "ready",
"blocked_count": len(blocked_rows),
"row_count": len(phase_rows),
"owners": owners,
"evidence_keys": evidence_keys,
"next_action_id": first.get("action_id", ""),
"next_action": first.get("next_action", ""),
"verification_command": first.get("verification_command", ""),
"counts_as_completion": False,
"rows": phase_rows,
}
)
return queue
def summarize_phase_queue(queue: list[dict[str, Any]]) -> dict[str, Any]:
next_item = next((item for item in queue if item.get("status") != "ready"), queue[0] if queue else {})
return {
"phase_queue_count": len(queue),
"phase_queue_blocked_count": sum(1 for item in queue if item.get("status") != "ready"),
"phase_queue_row_count": sum(int(item.get("row_count", 0) or 0) for item in queue),
"phase_queue_next_phase": next_item.get("phase", ""),
"phase_queue_next_action_id": next_item.get("next_action_id", ""),
"phase_queue_next_command": next_item.get("verification_command", ""),
"phase_queue_counts_as_completion": False,
}