Add first real workflow approval packet
This commit is contained in:
@@ -44,6 +44,7 @@ REQUIRED_FILES = [
|
||||
".sot/03-PROTOCOLS/CTO-HERMES-CONTROL-SURFACE-ISSUES.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",
|
||||
".sot/03-PROTOCOLS/CTO-CASE-PROVIDER-ADMISSION-PRD.md",
|
||||
".sot/03-PROTOCOLS/CTO-CASE-PROVIDER-ADMISSION-ISSUES.md",
|
||||
".sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-PRD.md",
|
||||
@@ -110,6 +111,22 @@ REQUIRED_FIRST_REAL_WORKFLOW_PRD_PHRASES = [
|
||||
REQUIRED_FIRST_REAL_WORKFLOW_ISSUE_IDS = [
|
||||
"CTO-WORK-048",
|
||||
"CTO-WORK-049",
|
||||
"CTO-WORK-050",
|
||||
]
|
||||
|
||||
REQUIRED_FIRST_REAL_WORKFLOW_APPROVAL_PACKET_PHRASES = [
|
||||
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
|
||||
"This packet does not authorize execution.",
|
||||
"`CTO-WORK-049` remains candidate until JP approves the exact Target Repository and task contract.",
|
||||
"/home/svrnty/workspaces/cortex-os/cto-stage5-target-sandbox",
|
||||
".sot/03-PROTOCOLS/CTO-CASE-STAGE5-TARGET-REPOSITORY-ADMISSION.json",
|
||||
"align `src/strings.py` `slugify` behavior",
|
||||
"`src/strings.py`",
|
||||
"`test_strings.py`",
|
||||
"python3 -m pytest -q",
|
||||
"I approve CTO-WORK-049 against /home/svrnty/workspaces/cortex-os/cto-stage5-target-sandbox for the src/strings.py slugify alignment task.",
|
||||
"Without that exact approval, execution remains blocked.",
|
||||
"Runtime default activation remains false.",
|
||||
]
|
||||
|
||||
REQUIRED_PRD_PHRASES = [
|
||||
@@ -978,6 +995,16 @@ def main() -> int:
|
||||
checked.append(f"first_real_workflow_issue_id:{issue_id}")
|
||||
if issue_id not in text:
|
||||
errors.append(f"missing_first_real_workflow_issue_id:{issue_id}")
|
||||
|
||||
first_real_workflow_approval_packet = ROOT / ".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-APPROVAL-PACKET.md"
|
||||
if first_real_workflow_approval_packet.is_file():
|
||||
text = first_real_workflow_approval_packet.read_text(encoding="utf-8")
|
||||
if "core_promotion_status: not-promoted" not in text:
|
||||
errors.append("first_real_workflow_approval_packet_missing_not_promoted_frontmatter")
|
||||
for phrase in REQUIRED_FIRST_REAL_WORKFLOW_APPROVAL_PACKET_PHRASES:
|
||||
checked.append(f"first_real_workflow_approval_packet_phrase:{phrase}")
|
||||
if phrase not in text:
|
||||
errors.append(f"missing_first_real_workflow_approval_packet_phrase:{phrase}")
|
||||
if "core_promotion_status: not-promoted" not in text:
|
||||
errors.append("brief_missing_not_promoted_frontmatter")
|
||||
|
||||
@@ -1561,6 +1588,7 @@ def main() -> int:
|
||||
"CTO-WORK-047": "validated",
|
||||
"CTO-WORK-048": "validated",
|
||||
"CTO-WORK-049": "candidate",
|
||||
"CTO-WORK-050": "validated",
|
||||
}
|
||||
for issue_id, expected in expected_statuses.items():
|
||||
checked.append(f"workboard_status:{issue_id}:{expected}")
|
||||
|
||||
Reference in New Issue
Block a user