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

112 lines
3.6 KiB
Python

"""Shared report contracts for approval-gated skill adaptation."""
from typing import Any
SCRIPT_INTERFACE = "internal-module"
SCRIPT_INTERFACE_REASON = "Shared adaptation approval and regression report contract decoration helpers."
APPROVAL_SUMMARY_FIELDS = [
"approval_count",
"active_approval_count",
"pending_review_count",
"applied_count",
"rollback_count",
]
APPROVAL_CONTRACT_FIELDS = [
"approval_required",
"patch_sha256_required",
"allowlisted_targets_required",
"target_file_sha256_required",
"approval_draft_supported",
"dry_run_default",
"writes_repository_files_only_with_apply",
"rollback_required",
]
REGRESSION_SUMMARY_FIELDS = [
"apply_supported",
"attempt_count",
"approval_draft_count",
"applied_count",
"dry_run_count",
"rollback_count",
"regression_run_count",
"regression_pass_count",
"failure_count",
]
APPLY_CONTRACT_FIELDS = [
*APPROVAL_CONTRACT_FIELDS,
"safe_regression_commands_only",
"rollback_on_failure_default",
]
APPROVAL_CONTRACT = {
"approval_required": True,
"patch_sha256_required": True,
"allowlisted_targets_required": True,
"target_file_sha256_required": True,
"approval_draft_supported": True,
"dry_run_default": True,
"writes_repository_files_only_with_apply": True,
"rollback_required": True,
}
APPLY_CONTRACT = {
**APPROVAL_CONTRACT,
"safe_regression_commands_only": True,
"rollback_on_failure_default": True,
}
def top_level_mirrors(
summary: dict[str, Any],
contract: dict[str, Any],
summary_fields: list[str],
contract_fields: list[str],
) -> dict[str, Any]:
mirrored = {key: summary[key] for key in summary_fields if key in summary}
mirrored.update({key: contract[key] for key in contract_fields if key in contract})
return mirrored
def report_contract(name: str, contract_key: str, summary_fields: list[str], contract_fields: list[str]) -> dict[str, Any]:
return {
"schema_version": "1.0",
"contract": name,
"top_level_mirrors_summary": True,
f"top_level_mirrors_{contract_key}": True,
"summary_fields": summary_fields,
f"{contract_key}_fields": contract_fields,
"source_of_truth": ["summary", contract_key],
}
def decorate_approval_ledger(ledger: dict[str, Any]) -> dict[str, Any]:
summary = ledger.get("summary", {}) if isinstance(ledger.get("summary"), dict) else {}
approval_contract = (
ledger.get("approval_contract", {}) if isinstance(ledger.get("approval_contract"), dict) else {}
) or dict(APPROVAL_CONTRACT)
ledger.update(top_level_mirrors(summary, approval_contract, APPROVAL_SUMMARY_FIELDS, APPROVAL_CONTRACT_FIELDS))
ledger["approval_contract"] = approval_contract
ledger["report_contract"] = report_contract(
"adaptation-approval-ledger",
"approval_contract",
APPROVAL_SUMMARY_FIELDS,
APPROVAL_CONTRACT_FIELDS,
)
return ledger
def decorate_regression_report(report: dict[str, Any]) -> dict[str, Any]:
summary = report.get("summary", {}) if isinstance(report.get("summary"), dict) else {}
apply_contract = (
report.get("apply_contract", {}) if isinstance(report.get("apply_contract"), dict) else {}
) or dict(APPLY_CONTRACT)
report.update(top_level_mirrors(summary, apply_contract, REGRESSION_SUMMARY_FIELDS, APPLY_CONTRACT_FIELDS))
report["apply_contract"] = apply_contract
report["report_contract"] = report_contract(
"adaptation-regression-report",
"apply_contract",
REGRESSION_SUMMARY_FIELDS,
APPLY_CONTRACT_FIELDS,
)
return report