Record Stage 6 real refresh evidence

This commit is contained in:
Svrnty
2026-06-01 07:20:39 -04:00
parent 0e7d5d00ce
commit 076458be4f
3 changed files with 121 additions and 2 deletions
+31 -1
View File
@@ -42,6 +42,7 @@ REQUIRED_FILES = [
".sot/03-PROTOCOLS/CTO-CASE-STAGE6-CANDIDATE-DEFAULT-ISSUES.md",
".sot/03-PROTOCOLS/CTO-CASE-STAGE6-REAL-GOVERNED-REFRESH-PRD.md",
".sot/03-PROTOCOLS/CTO-CASE-STAGE6-REAL-GOVERNED-REFRESH-ISSUES.md",
".sot/03-PROTOCOLS/CTO-CASE-STAGE6-REAL-GOVERNED-REFRESH-EVIDENCE.md",
".sot/03-PROTOCOLS/CTO-HERMES-CONTROL-SURFACE-PRD.md",
".sot/03-PROTOCOLS/CTO-HERMES-CONTROL-SURFACE-ISSUES.md",
".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-PRD.md",
@@ -131,6 +132,25 @@ REQUIRED_FIRST_REAL_WORKFLOW_APPROVAL_PACKET_PHRASES = [
"Runtime default activation remains false.",
]
REQUIRED_STAGE6_REAL_REFRESH_EVIDENCE_PHRASES = [
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
"CTO-WORK-055",
"2b6e114 Add Stage 6 real governed refresh",
"validate-case-stage6-real-refresh.py --json",
"stage6-real-governed-refresh-comparison.json",
"target repository read-only check passed",
"report shape passed",
"event validity passed",
"allowed-path compliance passed",
"prior Stage 6 failure closure passed",
"artifact completeness passed",
"forbidden-action closure passed",
"operator acceptance passed",
"runtime default activation: false",
"no target repository mutation attempted",
"Runtime default activation remains false.",
]
REQUIRED_STAGE6_REAL_REFRESH_PHRASES = [
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
"CTO-WORK-049",
@@ -1052,6 +1072,16 @@ def main() -> int:
if phrase not in text:
errors.append(f"missing_stage6_real_refresh_issue_phrase:{phrase}")
stage6_real_refresh_evidence = ROOT / ".sot/03-PROTOCOLS/CTO-CASE-STAGE6-REAL-GOVERNED-REFRESH-EVIDENCE.md"
if stage6_real_refresh_evidence.is_file():
text = stage6_real_refresh_evidence.read_text(encoding="utf-8")
if "core_promotion_status: not-promoted" not in text:
errors.append("stage6_real_refresh_evidence_missing_not_promoted_frontmatter")
for phrase in REQUIRED_STAGE6_REAL_REFRESH_EVIDENCE_PHRASES:
checked.append(f"stage6_real_refresh_evidence_phrase:{phrase}")
if phrase not in text:
errors.append(f"missing_stage6_real_refresh_evidence_phrase:{phrase}")
prd = ROOT / ".sot/03-PROTOCOLS/CTO-CASE-CANDIDATE-BACKEND-PRD.md"
if prd.is_file():
text = prd.read_text(encoding="utf-8")
@@ -1637,7 +1667,7 @@ def main() -> int:
"CTO-WORK-052": "validated",
"CTO-WORK-053": "validated",
"CTO-WORK-054": "validated",
"CTO-WORK-055": "candidate",
"CTO-WORK-055": "validated",
}
for issue_id, expected in expected_statuses.items():
checked.append(f"workboard_status:{issue_id}:{expected}")