Close CTO architecture brief

This commit is contained in:
Svrnty
2026-06-01 06:27:24 -04:00
parent 5d76cee40e
commit e2228a9742
6 changed files with 218 additions and 2 deletions
+53
View File
@@ -17,6 +17,8 @@ REQUIRED_FILES = [
"CONTEXT.md",
".sot/00-START/CTO-WORKSPACE-INTENT.md",
".sot/03-PROTOCOLS/CTO-CASE-BACKEND-BRIEF.md",
".sot/03-PROTOCOLS/CTO-ARCHITECTURE-BRIEF-CLOSEOUT-PRD.md",
".sot/03-PROTOCOLS/CTO-ARCHITECTURE-BRIEF-CLOSEOUT-ISSUES.md",
".sot/03-PROTOCOLS/CTO-CASE-CANDIDATE-BACKEND-PRD.md",
".sot/03-PROTOCOLS/CTO-CASE-CANDIDATE-BACKEND-ISSUES.md",
".sot/03-PROTOCOLS/CTO-HARNESS-EVIDENCE-INTERFACE-CONTRACT.md",
@@ -66,6 +68,26 @@ REQUIRED_BRIEF_PHRASES = [
"Core promotes only through SOT route.",
"Case is the candidate CTO execution backend, not the CTO authority layer.",
"This brief is child-local planning.",
"Status: validated by later child-local CTO evidence.",
"Stage 1 through Stage 6 proof gates are recorded as validated in `WORKBOARD.yaml`.",
"`CTO-WORK-043` records Stage 6 candidate-default comparison evidence.",
"`CTO-WORK-045` records Hermes Control Surface evidence for Harness-backed visibility and replay.",
"Runtime default activation remains false until a later governed route changes it.",
]
REQUIRED_ARCHITECTURE_CLOSEOUT_PRD_PHRASES = [
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
"`CTO-WORK-001` remains `candidate`",
"Close `CTO-WORK-001` as validated by referencing later evidence instead of changing authority.",
"Stage 1 through Stage 6 validation",
"`CTO-WORK-043` Stage 6 candidate-default comparison",
"`CTO-WORK-045` Hermes Control Surface validation",
"runtime default activation remains false",
]
REQUIRED_ARCHITECTURE_CLOSEOUT_ISSUE_IDS = [
"CTO-WORK-046",
"CTO-WORK-047",
]
REQUIRED_PRD_PHRASES = [
@@ -882,10 +904,34 @@ def main() -> int:
brief = ROOT / ".sot/03-PROTOCOLS/CTO-CASE-BACKEND-BRIEF.md"
if brief.is_file():
text = brief.read_text(encoding="utf-8")
if "status: validated" not in text:
errors.append("brief_missing_validated_frontmatter")
for phrase in REQUIRED_BRIEF_PHRASES:
checked.append(f"brief_phrase:{phrase}")
if phrase not in text:
errors.append(f"missing_brief_phrase:{phrase}")
architecture_closeout_prd = ROOT / ".sot/03-PROTOCOLS/CTO-ARCHITECTURE-BRIEF-CLOSEOUT-PRD.md"
if architecture_closeout_prd.is_file():
text = architecture_closeout_prd.read_text(encoding="utf-8")
if "core_promotion_status: not-promoted" not in text:
errors.append("architecture_closeout_prd_missing_not_promoted_frontmatter")
for phrase in REQUIRED_ARCHITECTURE_CLOSEOUT_PRD_PHRASES:
checked.append(f"architecture_closeout_prd_phrase:{phrase}")
if phrase not in text:
errors.append(f"missing_architecture_closeout_prd_phrase:{phrase}")
architecture_closeout_issues = ROOT / ".sot/03-PROTOCOLS/CTO-ARCHITECTURE-BRIEF-CLOSEOUT-ISSUES.md"
if architecture_closeout_issues.is_file():
text = architecture_closeout_issues.read_text(encoding="utf-8")
if "core_promotion_status: not-promoted" not in text:
errors.append("architecture_closeout_issues_missing_not_promoted_frontmatter")
if "Local planning SOT only. Not a Core Protocol. Not active Core authority." not in text:
errors.append("architecture_closeout_issues_missing_local_planning_notice")
for issue_id in REQUIRED_ARCHITECTURE_CLOSEOUT_ISSUE_IDS:
checked.append(f"architecture_closeout_issue_id:{issue_id}")
if issue_id not in text:
errors.append(f"missing_architecture_closeout_issue_id:{issue_id}")
if "core_promotion_status: not-promoted" not in text:
errors.append("brief_missing_not_promoted_frontmatter")
@@ -1394,6 +1440,10 @@ def main() -> int:
checked.append(f"workboard_id:{issue_id}")
if issue_id not in text:
errors.append(f"missing_workboard_id:{issue_id}")
for issue_id in REQUIRED_ARCHITECTURE_CLOSEOUT_ISSUE_IDS:
checked.append(f"workboard_id:{issue_id}")
if issue_id not in text:
errors.append(f"missing_workboard_id:{issue_id}")
for issue_id in REQUIRED_PROVIDER_ADMISSION_ISSUE_IDS:
checked.append(f"workboard_id:{issue_id}")
if issue_id not in text:
@@ -1415,6 +1465,7 @@ def main() -> int:
if issue_id not in text:
errors.append(f"missing_workboard_id:{issue_id}")
expected_statuses = {
"CTO-WORK-001": "validated",
"CTO-WORK-002": "validated",
"CTO-WORK-003": "validated",
"CTO-WORK-004": "validated",
@@ -1456,6 +1507,8 @@ def main() -> int:
"CTO-WORK-043": "validated",
"CTO-WORK-044": "validated",
"CTO-WORK-045": "validated",
"CTO-WORK-046": "validated",
"CTO-WORK-047": "validated",
}
for issue_id, expected in expected_statuses.items():
checked.append(f"workboard_status:{issue_id}:{expected}")