diff --git a/doc/architecture/runner-pi-capabilities.md b/doc/architecture/runner-pi-capabilities.md index 772ddf682e9..dc20f198784 100644 --- a/doc/architecture/runner-pi-capabilities.md +++ b/doc/architecture/runner-pi-capabilities.md @@ -239,10 +239,10 @@ helper discards failed-attempt usage, so any retry or missing compaction receipt invalidates complete-turn token/cost totals instead of inventing complete coverage. The retained [macOS ARM64 provider-pack admission proof](../../packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.darwin-arm64.json) -records source `d039e1b7b072862b4c326ba7194dc42617fa5984`, after the assigned -HTTPS gateway repair and shared failed-turn receipt and credential-provenance -fixes. Its manifest digest is -`sha256:5a47fc67b886c1e05d0f630ed89c1b9f5324610b649d1db020a3e036e36fc85d`. +records source `2e65b64d5a2148583109b8157d6e72f54f5ad29b`, after the Node +engine declaration and Pi v2 fixture corrections. It includes the assigned HTTPS +gateway repair and shared failed-turn receipt and credential-provenance fixes. Its manifest digest is +`sha256:7300b9c449c02b61d2f93ef765f371c277e39a58d04739c6c24dcf7939500701`. The clean tracked-lock resolution matched Docker's reviewed `650e23d20e967bcfbfced888e131199b9a06e66a1ba4f64cfb68383b59def4a8` digest before a frozen install and pack build. The probe used the deployed generic @@ -250,10 +250,17 @@ installation registry and immutable snapshot. Every advertised capability was read and asserted from its actual initialize response. Session creation rejected the missing bound credential; no model prompt was submitted. The record contains no credentials or provider session IDs and records zero paid calls. It includes -focused verification and the cleanup-timeout retry history, and precedes only -this evidence-retention/report commit. It proves no authenticated interaction, +focused verification, the full runner TypeScript suite (2,202 passed, 11 +skipped), and all 13 native-provider Rust tests. It precedes only this +evidence-retention/report commit. It proves no authenticated interaction, reported model ID, or Daytona qualification. +The [pre-policy proof](../../packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.d039e1b7b.darwin-arm64.json) +retains source `d039e1b7b072862b4c326ba7194dc42617fa5984` and manifest +`sha256:5a47fc67b886c1e05d0f630ed89c1b9f5324610b649d1db020a3e036e36fc85d`, +including its cleanup-timeout retry history. It predates the Node engine metadata +and corresponding manifest/closure identities. + The [previous integrated proof](../../packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.f58cfa1cb.darwin-arm64.json) retains source `f58cfa1cbf4503b93a0be4480f51b492d8203b7c` and manifest `sha256:3de76fb7d3902d29285e3da51e36d2ba4654c29bab0c867a6209fadea77c2181`. @@ -261,7 +268,7 @@ It covers the retry-status repair before the HTTPS and shared runtime fixes. The [earlier integrated proof](../../packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.1e0d11c48.darwin-arm64.json) retains source `1e0d11c482f8ef50b6afc1430cb736579114b266` and manifest `sha256:f859e30e51326ff875d616e2bb3fd4c0246ce1f58a5988968b91bae176a68281` -with its narrower capability assertions. Both files are historical evidence, +with its narrower capability assertions. These files are historical evidence, not proof of the current executable bytes. Later runtime or foundation changes require a new pack build and source-pinned admission record. diff --git a/packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.d039e1b7b.darwin-arm64.json b/packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.d039e1b7b.darwin-arm64.json new file mode 100644 index 00000000000..d0602bcc46d --- /dev/null +++ b/packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.d039e1b7b.darwin-arm64.json @@ -0,0 +1,138 @@ +{ + "schema": "paperclip.pi-provider-pack-offline-proof.v1", + "recordedAt": "2026-09-28T18:05:21.044Z", + "classification": "offline_candidate_admission", + "source": { + "runnerRevision": "d039e1b7b072862b4c326ba7194dc42617fa5984", + "distDigest": "sha256:4a06098b322bb2c92db66c99d51e9eac7009f442d53077982a88ede937fea044", + "bridgeDigest": "sha256:d2fb33ed3ca0f42bbc6c33486f4ff34a8e29aa2cebf94c64d1747b1ce4089eb1", + "productionLockDigest": "sha256:650e23d20e967bcfbfced888e131199b9a06e66a1ba4f64cfb68383b59def4a8", + "note": "Built after the assigned HTTPS gateway repair and the shared failed-turn receipt and credential-provenance fixes. This probe executed the deployed generic installation registry and immutable snapshot. Every capability field below was read and asserted from this actual initialize response. No prompt was sent." + }, + "environment": { + "platform": "darwin", + "architecture": "arm64", + "nodeVersion": "24.19.0", + "execution": "local macOS ARM64; immutable guarded provider snapshot", + "packageManager": "pnpm@9.15.4" + }, + "candidate": { + "agent": "pi", + "qualification": "pending", + "agentProfileVersion": 2, + "declaredModel": "openrouter/deepseek/deepseek-v4-flash-0731", + "reportedModelId": null, + "modelVerification": "not_performed_authentication_missing", + "wrapperVersion": "0.0.33", + "runtimeVersion": "0.84.2", + "profileDigest": "sha256:c577a771778febe24b920388da77f6143971b8eec29e1ba9a433dac5b76de3cd", + "closureDigest": "sha256:a26e98fe3f4d3d93c13beffdb4e8b778d438dd1b3bca8a9b1610154342382681", + "assetTreeDigest": "sha256:44b058bf5a10b82d355351e8034d82e0a82d8de3236c80ccd586922953a4de4a", + "distributionManifestDigest": "sha256:bd46c419b3a9c56332eda72dfc5fbd7621d8f0a271be8fb6202b005a39ee4c7a", + "wrapperDigest": "sha256:2eb201c3a931177490a8e18f4a8392f00cbcf21847e9cc171de528da5e253935", + "helperDigest": "sha256:4333d284ff06ab1195e49630041f0b03a486a92fc678100525ad107e0982dba1", + "extensionDigest": "sha256:0a2ca138d6d87a85498bd982ee64543ea8b14f2ecceded96cfc27b0836cc4254" + }, + "providerPack": { + "manifestDigest": "sha256:5a47fc67b886c1e05d0f630ed89c1b9f5324610b649d1db020a3e036e36fc85d", + "portableNodeDigest": "sha256:27db838bb204ef7c21df2931f5656e4c8fb32e6e947f363a402b49714d32b5b1", + "piNodeDigest": "sha256:27db838bb204ef7c21df2931f5656e4c8fb32e6e947f363a402b49714d32b5b1", + "acpxSidecarDigest": "sha256:9416ff4c0d87ae343b6af4354b7b871ece77d86799f0daaf866915647ae44eb5" + }, + "observed": { + "closedSnapshotLaunch": true, + "acpInitialize": "passed", + "authMethods": [], + "capabilities": { + "version": 1, + "steering": true, + "queuedFollowUp": true, + "questions": [ + "select", + "confirm", + "input", + "editor" + ], + "nativePermissions": true, + "promptUsage": true, + "nativePlan": false, + "pendingRequestRecovery": "live-process-only" + }, + "sessionNew": "rejected_authentication_missing", + "expectedError": "Bind the configured OpenRouter API credential to this Paperclip runtime.", + "missingCredentialRejected": true, + "capabilityProvenance": "Read and asserted in full from this pack launch.", + "rpcMethods": [ + "initialize", + "session/new" + ] + }, + "usage": { + "providerCalls": 0, + "promptRequests": 0, + "paidProviderCalls": 0, + "credentials": "none", + "spentUsd": 0 + }, + "limitations": [ + "No provider authentication, model prompt, or reported currentModelId was verified.", + "Native tool execution, permissions, questions, and semantic MCP calls were not exercised by this pack-launch probe.", + "Linux x64, macOS x64, and Daytona execution were not exercised.", + "Production qualification remains pending." + ], + "verification": { + "sourceRevision": "d039e1b7b072862b4c326ba7194dc42617fa5984", + "resolvedSourceLockDigest": "sha256:650e23d20e967bcfbfced888e131199b9a06e66a1ba4f64cfb68383b59def4a8", + "lockResolution": "clean tracked input, full workspace resolution, matched reviewed Docker pin before frozen filtered install", + "typescriptBuild": "passed", + "providerPackBuild": "passed", + "vitest": { + "files": 4, + "passed": 31, + "failed": 0, + "maxWorkers": 1, + "hookTimeoutMs": 10000, + "actualDistributionInstallation": "enabled; current provider-pack assets", + "durationSeconds": 12.22 + }, + "verificationHistory": [ + { + "suite": "four Pi Vitest files", + "passed": 30, + "failed": 1, + "failurePhase": "afterEach cleanup", + "failure": "Hook timed out in 10000ms while deleting the large immutable snapshot during concurrent pack builds; launch assertions completed", + "durationSeconds": 41.63 + }, + { + "suite": "four Pi Vitest files", + "passed": 31, + "failed": 0, + "hookTimeoutMs": 60000, + "durationSeconds": 42.07 + }, + { + "suite": "four Pi Vitest files", + "passed": 31, + "failed": 0, + "hookTimeoutMs": 10000, + "maxWorkers": 1, + "durationSeconds": 12.22, + "note": "Repeated after pack/probe IO settled, with unchanged source and default cleanup timeout." + } + ], + "nodeTests": { + "files": 3, + "passed": 17, + "failed": 0, + "skipped": 0, + "actualPackages": "fresh provider-pack assets" + }, + "notRun": [ + "full repository typecheck, build, and tests for this provider branch", + "credentialed model evaluation", + "Linux x64 or macOS x64 execution", + "Daytona deployment" + ] + } +} diff --git a/packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.darwin-arm64.json b/packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.darwin-arm64.json index d0602bcc46d..37467da7e4d 100644 --- a/packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.darwin-arm64.json +++ b/packages/paperclip-runner/test-fixtures/pi-acp/offline-provider-pack-proof.darwin-arm64.json @@ -1,13 +1,13 @@ { "schema": "paperclip.pi-provider-pack-offline-proof.v1", - "recordedAt": "2026-09-28T18:05:21.044Z", + "recordedAt": "2026-09-28T18:27:26.822Z", "classification": "offline_candidate_admission", "source": { - "runnerRevision": "d039e1b7b072862b4c326ba7194dc42617fa5984", - "distDigest": "sha256:4a06098b322bb2c92db66c99d51e9eac7009f442d53077982a88ede937fea044", - "bridgeDigest": "sha256:d2fb33ed3ca0f42bbc6c33486f4ff34a8e29aa2cebf94c64d1747b1ce4089eb1", + "runnerRevision": "2e65b64d5a2148583109b8157d6e72f54f5ad29b", + "distDigest": "sha256:d46bb029974dd0707aed83050ecb527d5f2f1689393ded35c1d785d0c415c1b1", + "bridgeDigest": "sha256:3028ba0c1bc4f93cd899c2ebb5a7fc9b904de9706251d8fd681616a9cfc728f6", "productionLockDigest": "sha256:650e23d20e967bcfbfced888e131199b9a06e66a1ba4f64cfb68383b59def4a8", - "note": "Built after the assigned HTTPS gateway repair and the shared failed-turn receipt and credential-provenance fixes. This probe executed the deployed generic installation registry and immutable snapshot. Every capability field below was read and asserted from this actual initialize response. No prompt was sent." + "note": "Built after the Node engine policy repair and Pi v2 fixture corrections, including the prior HTTPS, failed-turn receipt and credential-provenance fixes. This probe executed the deployed generic installation registry and immutable snapshot. Every capability field below was read and asserted from this actual initialize response. No prompt was sent." }, "environment": { "platform": "darwin", @@ -25,19 +25,19 @@ "modelVerification": "not_performed_authentication_missing", "wrapperVersion": "0.0.33", "runtimeVersion": "0.84.2", - "profileDigest": "sha256:c577a771778febe24b920388da77f6143971b8eec29e1ba9a433dac5b76de3cd", - "closureDigest": "sha256:a26e98fe3f4d3d93c13beffdb4e8b778d438dd1b3bca8a9b1610154342382681", - "assetTreeDigest": "sha256:44b058bf5a10b82d355351e8034d82e0a82d8de3236c80ccd586922953a4de4a", - "distributionManifestDigest": "sha256:bd46c419b3a9c56332eda72dfc5fbd7621d8f0a271be8fb6202b005a39ee4c7a", + "profileDigest": "sha256:0f687e38cb3c607a01fab80f03e19bbbf5cb53a8afb1fc40d71f9ab54551cff1", + "closureDigest": "sha256:b30047dce9c4c25e1fbc88a1aa828690a6a11ebdc3f6fcc083875986eb2d9585", + "assetTreeDigest": "sha256:5c046265335d4a6924efcd207f837d5aa0e0fc3baa0bf6ea7059afe8d6ab3939", + "distributionManifestDigest": "sha256:406345b3b75d8aee399da886fbdf8566aaaa44ff29fe3462da21f0c29901aecd", "wrapperDigest": "sha256:2eb201c3a931177490a8e18f4a8392f00cbcf21847e9cc171de528da5e253935", "helperDigest": "sha256:4333d284ff06ab1195e49630041f0b03a486a92fc678100525ad107e0982dba1", "extensionDigest": "sha256:0a2ca138d6d87a85498bd982ee64543ea8b14f2ecceded96cfc27b0836cc4254" }, "providerPack": { - "manifestDigest": "sha256:5a47fc67b886c1e05d0f630ed89c1b9f5324610b649d1db020a3e036e36fc85d", + "manifestDigest": "sha256:7300b9c449c02b61d2f93ef765f371c277e39a58d04739c6c24dcf7939500701", "portableNodeDigest": "sha256:27db838bb204ef7c21df2931f5656e4c8fb32e6e947f363a402b49714d32b5b1", "piNodeDigest": "sha256:27db838bb204ef7c21df2931f5656e4c8fb32e6e947f363a402b49714d32b5b1", - "acpxSidecarDigest": "sha256:9416ff4c0d87ae343b6af4354b7b871ece77d86799f0daaf866915647ae44eb5" + "acpxSidecarDigest": "sha256:a909a86d0c0697697ef9dc8922785648e84e25dd687653b7c7428c863db5856b" }, "observed": { "closedSnapshotLaunch": true, @@ -81,46 +81,36 @@ "Production qualification remains pending." ], "verification": { - "sourceRevision": "d039e1b7b072862b4c326ba7194dc42617fa5984", + "sourceRevision": "2e65b64d5a2148583109b8157d6e72f54f5ad29b", "resolvedSourceLockDigest": "sha256:650e23d20e967bcfbfced888e131199b9a06e66a1ba4f64cfb68383b59def4a8", "lockResolution": "clean tracked input, full workspace resolution, matched reviewed Docker pin before frozen filtered install", + "nodeVersionPolicy": "passed", "typescriptBuild": "passed", + "rustBinaryBuild": "passed", "providerPackBuild": "passed", + "fullRunnerVitest": { + "filesPassed": 160, + "filesSkipped": 1, + "passed": 2202, + "failed": 0, + "skipped": 11, + "durationSeconds": 223.84, + "attachTransitionRunnerDigest": "sha256:66122cae0160bfa2655d64afb7c7b5c01aa5fa7bba8ad608c7ee768c14f51fec", + "note": "Used the matching foundation transition runner plus locally built Rust fake binaries. Optional installed-Pi test runs separately below." + }, + "nativeProviderRustTests": { + "passed": 13, + "failed": 0, + "ignored": 0 + }, "vitest": { "files": 4, "passed": 31, "failed": 0, "maxWorkers": 1, "hookTimeoutMs": 10000, - "actualDistributionInstallation": "enabled; current provider-pack assets", - "durationSeconds": 12.22 + "actualDistributionInstallation": "enabled; current provider-pack assets" }, - "verificationHistory": [ - { - "suite": "four Pi Vitest files", - "passed": 30, - "failed": 1, - "failurePhase": "afterEach cleanup", - "failure": "Hook timed out in 10000ms while deleting the large immutable snapshot during concurrent pack builds; launch assertions completed", - "durationSeconds": 41.63 - }, - { - "suite": "four Pi Vitest files", - "passed": 31, - "failed": 0, - "hookTimeoutMs": 60000, - "durationSeconds": 42.07 - }, - { - "suite": "four Pi Vitest files", - "passed": 31, - "failed": 0, - "hookTimeoutMs": 10000, - "maxWorkers": 1, - "durationSeconds": 12.22, - "note": "Repeated after pack/probe IO settled, with unchanged source and default cleanup timeout." - } - ], "nodeTests": { "files": 3, "passed": 17, @@ -128,8 +118,29 @@ "skipped": 0, "actualPackages": "fresh provider-pack assets" }, + "verificationHistory": [ + { + "suite": "full runner Vitest before building this worktree Rust fixtures", + "passed": 2102, + "failed": 99, + "skipped": 12, + "failurePhase": "test setup", + "failure": "Three test files lacked required local Rust fake binaries. Built the binaries, then the complete suite passed as recorded above." + } + ], + "priorCi": { + "head": "ee75eab87a741adec31b82e658542d50232a3b7d", + "runId": 36462967091, + "correctedFindings": [ + "isolated distribution manifest missing required engines.node", + "TypeScript Pi candidate fixture retained pre-upgrade identity", + "Rust Pi controls fixture retained pre-upgrade identity" + ], + "infrastructure": "Four server shards reported runner shutdown and operation cancellation, with no test failure summaries; no shared server source change was made. Fresh-head CI must recheck them." + }, "notRun": [ "full repository typecheck, build, and tests for this provider branch", + "full Rust workspace test suite for this provider branch", "credentialed model evaluation", "Linux x64 or macOS x64 execution", "Daytona deployment"