Record Hermes approval packet evidence

This commit is contained in:
Svrnty
2026-06-01 07:46:58 -04:00
parent 97a00a4fe6
commit 61b6cffa34
3 changed files with 88 additions and 2 deletions
+30 -1
View File
@@ -59,6 +59,7 @@ REQUIRED_FILES = [
".sot/03-PROTOCOLS/CTO-HERMES-APPROVAL-STATE-EVIDENCE.md",
".sot/03-PROTOCOLS/CTO-HERMES-APPROVAL-PACKET-PRD.md",
".sot/03-PROTOCOLS/CTO-HERMES-APPROVAL-PACKET-ISSUES.md",
".sot/03-PROTOCOLS/CTO-HERMES-APPROVAL-PACKET-EVIDENCE.md",
".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-PRD.md",
".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-ISSUES.md",
".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-APPROVAL-PACKET.md",
@@ -259,6 +260,24 @@ REQUIRED_HERMES_APPROVAL_PACKET_PHRASES = [
"Hermes prepares approval text; JP remains the approver.",
]
REQUIRED_HERMES_APPROVAL_PACKET_EVIDENCE_PHRASES = [
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
"CTO-WORK-065",
"a109448 Add CTO approval packet surface",
"approval_packet",
"approval_command_text",
"required evidence paths",
"allowed paths",
"blocked actions",
"not executable",
"5 passed",
"107 passed",
"CONNECTION-MAP.md is fresh",
"Case runtime default active: false",
"target repository mutation: false",
"Hermes prepares approval text; JP remains the approver.",
]
REQUIRED_HERMES_REAL_REFRESH_CONTROL_REPLAY_EVIDENCE_PHRASES = [
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
"CTO-WORK-057",
@@ -1362,6 +1381,16 @@ def main() -> int:
if phrase not in text:
errors.append(f"missing_hermes_approval_packet_issue_phrase:{phrase}")
hermes_approval_packet_evidence = ROOT / ".sot/03-PROTOCOLS/CTO-HERMES-APPROVAL-PACKET-EVIDENCE.md"
if hermes_approval_packet_evidence.is_file():
text = hermes_approval_packet_evidence.read_text(encoding="utf-8")
if "core_promotion_status: not-promoted" not in text:
errors.append("hermes_approval_packet_evidence_missing_not_promoted_frontmatter")
for phrase in REQUIRED_HERMES_APPROVAL_PACKET_EVIDENCE_PHRASES:
checked.append(f"hermes_approval_packet_evidence_phrase:{phrase}")
if phrase not in text:
errors.append(f"missing_hermes_approval_packet_evidence_phrase:{phrase}")
hermes_real_refresh_control_replay_evidence = ROOT / ".sot/03-PROTOCOLS/CTO-HERMES-REAL-REFRESH-CONTROL-REPLAY-EVIDENCE.md"
if hermes_real_refresh_control_replay_evidence.is_file():
text = hermes_real_refresh_control_replay_evidence.read_text(encoding="utf-8")
@@ -1977,7 +2006,7 @@ def main() -> int:
"CTO-WORK-062": "validated",
"CTO-WORK-063": "validated",
"CTO-WORK-064": "validated",
"CTO-WORK-065": "candidate",
"CTO-WORK-065": "validated",
}
for issue_id, expected in expected_statuses.items():
checked.append(f"workboard_status:{issue_id}:{expected}")