diff --git a/doc/architecture/runner-pi-capabilities.md b/doc/architecture/runner-pi-capabilities.md index 5a34b81309b..80d5652bb89 100644 --- a/doc/architecture/runner-pi-capabilities.md +++ b/doc/architecture/runner-pi-capabilities.md @@ -323,8 +323,7 @@ every field in Pi's native event stream. These are explicit follow-ups: ## Authenticated local qualification progress The [sanitized attempt ledger](../../packages/paperclip-runner/test-fixtures/pi-acp/paid-qualification-progress.darwin-arm64.json) -retains all six attempts, including four pre-provider failures and the later -Product agent-admission rejection. One Runner protocol turn reached the exact +retains all seven attempts, including six failures before a model prompt. One Runner protocol turn reached the exact model and successfully called `get_task_context`, `get_task_history`, `list_documents`, and `read_document`. The canonical case permits those extra orientation reads, but also requires a completed turn; it timed out after 120s @@ -351,6 +350,21 @@ symlink hydration had not run. Its bundled setup script repaired the installatio and a fresh database initialization passed. The deliberate repeat reached the real browser/server, then candidate agent creation returned 422 because the provider-profile validator still rejected candidates before the host's explicit -qualification admission boundary. The shared server correction is pending. +qualification admission boundary. Shared commit `26dde3cfe` corrected that gate. The next attempt created the agent +and task, then found a dormant Pi-only rejection in the verified runnerd backend +factory (`transportDriverIdentity`); it again submitted no model prompt and +incurred zero measured billing delta. That shared identity correction is pending. + +The canonical live-eval completion contract had a separate defect: fresh sessions +omitted native `paperclip_finish`/`paperclip_block` schemas, their callback rejected +otherwise valid native reports, and ACP model instructions lacked the literal +contract revision. Shared commits `dc58afb28` and `aa4b88b16` expose and validate +those advisory reports and send the exact contract on fresh/resumed sessions. +They cannot mutate mock tasks, grant semantic permissions or settle the provider +turn early. Two declaration/acceptance regressions and one instruction-delivery +regression failed before repair; 45 live-session tests and three focused follow-up +checks passed, with source typecheck. This is a confirmed protocol defect, but +its causal contribution to the earlier model timeout is not proven. + Production admission remains qualification-pending until the live matrix and spend receipt checks pass. diff --git a/packages/paperclip-runner/test-fixtures/pi-acp/paid-qualification-progress.darwin-arm64.json b/packages/paperclip-runner/test-fixtures/pi-acp/paid-qualification-progress.darwin-arm64.json index 35916a5cc26..0349723ae9a 100644 --- a/packages/paperclip-runner/test-fixtures/pi-acp/paid-qualification-progress.darwin-arm64.json +++ b/packages/paperclip-runner/test-fixtures/pi-acp/paid-qualification-progress.darwin-arm64.json @@ -1,6 +1,6 @@ { "schema": "paperclip.pi-paid-qualification-progress.v1", - "recordedAt": "2026-09-28T19:36:32.051800+00:00", + "recordedAt": "2026-09-28T19:45:32.427487+00:00", "qualificationStatus": "pending", "environment": { "platform": "darwin", @@ -149,6 +149,13 @@ "reservationUsd": 2, "billingWatchdogUsd": 0.5, "outerDeadlineSeconds": 300 + }, + "retainedStatus": "failed", + "cleanup": "not_started", + "fixtureReportedSource": { + "sha": null, + "ref": null, + "workflowRunUrl": null } }, { @@ -163,7 +170,7 @@ "runnerdDigest": "sha256:79d49c3cef01f328742651f62a449661695d0955741a1c37bd89abf54cbc8c2b", "profileDigest": "sha256:0f687e38cb3c607a01fab80f03e19bbbf5cb53a8afb1fc40d71f9ab54551cff1", "exitCode": 1, - "retainedMachineDisposition": "setup_failure", + "retainedMachineDisposition": "permanent_infrastructure", "diagnosis": "The real server rejected candidate agent creation422 before any provider prompt. Host-only qualification was wired at launch but not the earlier provider-profile resolver. Shared correction pending.", "submittedProviderTurns": 0, "providerRequestCount": 0, @@ -175,6 +182,47 @@ "reservationUsd": 2, "billingWatchdogUsd": 0.5, "outerDeadlineSeconds": 300 + }, + "retainedStatus": "failed", + "cleanup": "passed", + "fixtureReportedSource": { + "sha": null, + "ref": null, + "workflowRunUrl": null + } + }, + { + "attemptId": "pi-product-hello-03", + "family": "product-e2e", + "caseId": "extended-harnesses.runner-acpx-pi.local.hello-complete", + "startedAt": "2026-09-28T19:44:53.789569+00:00", + "finishedAt": "2026-09-28T19:45:32.427487+00:00", + "durationSeconds": 38.638, + "sourceRevision": "d6b0b97786a61e607291c656229bbb54a81dc061", + "providerPackDigest": "sha256:4ab928ff5fbc68b0b0e21733c4cdaebb3f9fb7197b1985d1094a21fd3d51b2fe", + "runnerdDigest": "sha256:79d49c3cef01f328742651f62a449661695d0955741a1c37bd89abf54cbc8c2b", + "profileDigest": "sha256:0f687e38cb3c607a01fab80f03e19bbbf5cb53a8afb1fc40d71f9ab54551cff1", + "exitCode": 1, + "retainedMachineDisposition": "candidate_failure", + "retainedStatus": "failed", + "cleanup": "passed", + "fixtureReportedSource": { + "sha": "d6b0b97786a61e607291c656229bbb54a81dc061", + "ref": "refs/heads/codex/runner-pi-acp", + "workflowRunUrl": null + }, + "diagnosis": "Agent creation succeeded after shared admission repair; the actual verified runnerd backend factory then hit a dormant Pi-only transportDriverIdentity rejection before provider launch. Shared identity correction pending.", + "submittedProviderTurns": 0, + "providerRequestCount": 0, + "billingDeltaUsd": 0, + "billingCoverage": "exclusive OpenRouter key usage delta, two spaced post-attempt observations", + "terminalUsage": null, + "automaticRetries": 0, + "supervision": { + "reservationUsd": 2, + "billingWatchdogUsd": 0.5, + "outerDeadlineSeconds": 300, + "configuredActiveTimeoutSeconds": 120 } } ], @@ -203,7 +251,16 @@ "typecheck": "passed after building missing workspace plugin-sdk artifact", "unitTestsPassed": 585 }, - "offlineProof": "offline-provider-pack-proof.darwin-arm64.json" + "offlineProof": "offline-provider-pack-proof.darwin-arm64.json", + "liveCompletionContract": { + "schemaAndHandlerCommit": "dc58afb28", + "modelInstructionsCommit": "aa4b88b16", + "beforeFixFailures": 3, + "fullLiveSessionTestsPassed": 45, + "instructionFollowupFocusedTestsPassed": 3, + "sourceTypecheck": "passed", + "boundary": "Advisory native report does not mutate mock state or settle provider turn; stale revision, wrong turn, conflicting report and unauthorized create_task rejected" + } }, "publicationBoundary": { "hiddenReasoningIncluded": false, @@ -213,7 +270,7 @@ }, "remaining": [ "Successful protocol terminal settlement and complete usage receipt", - "Successful Product E2E agent admission and hello completion", + "Successful Product E2E verified native backend admission and hello completion", "File edit, typed question, plan and restart journeys", "Native permissions and explicit steering acceptance/delivery", "Linux x64 Daytona qualification"