Create CTO planning workspace
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Validate the child-local Cortex OS CTO workspace."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
REQUIRED_FILES = [
|
||||
"AGENTS.md",
|
||||
"README.md",
|
||||
"WORKBOARD.yaml",
|
||||
"sot/00-START/CTO-WORKSPACE-INTENT.md",
|
||||
"sot/03-PROTOCOLS/CTO-CASE-BACKEND-BRIEF.md",
|
||||
]
|
||||
|
||||
REQUIRED_BRIEF_PHRASES = [
|
||||
"Cortex governs.",
|
||||
"Hermes controls.",
|
||||
"Case executes.",
|
||||
"Harness proves.",
|
||||
"Core promotes only through SOT route.",
|
||||
"Case is the CTO execution backend, not the CTO authority layer.",
|
||||
"This brief is child-local planning.",
|
||||
]
|
||||
|
||||
|
||||
def main() -> int:
|
||||
checked: list[str] = []
|
||||
errors: list[str] = []
|
||||
|
||||
for rel in REQUIRED_FILES:
|
||||
path = ROOT / rel
|
||||
checked.append(rel)
|
||||
if not path.is_file():
|
||||
errors.append(f"missing_required_file:{rel}")
|
||||
|
||||
brief = ROOT / "sot/03-PROTOCOLS/CTO-CASE-BACKEND-BRIEF.md"
|
||||
if brief.is_file():
|
||||
text = brief.read_text(encoding="utf-8")
|
||||
for phrase in REQUIRED_BRIEF_PHRASES:
|
||||
checked.append(f"brief_phrase:{phrase}")
|
||||
if phrase not in text:
|
||||
errors.append(f"missing_brief_phrase:{phrase}")
|
||||
if "core_promotion_status: not-promoted" not in text:
|
||||
errors.append("brief_missing_not_promoted_frontmatter")
|
||||
|
||||
payload = {
|
||||
"ok": not errors,
|
||||
"validator": "cto-child-v1",
|
||||
"checked": checked,
|
||||
"errors": errors,
|
||||
"warnings": [],
|
||||
}
|
||||
print(json.dumps(payload, indent=2, sort_keys=True))
|
||||
return 0 if not errors else 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user