Record Case provider timeout evidence

This commit is contained in:
Svrnty 2026-05-31 19:41:13 -04:00
parent 4fc9b51ab5
commit 5f64af3518
4 changed files with 70 additions and 13 deletions

View File

@ -8,53 +8,53 @@ items:
title: CTO Case Candidate Backend PRD
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-CANDIDATE-BACKEND-PRD.md
owner: ""
owner: jp
- id: CTO-WORK-003
title: Planning Validator Coverage
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-CANDIDATE-BACKEND-ISSUES.md
owner: ""
owner: jp
- id: CTO-WORK-004
title: Harness Evidence Interface Contract
status: validated
source: sot/03-PROTOCOLS/CTO-HARNESS-EVIDENCE-INTERFACE-CONTRACT.md
owner: ""
owner: jp
- id: CTO-WORK-005
title: Case Source Admission Record
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-SOURCE-ADMISSION-RECORD.md
owner: ""
owner: jp
- id: CTO-WORK-006
title: Case Adapter Contract And Eligibility Decision
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-ADAPTER-CONTRACT.md
owner: ""
owner: jp
- id: CTO-WORK-007
title: Case Failure Fixture Matrix
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-FAILURE-FIXTURE-MATRIX.md
owner: ""
owner: jp
- id: CTO-WORK-008
title: Staged Proof Gate Records
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-STAGED-PROOF-GATES.md
owner: ""
owner: jp
- id: CTO-WORK-009
title: Stage 1 Gated Case Engine PRD
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-STAGE1-GATED-ENGINE-PRD.md
owner: ""
owner: jp
- id: CTO-WORK-010
title: Stage 1 Harness Implementation Route
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-STAGE1-GATED-ENGINE-ISSUES.md
owner: ""
owner: jp
- id: CTO-WORK-011
title: Stage 2 Artificial Fixture PRD
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-STAGE2-ARTIFICIAL-FIXTURE-PRD.md
owner: ""
owner: jp
- id: CTO-WORK-012
title: Stage 2 Harness Artificial Fixture Route
status: blocked
@ -64,19 +64,24 @@ items:
title: Case Provider Admission PRD
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-PROVIDER-ADMISSION-PRD.md
owner: ""
owner: jp
- id: CTO-WORK-014
title: Hermes Case CLI Task Adapter Route
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-PROVIDER-ADMISSION-ISSUES.md
owner: ""
owner: jp
- id: CTO-WORK-015
title: Durable Case Provider Build PRD
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-PRD.md
owner: ""
owner: jp
- id: CTO-WORK-016
title: Real Case Provider Stage 2 Run
status: blocked
source: sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-ISSUES.md
owner: jp
- id: CTO-WORK-017
title: Case Provider Timeout Fail-Closed Route
status: validated
source: sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-ISSUES.md
owner: jp

View File

@ -47,3 +47,34 @@ Acceptance:
Blocked by:
- Missing local `bun` executable, unless a prebuilt admitted `dist/ca` is supplied.
## Provider Build Evidence - 2026-05-31
- Reversible Bun bootstrap succeeded under `/tmp/cto-bun`; no global Bun install was required.
- `/tmp/workos-case` source pin remained `7959ac917cdeb0983b4aaa20bb9f42021747fed8`.
- `bun run build:binary` produced `/tmp/workos-case/dist/ca`.
- Built binary digest: `9811f870af2f85616e359d42ba70566c9af08ca20d8660456929a56ec761513f`.
- `/tmp/workos-case/dist/ca --help` identified the executable as Case `ca`.
- `/tmp/workos-case` remains discovery/build evidence only because build modified `src/generated/package-assets.ts`.
- Real Stage 2 run with `CTO_HARNESS_CASE_BIN=/tmp/workos-case/dist/ca` hung and was terminated. It created artifact directory `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260531T233721Z-r1-string-slugify-1814067` without `report.json`.
- `CTO-WORK-016` remains blocked because no real Case Stage 2 pass report exists.
## CTO-WORK-017 - Case Provider Timeout Fail-Closed Route
Status: validated.
Harden the Hermes CTO Case adapter so a hung real Case provider fails closed with normal evidence instead of leaving an orphan artifact directory without `report.json`.
Acceptance:
- Case provider execution is bounded by `CTO_HARNESS_CASE_TIMEOUT_SECONDS`.
- Timeout writes `backend/provider-timeout.txt`.
- Timeout still emits `report.json` through the Harness Evidence Interface.
- `validate-case-provider-adapter.py` checks a sleeping provider path.
- `harness/evals/health.sh --json` passes after merge and includes `provider_timeout_fail_closed`.
- This does not mark real Case Stage 2 as passed.
Validation Evidence:
- Hermes commit: `d23c492 Fail closed on Case provider timeout`.
- Post-merge `harness/evals/health.sh --json` passed.

View File

@ -71,3 +71,14 @@ Create a governed provider build and admission route that can produce or accept
## Success Definition
Stage 2 moves from provider-unavailable blocked status to a real Case pass report while preserving the same harness evidence shape, allowed-write control, artifact digests, no-target-inspection proof, and fail-closed behavior.
## Current Provider Evidence Addendum - 2026-05-31
- Built binary digest observed: `9811f870af2f85616e359d42ba70566c9af08ca20d8660456929a56ec761513f`.
- Hung real-provider artifact directory: `20260531T233721Z-r1-string-slugify-1814067`.
- `CTO-WORK-016` remains blocked because no real Case Stage 2 pass report exists.
- `CTO-WORK-017 - Case Provider Timeout Fail-Closed Route` records the harness hardening response.
- Timeout control: `CTO_HARNESS_CASE_TIMEOUT_SECONDS`.
- Timeout marker: `backend/provider-timeout.txt`.
- Timeout validator check: `provider_timeout_fail_closed`.
- Hermes evidence commit: `d23c492 Fail closed on Case provider timeout`.

View File

@ -326,11 +326,20 @@ REQUIRED_PROVIDER_BUILD_PRD_PHRASES = [
"No Cortex Core, Case source, vendor source, or Target Repository file is mutated by admission.",
"harness/evals/health.sh --json",
"Stage 2 moves from provider-unavailable blocked status to a real Case pass report",
"9811f870af2f85616e359d42ba70566c9af08ca20d8660456929a56ec761513f",
"20260531T233721Z-r1-string-slugify-1814067",
"CTO-WORK-016` remains blocked because no real Case Stage 2 pass report exists",
"CTO-WORK-017 - Case Provider Timeout Fail-Closed Route",
"CTO_HARNESS_CASE_TIMEOUT_SECONDS",
"backend/provider-timeout.txt",
"provider_timeout_fail_closed",
"d23c492 Fail closed on Case provider timeout",
]
REQUIRED_PROVIDER_BUILD_ISSUE_IDS = [
"CTO-WORK-015",
"CTO-WORK-016",
"CTO-WORK-017",
]
@ -563,6 +572,7 @@ def main() -> int:
"CTO-WORK-014": "validated",
"CTO-WORK-015": "validated",
"CTO-WORK-016": "blocked",
"CTO-WORK-017": "validated",
}
for issue_id, expected in expected_statuses.items():
checked.append(f"workboard_status:{issue_id}:{expected}")