# T03 Validation — Claude Code Driver

> Gate: corepack pnpm@10.34.5 gate:full Result: 40 passed, 0 failed, 0 skipped, 0 todo (12 T03 cases) SPECDEVIATION: none

Source: https://github.com/accd/verchestra/blob/main/docs/qualification/t03-validation.md
Content digest: `sha256:39ab16838ba6532e0f0153f8a53aff900ade06324cf3a82cedf8828cae1caa40`

**Gate:** `corepack pnpm@10.34.5 gate:full`  
**Result:** 40 passed, 0 failed, 0 skipped, 0 todo (12 T03 cases)  
**SPEC_DEVIATION:** none

## Check A — Sufficient coverage

| Criterion | Assertion evidence | Required outcome | Covered |
| --- | --- | --- | --- |
| Installed CLI is detected without model use | `spikes/claude-code-driver/test/claude-driver.test.mjs:15-18` — available/version/stream/no-session fields exact | Read-only capability probe succeeds for 2.1.168 | Yes |
| Incompatible version blocks | `claude-driver.test.mjs:23-24` — unavailable and `VES_CLAUDE_VERSION_UNSUPPORTED` | Unsupported CLI fails before session | Yes |
| Invocation is structured and locked down | `claude-driver.test.mjs:29-35` — required flags true, dangerous flags false | Safe stream-json baseline | Yes |
| Prompt is stdin-only | `claude-driver.test.mjs:40-41` — exact echo and argv absence | Private prompt is not process metadata | Yes |
| Identity/events/usage are normalized | `claude-driver.test.mjs:46-50` — model, lifecycle, delta, usage/cost exact | Common Driver evidence is preserved | Yes |
| Tool request is data only | `claude-driver.test.mjs:55-60` — exact normalized tool object | Claude request does not execute a tool in the Driver | Yes |
| Malformed stream fails closed | `claude-driver.test.mjs:65-66` — stop error and `VES_CLAUDE_STREAM_INVALID` | Invalid NDJSON cannot become events/actions | Yes |
| Execution failure is stable | `claude-driver.test.mjs:71-73` — stop/code/message exact | Claude error remains typed evidence | Yes |
| Cancellation terminates process contract | `claude-driver.test.mjs:84-86` — integer terminated PID, aborted/code exact | Controller cancel reaches tree terminator | Yes |
| Ambient credentials are excluded | `claude-driver.test.mjs:95-96` — no API key, explicit fixture env preserved | Environment is allowlist plus explicit binding | Yes |
| Sensitive output is redacted | `claude-driver.test.mjs:107-109` — secret absent; stdout/stderr redacted exact | No credential material leaves adapter | Yes |
| Session identity is non-portable | `claude-driver.test.mjs:114-115` — private ID absent and no session field | Claude session never enters portable result | Yes |

## Checks B–D

- **Non-shallow:** tests execute a real local version probe and real child processes; they assert output/state/error values, not spawn call counts alone.
- **Necessary:** each test maps to T03 Done-when, VES-MDL-002/005, or VES-HOF-004; no speculative provider behavior is tested.
- **Guidelines:** follows the Driver contract matrix and T03 in `tasks.md`; model calls are intentionally excluded because T03 qualification needs protocol proof, not paid output quality.

## Verdict

PASS — all prior and 12 T03 cases pass with zero skip. Tests are spec-anchored and were not weakened, deleted, skipped, or deferred.
