T34 Pi Driver Validation
T34 Pi Driver Validation
Scope
- Task: T34 — Implement Pi Driver
- Requirements: VES-MDL-001/005, VES-CTX-001, VES-SKL-005
- Commit target:
feat(drivers): add pi adapter - Focused evidence: 23 cases (17 contract, 6 integration)
- Spec deviations: none
T34 supplies the first production adapter behind the T33 Driver port. It resolves one exact Passport-bound Pi model, consumes only the already serialized neutral context, streams common events, mediates tools, reports provider usage, propagates abort, preserves contiguous event sequence across follow-ups, and confines transcript/session state to the adapter instance until explicit close or cancellation.
Deterministic gates
| Command | Result |
|---|---|
node --test tests/contract/pi-driver.test.mjs tests/integration/pi-driver-lifecycle.test.mjs |
PASS — 23 passed, 0 failed/skipped |
node scripts/gate.mjs full |
PASS — format, lint, typecheck, 1,418 unit, 191 contract, 162 integration, 16 E2E, and 49 fault cases |
Check A — sufficient, spec-anchored coverage
| Criterion / requirement | Exact assertion evidence | Spec-defined outcome | Covered |
|---|---|---|---|
| Qualified probe | tests/contract/pi-driver.test.mjs |
Exact package/version and stream/tool/usage/abort capabilities | Yes |
| Common lifecycle | tests/contract/pi-driver.test.mjs |
Session, model, content, usage, and close events are common and contiguous | Yes |
| Resolved identity | Four identity mutations | Passport ID/revision, provider, API, and resolved model must all agree | Yes |
| Context boundary | Capacity and system-prompt negatives | Overflow blocks before provider; Pi receives no extra system instructions | Yes |
| Tool boundary | Declaration/digest/allow/deny cases | Concrete tools match exact authorized schemas and execute only after mediation | Yes |
| Provider failures | Error and output-limit cases | Private provider text is redacted into stable common diagnostics | Yes |
| Abort | Pre-start and live-provider cases | Pre-abort prevents resolution; live abort reaches Pi and emits stable evidence | Yes |
| Follow-up | Integration lifecycle case | send() reuses only its session and preserves contiguous event ordering |
Yes |
| Session locality | Fresh-run, close, cancel, and foreign-instance cases | No transcript crosses runs/instances or enters returned artifacts | Yes |
| Minimum floor | Focused runner: 23 | At least 18 common/Pi-specific contract and integration cases | Yes |
Check B — non-shallow litmus
- Identity mutations isolate Passport revision, provider, API, and resolved model independently.
- Context capacity is rejected before the faux provider receives any call.
- An extra Pi system prompt is rejected because T30 already sealed all semantics inside the serialized context.
- Tool name and input-schema digest are both bound; an allowed call executes once and a denied call executes zero times.
- A secret-bearing provider error is absent from every emitted event.
- A live
AbortSignalterminates an in-flight real PiAgentstream rather than only changing local state. - Two starts observe fresh transcript length, while a follow-up intentionally stays within one session and one event sequence.
Check C — necessary reverse mapping
| Test evidence | Requirement / criterion | Keep |
|---|---|---|
pi-driver.test.mjs |
Probe, identity, context, tools, usage, provider errors, redaction | Yes |
pi-driver-lifecycle.test.mjs |
Fresh state, follow-up, live abort, idempotent terminal behavior, instance isolation | Yes |
All 23 focused cases map to T34 requirements or done-when criteria. CLI-based Claude/Codex/OpenCode portability remains T35–T37.
Check D — guideline conformance
- Followed
.specs/features/verchestra-1.0/tasks.md: contract/integration tests preceded implementation, the focused floor is exceeded, andgate:fullpasses. - Reuses the T33 Driver port/event contract and T30 Pi serialization rule instead of creating a Pi-specific orchestration path.
- Uses the pinned and T02-qualified
@earendil-works/pi-agent-coreruntime. - Encapsulates vendor declarations behind a narrow structural boundary so optional provider SDK declaration defects cannot weaken strict project typechecking.
- Provider messages, prompts, transcripts, model headers, and tool results are never returned as canonical artifacts.
Adequacy verdict
PASS. T34 exceeds its test floor, binds exact resolved identity and tool schemas, proves streaming/usage/abort/follow-up behavior, redacts provider failures, keeps Pi state session-local, and passes the complete repository gate.