diff --git a/WORKBOARD.yaml b/WORKBOARD.yaml index 24c7567..1baa9c7 100644 --- a/WORKBOARD.yaml +++ b/WORKBOARD.yaml @@ -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 diff --git a/sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-ISSUES.md b/sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-ISSUES.md index cb8e027..c41c65c 100644 --- a/sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-ISSUES.md +++ b/sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-ISSUES.md @@ -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. diff --git a/sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-PRD.md b/sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-PRD.md index acbf1c4..440853f 100644 --- a/sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-PRD.md +++ b/sot/03-PROTOCOLS/CTO-CASE-PROVIDER-BUILD-PRD.md @@ -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`. diff --git a/tools/validate_cto_child.py b/tools/validate_cto_child.py index a6d7bc9..dfc990b 100644 --- a/tools/validate_cto_child.py +++ b/tools/validate_cto_child.py @@ -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}")