Protect Case model admission evidence
This commit is contained in:
parent
4d9ba492b0
commit
7fe25ece93
@ -57,6 +57,7 @@ Blocked by:
|
|||||||
## Hermes Implementation Evidence - 2026-05-31
|
## Hermes Implementation Evidence - 2026-05-31
|
||||||
|
|
||||||
- Hermes commit: `f39d8ab Require admitted Case model pair`.
|
- Hermes commit: `f39d8ab Require admitted Case model pair`.
|
||||||
|
- `f39d8ab` proves admission gating implementation only; it is not a real Case Stage 2 pass.
|
||||||
- The Hermes adapter now requires `CTO_HARNESS_CASE_MODEL_ADMISSION_FILE`.
|
- The Hermes adapter now requires `CTO_HARNESS_CASE_MODEL_ADMISSION_FILE`.
|
||||||
- Env provider/model is only the requested pair; the admission JSON is the authority.
|
- Env provider/model is only the requested pair; the admission JSON is the authority.
|
||||||
- Missing admission blocks before `case_process_started`.
|
- Missing admission blocks before `case_process_started`.
|
||||||
|
|||||||
@ -91,6 +91,7 @@ Real Case Stage 2 remains blocked until a named provider/model is admitted, then
|
|||||||
## Hermes Implementation Evidence - 2026-05-31
|
## Hermes Implementation Evidence - 2026-05-31
|
||||||
|
|
||||||
- Hermes commit: `f39d8ab Require admitted Case model pair`.
|
- Hermes commit: `f39d8ab Require admitted Case model pair`.
|
||||||
|
- `f39d8ab` proves admission gating implementation only; it is not a real Case Stage 2 pass.
|
||||||
- Admission file variable: `CTO_HARNESS_CASE_MODEL_ADMISSION_FILE`.
|
- Admission file variable: `CTO_HARNESS_CASE_MODEL_ADMISSION_FILE`.
|
||||||
- Env provider/model is now a requested pair, not admission authority.
|
- Env provider/model is now a requested pair, not admission authority.
|
||||||
- The admission JSON is the authority for real Case Stage 2 model admission.
|
- The admission JSON is the authority for real Case Stage 2 model admission.
|
||||||
|
|||||||
@ -403,6 +403,28 @@ REQUIRED_MODEL_PROVIDER_ADMISSION_ISSUE_IDS = [
|
|||||||
"CTO-WORK-020",
|
"CTO-WORK-020",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
REQUIRED_MODEL_PROVIDER_ADMISSION_ISSUE_PHRASES = [
|
||||||
|
"f39d8ab Require admitted Case model pair",
|
||||||
|
"`f39d8ab` proves admission gating implementation only; it is not a real Case Stage 2 pass.",
|
||||||
|
"CTO_HARNESS_CASE_MODEL_ADMISSION_FILE",
|
||||||
|
"admission JSON is the authority",
|
||||||
|
"Missing admission blocks before `case_process_started`.",
|
||||||
|
"Mismatched admission blocks before `case_process_started`.",
|
||||||
|
"case_model_provider",
|
||||||
|
"case_model",
|
||||||
|
"case_model_admission_status",
|
||||||
|
"admitted",
|
||||||
|
"missing_admission",
|
||||||
|
"mismatch",
|
||||||
|
"invalid_admission",
|
||||||
|
"not_admitted",
|
||||||
|
"report.md",
|
||||||
|
"Case stdout/stderr",
|
||||||
|
"20260531T235421Z-r1-string-slugify-1875638",
|
||||||
|
"20260531T235448Z-r1-string-slugify-1876884",
|
||||||
|
"`CTO-WORK-020` remains blocked until a provider/model is explicitly approved and real Case Stage 2 produces a pass report.",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def workboard_status(text: str, issue_id: str) -> str | None:
|
def workboard_status(text: str, issue_id: str) -> str | None:
|
||||||
pattern = rf"- id: {re.escape(issue_id)}\n(?: .+\n)*? status: ([^\n]+)"
|
pattern = rf"- id: {re.escape(issue_id)}\n(?: .+\n)*? status: ([^\n]+)"
|
||||||
@ -615,6 +637,10 @@ def main() -> int:
|
|||||||
checked.append(f"model_provider_admission_issue_id:{issue_id}")
|
checked.append(f"model_provider_admission_issue_id:{issue_id}")
|
||||||
if issue_id not in text:
|
if issue_id not in text:
|
||||||
errors.append(f"missing_model_provider_admission_issue_id:{issue_id}")
|
errors.append(f"missing_model_provider_admission_issue_id:{issue_id}")
|
||||||
|
for phrase in REQUIRED_MODEL_PROVIDER_ADMISSION_ISSUE_PHRASES:
|
||||||
|
checked.append(f"model_provider_admission_issue_phrase:{phrase}")
|
||||||
|
if phrase not in text:
|
||||||
|
errors.append(f"missing_model_provider_admission_issue_phrase:{phrase}")
|
||||||
|
|
||||||
board = ROOT / "WORKBOARD.yaml"
|
board = ROOT / "WORKBOARD.yaml"
|
||||||
if board.is_file():
|
if board.is_file():
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user