Plan Stage 6 real governed refresh
This commit is contained in:
@@ -40,6 +40,8 @@ REQUIRED_FILES = [
|
||||
".sot/03-PROTOCOLS/CTO-CASE-STAGE5-TARGET-REPOSITORY-ADMISSION.json",
|
||||
".sot/03-PROTOCOLS/CTO-CASE-STAGE6-CANDIDATE-DEFAULT-PRD.md",
|
||||
".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-HERMES-CONTROL-SURFACE-PRD.md",
|
||||
".sot/03-PROTOCOLS/CTO-HERMES-CONTROL-SURFACE-ISSUES.md",
|
||||
".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-PRD.md",
|
||||
@@ -129,6 +131,23 @@ REQUIRED_FIRST_REAL_WORKFLOW_APPROVAL_PACKET_PHRASES = [
|
||||
"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",
|
||||
"real pass report",
|
||||
"Stage 5 proof",
|
||||
"report shape",
|
||||
"event validity",
|
||||
"allowed-path compliance",
|
||||
"failure closure",
|
||||
"artifact completeness",
|
||||
"forbidden-action closure",
|
||||
"operator acceptance",
|
||||
"runtime default activation false",
|
||||
"read-only",
|
||||
"without mutating a Target Repository",
|
||||
]
|
||||
|
||||
REQUIRED_PRD_PHRASES = [
|
||||
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
|
||||
"Case Candidate Backend",
|
||||
@@ -1008,6 +1027,31 @@ def main() -> int:
|
||||
if "core_promotion_status: not-promoted" not in text:
|
||||
errors.append("brief_missing_not_promoted_frontmatter")
|
||||
|
||||
stage6_real_refresh_prd = ROOT / ".sot/03-PROTOCOLS/CTO-CASE-STAGE6-REAL-GOVERNED-REFRESH-PRD.md"
|
||||
if stage6_real_refresh_prd.is_file():
|
||||
text = stage6_real_refresh_prd.read_text(encoding="utf-8")
|
||||
if "core_promotion_status: not-promoted" not in text:
|
||||
errors.append("stage6_real_refresh_prd_missing_not_promoted_frontmatter")
|
||||
for phrase in REQUIRED_STAGE6_REAL_REFRESH_PHRASES:
|
||||
checked.append(f"stage6_real_refresh_prd_phrase:{phrase}")
|
||||
if phrase not in text:
|
||||
errors.append(f"missing_stage6_real_refresh_prd_phrase:{phrase}")
|
||||
|
||||
stage6_real_refresh_issues = ROOT / ".sot/03-PROTOCOLS/CTO-CASE-STAGE6-REAL-GOVERNED-REFRESH-ISSUES.md"
|
||||
if stage6_real_refresh_issues.is_file():
|
||||
text = stage6_real_refresh_issues.read_text(encoding="utf-8")
|
||||
if "core_promotion_status: not-promoted" not in text:
|
||||
errors.append("stage6_real_refresh_issues_missing_not_promoted_frontmatter")
|
||||
for phrase in [
|
||||
"CTO-WORK-054",
|
||||
"CTO-WORK-055",
|
||||
"runtime_default_activation: false",
|
||||
"harness/evals/health.sh --json",
|
||||
]:
|
||||
checked.append(f"stage6_real_refresh_issue_phrase:{phrase}")
|
||||
if phrase not in text:
|
||||
errors.append(f"missing_stage6_real_refresh_issue_phrase:{phrase}")
|
||||
|
||||
prd = ROOT / ".sot/03-PROTOCOLS/CTO-CASE-CANDIDATE-BACKEND-PRD.md"
|
||||
if prd.is_file():
|
||||
text = prd.read_text(encoding="utf-8")
|
||||
@@ -1592,6 +1636,8 @@ def main() -> int:
|
||||
"CTO-WORK-051": "blocked",
|
||||
"CTO-WORK-052": "validated",
|
||||
"CTO-WORK-053": "validated",
|
||||
"CTO-WORK-054": "validated",
|
||||
"CTO-WORK-055": "candidate",
|
||||
}
|
||||
for issue_id, expected in expected_statuses.items():
|
||||
checked.append(f"workboard_status:{issue_id}:{expected}")
|
||||
|
||||
Reference in New Issue
Block a user