diff --git a/.sot/03-PROTOCOLS/CTO-CASE-STAGE4-DISPOSABLE-SANDBOX-ISSUES.md b/.sot/03-PROTOCOLS/CTO-CASE-STAGE4-DISPOSABLE-SANDBOX-ISSUES.md index 2f0e612..68f5ff6 100644 --- a/.sot/03-PROTOCOLS/CTO-CASE-STAGE4-DISPOSABLE-SANDBOX-ISSUES.md +++ b/.sot/03-PROTOCOLS/CTO-CASE-STAGE4-DISPOSABLE-SANDBOX-ISSUES.md @@ -51,7 +51,7 @@ Done evidence: PRD, issue artifact, validator JSON, clean worktree, commit. Type: AFK -Status: blocked. +Status: validated. Blocked by: CTO-WORK-035 @@ -61,25 +61,34 @@ What to build: In `/home/svrnty/workspaces/hermes/cto/harness`, implement the St Acceptance criteria: -- [ ] `case` remains disabled by default. -- [ ] `CTO_HARNESS_ALLOW_CASE=1` remains required. -- [ ] `CTO_HARNESS_CASE_STAGE=4` is required before disposable sandbox Case execution. -- [ ] Missing Stage 4 gate emits blocked evidence and does not run Case. -- [ ] Approval denied blocks before mutation. -- [ ] Approval granted is recorded before mutation. -- [ ] Branch policy proof is recorded. -- [ ] Case mutates only the disposable repository. -- [ ] No Target Repository path is inspected or copied. -- [ ] No push, merge, deploy, close, PR open, or public publication occurs by default. -- [ ] Required artifacts include approval proof, branch proof, sandbox disposal or retention note, `report.json`, `report.md`, `events.normalized.jsonl`, `trace.jsonl`, `patch.diff`, `test.log`, and backend logs. -- [ ] Failure fixtures fail closed for approval denied, reviewer reject, timeout, provider unavailable, dirty ending tree, and disallowed file. -- [ ] Fake remains the default validation lane and broad health remains green after focused Stage 4 validation. +- [x] `case` remains disabled by default. +- [x] `CTO_HARNESS_ALLOW_CASE=1` remains required. +- [x] `CTO_HARNESS_CASE_STAGE=4` is required before disposable sandbox Case execution. +- [x] Missing Stage 4 gate emits blocked evidence and does not run Case. +- [x] Approval denied blocks before mutation. +- [x] Approval granted is recorded before mutation. +- [x] Branch policy proof is recorded. +- [x] Case mutates only the disposable repository. +- [x] No Target Repository path is inspected or copied. +- [x] No push, merge, deploy, close, PR open, or public publication occurs by default. +- [x] Required artifacts include approval proof, branch proof, sandbox disposal or retention note, `report.json`, `report.md`, `events.normalized.jsonl`, `trace.jsonl`, `patch.diff`, `test.log`, and backend logs. +- [x] Failure fixtures fail closed for approval denied, reviewer reject, timeout, provider unavailable, dirty ending tree, and disallowed file. +- [x] Fake remains the default validation lane and broad health remains green after focused Stage 4 validation. Allowed files: Hermes CTO harness engine, disposable sandbox fixtures, focused Stage 4 validator, harness docs, and tests. WebUI, Core, Case source, vendor source, source repository, Target Repository, owned noncritical repositories, production repositories, and external developer repositories are forbidden. Validator: `python3 harness/runner/validate-case-stage4.py --harness-root harness --json`, then `harness/evals/health.sh --json`. -Done evidence: Stage 4 pass report, failure fixture reports, approval proof, branch proof, sandbox disposal or retention note, artifact digests, clean worktree, commit. +Done evidence: + +- Hermes commit: `033fec8 Add Case Stage 4 disposable sandbox proof`. +- Focused Stage 4 validator on Hermes main: `python3 harness/runner/validate-case-stage4.py --harness-root harness --json`. +- Focused Stage 4 validator status: `ok: true`. +- Stage 4 pass artifact: `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260601T033647Z-r1-string-slugify-3113348`. +- Stage 4 proof artifact: `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260601T033647Z-r1-string-slugify-3113348/stage4-disposable-sandbox-proof.json`. +- Failure fixture reports: `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260601T033647Z-r1-string-slugify-3112997/report.json` and `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260601T033647Z-r1-string-slugify-3113296/report.json`. +- Post-merge aggregate Harness health: `harness/evals/health.sh --json`, status `pass`. +- Aggregate matrix artifact: `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260601T033659Z-run-all-fake-3114983/report.json`. ## Granularity Check diff --git a/.sot/03-PROTOCOLS/CTO-CASE-STAGED-PROOF-GATES.md b/.sot/03-PROTOCOLS/CTO-CASE-STAGED-PROOF-GATES.md index 80501d2..7fa2298 100644 --- a/.sot/03-PROTOCOLS/CTO-CASE-STAGED-PROOF-GATES.md +++ b/.sot/03-PROTOCOLS/CTO-CASE-STAGED-PROOF-GATES.md @@ -185,7 +185,7 @@ Promotion condition: ## Stage 4 - Disposable Sandbox Repo -Status: planned. Execution remains blocked until `CTO-WORK-036` produces Harness Evidence Interface pass evidence. +Status: validated for disposable sandbox repository proof on 2026-06-01. Entry gates: @@ -208,6 +208,18 @@ Planning evidence: - Stage 4 PRD: `.sot/03-PROTOCOLS/CTO-CASE-STAGE4-DISPOSABLE-SANDBOX-PRD.md`. - Stage 4 issues: `.sot/03-PROTOCOLS/CTO-CASE-STAGE4-DISPOSABLE-SANDBOX-ISSUES.md`. +Validation evidence: + +- Hermes commit: `033fec8 Add Case Stage 4 disposable sandbox proof`. +- Focused Stage 4 validator: `python3 harness/runner/validate-case-stage4.py --harness-root harness --json`. +- Focused Stage 4 validator status: `ok: true`. +- Stage 4 pass artifact: `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260601T033647Z-r1-string-slugify-3113348`. +- Stage 4 proof artifact: `/home/svrnty/.hermes/profiles/cto-planb/harness-runs/20260601T033647Z-r1-string-slugify-3113348/stage4-disposable-sandbox-proof.json`. +- Approval denied failure fixture blocked before Case execution. +- Missing Stage 4 gate failure fixture blocked before Case execution. +- Aggregate harness health status: `pass`. +- This validates Stage 4 only. Stage 5 owned noncritical repository remains the next proof gate. + Validator expectation: - mutation occurs only in disposable repository; diff --git a/WORKBOARD.yaml b/WORKBOARD.yaml index 8d08d6f..a42d42b 100644 --- a/WORKBOARD.yaml +++ b/WORKBOARD.yaml @@ -177,6 +177,6 @@ items: owner: "" - id: CTO-WORK-036 title: Stage 4 Harness Disposable Sandbox Route - status: blocked + status: validated source: .sot/03-PROTOCOLS/CTO-CASE-STAGE4-DISPOSABLE-SANDBOX-ISSUES.md - owner: jp + owner: "" diff --git a/tools/validate_cto_child.py b/tools/validate_cto_child.py index 3b2d296..90b6420 100644 --- a/tools/validate_cto_child.py +++ b/tools/validate_cto_child.py @@ -1204,7 +1204,7 @@ def main() -> int: "CTO-WORK-033": "validated", "CTO-WORK-034": "validated", "CTO-WORK-035": "validated", - "CTO-WORK-036": "blocked", + "CTO-WORK-036": "validated", } for issue_id, expected in expected_statuses.items(): checked.append(f"workboard_status:{issue_id}:{expected}")