Track Spark endpoint config blocker

This commit is contained in:
Svrnty
2026-05-31 22:17:47 -04:00
parent d9edf8a715
commit 6762403d51
10 changed files with 216 additions and 2 deletions
+57
View File
@@ -41,6 +41,8 @@ REQUIRED_FILES = [
".sot/03-PROTOCOLS/CTO-CASE-PROVIDER-DECISION-RECORD.md",
".sot/03-PROTOCOLS/CTO-CASE-MODEL-PROVIDER-ADMISSION.openai-codex-gpt-5.5.json",
".sot/03-PROTOCOLS/CTO-CASE-MODEL-PROVIDER-ADMISSION.qwen-local-qwen3.6-35b-a3b.json",
".sot/03-PROTOCOLS/CTO-CASE-SPARK-ENDPOINT-CONFIG-PRD.md",
".sot/03-PROTOCOLS/CTO-CASE-SPARK-ENDPOINT-CONFIG-ISSUES.md",
".sot/03-PROTOCOLS/CTO-CASE-AGENT-PROTOCOL-BLOCKER.md",
]
@@ -663,6 +665,42 @@ REQUIRED_PROVIDER_DECISION_RECORD_PHRASES = [
"Existing evidence paths and commits are referenced only; runtime evidence is not copied into this record.",
]
REQUIRED_SPARK_ENDPOINT_CONFIG_PRD_PHRASES = [
"Local planning SOT only. Not a Core Protocol. Not active Core authority.",
"`qwen-local` / `qwen3.6-35b-a3b` is now the selected primary Case provider policy",
"CTO_HARNESS_CASE_LOCAL_BASE_URL",
"missing. The harness correctly blocks before `case_process_started`",
"Treat the endpoint value as runtime config, not SOT content.",
"Do not store endpoint secrets or credential values in SOT, argv, task file, backend logs, report, trace, generated config, or commit.",
"Require missing endpoint config to write `backend/provider-local-config-unavailable.txt`.",
"Keep `CTO-WORK-020`, `CTO-WORK-016`, `CTO-WORK-022`, and Stage 2 blocked until real pass evidence exists.",
"endpoint presence is not Stage 2 pass evidence",
"configured endpoint alone does not validate `CTO-WORK-016`, `CTO-WORK-020`, `CTO-WORK-022`, or `CTO-WORK-028`",
"no Target Repository path may be inspected or copied",
"Harness Evidence Interface",
"same-run fake baseline comparison required",
]
REQUIRED_SPARK_ENDPOINT_CONFIG_ISSUE_PHRASES = [
"CTO-WORK-030 - Spark Local Provider Endpoint Config",
"Status: blocked.",
"CTO_HARNESS_CASE_LOCAL_BASE_URL",
"Missing endpoint config blocks before `case_process_started`.",
"Missing endpoint config writes `backend/provider-local-config-unavailable.txt`.",
"Endpoint values are not written to SOT, task file, argv, backend logs, report, trace, generated config, or commit.",
"Harness report proves `case_model_provider`: `qwen-local`.",
"Harness report proves `case_model`: `qwen3.6-35b-a3b`.",
"Harness report proves `case_model_admission_status`: `admitted`.",
"Harness report proves no fallback to `anthropic` or `claude-sonnet-4-6`.",
"Real Case Stage 2 pass evidence exists only through the Harness Evidence Interface.",
"A configured endpoint alone does not validate `CTO-WORK-016`, `CTO-WORK-020`, `CTO-WORK-022`, or `CTO-WORK-028`.",
"No Target Repository path may be inspected or copied.",
"Same-run fake baseline comparison remains required for any pass claim.",
"`CTO-WORK-016` remains blocked until real Case Stage 2 pass evidence exists.",
"`CTO-WORK-022` remains blocked until explicit endpoint config and real Case Stage 2 pass evidence exist.",
"Non-secret readiness check on 2026-06-01 showed `CTO_HARNESS_CASE_LOCAL_BASE_URL=missing`.",
]
def workboard_status(text: str, issue_id: str) -> str | None:
pattern = rf"- id: {re.escape(issue_id)}\n(?: .+\n)*? status: ([^\n]+)"
@@ -716,6 +754,22 @@ def main() -> int:
if issue_id not in text:
errors.append(f"missing_issue_id:{issue_id}")
spark_endpoint_prd = ROOT / ".sot/03-PROTOCOLS/CTO-CASE-SPARK-ENDPOINT-CONFIG-PRD.md"
if spark_endpoint_prd.is_file():
text = spark_endpoint_prd.read_text(encoding="utf-8")
for phrase in REQUIRED_SPARK_ENDPOINT_CONFIG_PRD_PHRASES:
checked.append(f"spark_endpoint_config_prd_phrase:{phrase}")
if phrase not in text:
errors.append(f"missing_spark_endpoint_config_prd_phrase:{phrase}")
spark_endpoint_issues = ROOT / ".sot/03-PROTOCOLS/CTO-CASE-SPARK-ENDPOINT-CONFIG-ISSUES.md"
if spark_endpoint_issues.is_file():
text = spark_endpoint_issues.read_text(encoding="utf-8")
for phrase in REQUIRED_SPARK_ENDPOINT_CONFIG_ISSUE_PHRASES:
checked.append(f"spark_endpoint_config_issue_phrase:{phrase}")
if phrase not in text:
errors.append(f"missing_spark_endpoint_config_issue_phrase:{phrase}")
evidence_interface = ROOT / ".sot/03-PROTOCOLS/CTO-HARNESS-EVIDENCE-INTERFACE-CONTRACT.md"
if evidence_interface.is_file():
text = evidence_interface.read_text(encoding="utf-8")
@@ -1053,6 +1107,7 @@ def main() -> int:
"CTO-WORK-026": "validated",
"CTO-WORK-027": "validated",
"CTO-WORK-029": "validated",
"CTO-WORK-030": "blocked",
}
for issue_id, expected in expected_statuses.items():
checked.append(f"workboard_status:{issue_id}:{expected}")
@@ -1105,6 +1160,8 @@ def main() -> int:
errors.append("workboard_missing_openai_codex_admission_json_source")
if "CTO-CASE-MODEL-PROVIDER-ADMISSION.qwen-local-qwen3.6-35b-a3b.json" not in text:
errors.append("workboard_missing_qwen_local_admission_json_source")
if "CTO-CASE-SPARK-ENDPOINT-CONFIG-ISSUES.md" not in text:
errors.append("workboard_missing_spark_endpoint_config_issues_source")
payload = {
"ok": not errors,