pi-session-mcp 0.8.3 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pi-session-mcp-cli/client-adapters/command.js +33 -0
- package/.pi-session-mcp-cli/client-adapters/mcp-verifier.js +198 -0
- package/.pi-session-mcp-cli/client-adapters/types.js +1 -0
- package/.pi-session-mcp-cli/config.js +29 -3
- package/.pi-session-mcp-cli/container-runtime.js +18 -0
- package/.pi-session-mcp-cli/doctor.js +370 -4
- package/.pi-session-mcp-cli/execution-modes.js +83 -0
- package/.pi-session-mcp-cli/execution-profile.js +1 -0
- package/.pi-session-mcp-cli/override-lock.js +4 -4
- package/.pi-session-mcp-cli/session-tools.js +45 -0
- package/.pi-session-mcp-cli/setup-platform.js +64 -36
- package/.pi-session-mcp-cli/setup-process.js +455 -0
- package/.pi-session-mcp-cli/skill-library.js +8 -4
- package/.pi-session-mcp-cli/turn-events.js +97 -0
- package/.pi-session-mcp-cli/writer-boundary.js +321 -0
- package/.pi-session-mcp-cli/writer-fence.js +50 -0
- package/.pi-session-mcp-cli/writer-lease.js +140 -0
- package/.pi-session-mcp-cli/writer-lifecycle.js +567 -0
- package/.pi-session-mcp-cli/writer-state.js +199 -0
- package/.pi-session-mcp-cli/writer-wrapper.js +14 -0
- package/CHANGELOG.md +527 -0
- package/README.md +8 -2
- package/dist/capabilities.d.ts +9 -1
- package/dist/capabilities.js +8 -3
- package/dist/child-stdio-transport.d.ts +21 -0
- package/dist/child-stdio-transport.js +88 -0
- package/dist/client-adapters/claude-code.js +3 -2
- package/dist/client-adapters/command.d.ts +8 -0
- package/dist/client-adapters/command.js +9 -1
- package/dist/client-adapters/mcp-verifier.d.ts +7 -0
- package/dist/client-adapters/mcp-verifier.js +21 -4
- package/dist/client-adapters/types.d.ts +5 -1
- package/dist/client-adapters/writer-registration.d.ts +16 -0
- package/dist/client-adapters/writer-registration.js +156 -0
- package/dist/config.d.ts +12 -1
- package/dist/config.js +29 -3
- package/dist/container-runtime.d.ts +2 -0
- package/dist/container-runtime.js +18 -0
- package/dist/doctor.d.ts +36 -2
- package/dist/doctor.js +370 -4
- package/dist/event-spool.d.ts +70 -0
- package/dist/event-spool.js +180 -0
- package/dist/execution-modes.d.ts +60 -0
- package/dist/execution-modes.js +83 -0
- package/dist/execution-profile.d.ts +2 -0
- package/dist/execution-profile.js +1 -0
- package/dist/main.js +63 -8
- package/dist/override-lock.d.ts +2 -0
- package/dist/override-lock.js +4 -4
- package/dist/pi-adapter.d.ts +31 -1
- package/dist/pi-adapter.js +12 -0
- package/dist/process-diagnostics.d.ts +1 -1
- package/dist/process-diagnostics.js +2 -1
- package/dist/refusal-server.d.ts +6 -0
- package/dist/refusal-server.js +46 -0
- package/dist/sdk-pi-adapter.js +16 -9
- package/dist/server.d.ts +3 -2
- package/dist/server.js +27 -53
- package/dist/session-registry.d.ts +32 -2
- package/dist/session-registry.js +61 -11
- package/dist/session-tools.d.ts +14 -5
- package/dist/session-tools.js +13 -9
- package/dist/setup-cli.d.ts +14 -0
- package/dist/setup-cli.js +132 -0
- package/dist/setup-command-guardian.js +9 -3
- package/dist/setup-hooks.d.ts +158 -0
- package/dist/setup-hooks.js +657 -0
- package/dist/setup-main.d.ts +1 -1
- package/dist/setup-main.js +18 -2
- package/dist/setup-modes.d.ts +18 -0
- package/dist/setup-modes.js +131 -0
- package/dist/setup-ownership.d.ts +1 -0
- package/dist/setup-ownership.js +11 -3
- package/dist/setup-platform.d.ts +9 -1
- package/dist/setup-platform.js +64 -36
- package/dist/setup-process.d.ts +23 -1
- package/dist/setup-process.js +88 -10
- package/dist/setup-writers.d.ts +42 -0
- package/dist/setup-writers.js +510 -0
- package/dist/setup.d.ts +4 -1
- package/dist/setup.js +23 -10
- package/dist/skill-library.d.ts +2 -0
- package/dist/skill-library.js +8 -4
- package/dist/tool-schemas.d.ts +339 -0
- package/dist/tool-schemas.js +49 -0
- package/dist/turn-events.d.ts +45 -0
- package/dist/turn-events.js +97 -0
- package/dist/wake-hook.d.ts +180 -0
- package/dist/wake-hook.js +638 -0
- package/dist/wake-main.d.ts +8 -0
- package/dist/wake-main.js +111 -0
- package/dist/writer-acceptance.d.ts +10 -0
- package/dist/writer-acceptance.js +192 -0
- package/dist/writer-boundary.d.ts +52 -0
- package/dist/writer-boundary.js +321 -0
- package/dist/writer-credentials.d.ts +29 -0
- package/dist/writer-credentials.js +85 -0
- package/dist/writer-fence.d.ts +12 -0
- package/dist/writer-fence.js +50 -0
- package/dist/writer-guard.d.ts +13 -0
- package/dist/writer-guard.js +54 -0
- package/dist/writer-launch.d.ts +29 -0
- package/dist/writer-launch.js +232 -0
- package/dist/writer-lease.d.ts +28 -0
- package/dist/writer-lease.js +140 -0
- package/dist/writer-lifecycle.d.ts +96 -0
- package/dist/writer-lifecycle.js +567 -0
- package/dist/writer-relay.d.ts +33 -0
- package/dist/writer-relay.js +359 -0
- package/dist/writer-state.d.ts +111 -0
- package/dist/writer-state.js +199 -0
- package/dist/writer-wrapper.d.ts +3 -0
- package/dist/writer-wrapper.js +14 -0
- package/docs/acceptance.md +1694 -1
- package/docs/adr/0003-post-mvp-maintenance.md +2 -2
- package/docs/adr/0006-pi-extension-allowlist.md +3 -1
- package/docs/adr/0008-coding-profile-isolation.md +295 -0
- package/docs/adr/0009-execution-modes.md +131 -0
- package/docs/adr/0010-read-only-extension-tools.md +68 -0
- package/docs/adr/0011-turn-events-and-controller-wake.md +173 -0
- package/docs/adr/0012-leased-writer-pool.md +357 -0
- package/docs/architecture.md +96 -8
- package/docs/client-setup-design.md +12 -8
- package/docs/client-setup.md +84 -2
- package/docs/doctor-design.md +48 -0
- package/docs/evaluation/2026-10-17-live-screening.md +121 -0
- package/docs/evaluation/2026-10-17-node-runtime-followup.md +33 -0
- package/docs/evaluation/2026-10-17-profile-evaluation-evidence.md +155 -0
- package/docs/evaluation/2026-10-17-test-coverage.md +127 -0
- package/docs/evaluation/README.md +123 -0
- package/docs/evaluation/client-reconnect-2026-10-17/README.md +41 -0
- package/docs/evaluation/client-reconnect-2026-10-17/checks.json +38 -0
- package/docs/evaluation/client-reconnect-2026-10-17/integrity.json +30 -0
- package/docs/evaluation/client-reconnect-2026-10-17/reconnect.json +57 -0
- package/docs/evaluation/client-reconnect-2026-10-17/registration-verification.json +389 -0
- package/docs/evaluation/client-reconnect-2026-10-17/review.json +10 -0
- package/docs/evaluation/controller-ledger-hooks-2026-10-26/README.md +115 -0
- package/docs/evaluation/evidence-2026-10-17/budget.proposed.json +13 -0
- package/docs/evaluation/evidence-2026-10-17/changed-files.txt +82 -0
- package/docs/evaluation/evidence-2026-10-17/checks.json +103 -0
- package/docs/evaluation/evidence-2026-10-17/comparison.json +247 -0
- package/docs/evaluation/evidence-2026-10-17/development-collection-failure.json +15 -0
- package/docs/evaluation/evidence-2026-10-17/full-attempt-default.json +19 -0
- package/docs/evaluation/evidence-2026-10-17/full-tests.json +17 -0
- package/docs/evaluation/evidence-2026-10-17/inventory.json +239 -0
- package/docs/evaluation/evidence-2026-10-17/manifest.json +359 -0
- package/docs/evaluation/evidence-2026-10-17/offline.json +1020 -0
- package/docs/evaluation/evidence-2026-10-17/ui-reference/T3-1280.png +0 -0
- package/docs/evaluation/evidence-2026-10-17/ui-reference/T3-375.png +0 -0
- package/docs/evaluation/evidence-2026-10-17/ui-reference/result.json +141 -0
- package/docs/evaluation/extension-ablation-2026-10-20/README.md +414 -0
- package/docs/evaluation/extension-ablation-2026-10-20/setup.md +140 -0
- package/docs/evaluation/extension-ablation-repeat-2026-10-21/README.md +142 -0
- package/docs/evaluation/extension-ablation-repeat-2026-10-21/setup.md +69 -0
- package/docs/evaluation/extension-audit-2026-10-17/README.md +149 -0
- package/docs/evaluation/extension-audit-2026-10-17/checks.json +38 -0
- package/docs/evaluation/extension-audit-2026-10-17/cursor-static-evidence.json +93 -0
- package/docs/evaluation/extension-audit-2026-10-17/installed-artifact-comparison.json +85 -0
- package/docs/evaluation/extension-audit-2026-10-17/installed-packages.json +100 -0
- package/docs/evaluation/extension-audit-2026-10-17/integrity.json +108 -0
- package/docs/evaluation/extension-audit-2026-10-17/navigation-cursor-registry.json +290 -0
- package/docs/evaluation/extension-audit-2026-10-17/navigation-static-evidence.json +185 -0
- package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-bindings.json +25 -0
- package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-cleanup.json +12 -0
- package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-probe.mjs +63 -0
- package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-reproduction.json +91 -0
- package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-result.json +83 -0
- package/docs/evaluation/extension-audit-2026-10-17/permission-cache-artifact-verification.json +24 -0
- package/docs/evaluation/extension-audit-2026-10-17/permission-cache-evidence.json +133 -0
- package/docs/evaluation/extension-audit-2026-10-17/permission-cache-report.md +64 -0
- package/docs/evaluation/extension-audit-2026-10-17/publication-export.json +10 -0
- package/docs/evaluation/extension-audit-2026-10-17/resolver-gates.json +51 -0
- package/docs/evaluation/extension-audit-2026-10-17/review.json +28 -0
- package/docs/evaluation/extension-audit-2026-10-17/run-openwiki-headless-probe.mjs +29 -0
- package/docs/evaluation/extension-audit-2026-10-17/summary.json +123 -0
- package/docs/evaluation/extension-audit-2026-10-17/web-openwiki-artifacts.json +29 -0
- package/docs/evaluation/extension-audit-2026-10-17/web-openwiki-evidence.json +116 -0
- package/docs/evaluation/extension-audit-2026-10-17/web-openwiki-report.md +113 -0
- package/docs/evaluation/extension-functions-2026-10-17/README.md +33 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/README.md +39 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-03dc1dad-9959-40df-b51c-7820991bf7e3.json +79 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-0c43651e-8c7d-4c7c-aa9b-5b5761141e3b.json +54 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-51247b13-87c1-4ec6-886b-82d922b0585a.json +89 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-5337f6bf-503f-4c45-aac0-43b142385a87.json +47 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-60285194-b1d1-4335-b616-6614941585df.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-6d2fbaa9-a720-4582-9be1-a95f4764786d.json +69 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-6fbb576c-d87d-478d-9c05-4b5ef3563598.json +125 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-730926d1-ef20-4b2d-ab74-7e542f1065e9.json +48 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-a1baa47a-5bbe-4a16-ade8-a350599eb911.json +48 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-bc1d69c7-784f-4ddb-9335-0d905330d568.json +91 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-d582757d-2859-4683-8310-ec158bf6d551.json +99 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-e6533a23-4933-4d6e-a250-b1b27f010d18.json +60 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts.json +138 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/guard.mjs +74 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/integrity.json +86 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/openwiki-final.json +125 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/run.mjs +36 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/web-final.json +99 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/worker.mjs +102 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/README.md +21 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-30-31-440Z-b1a47f88-8d86-4238-9ef8-af890d9ba74b.json +129 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-31-04-505Z-a3736add-73b8-4d77-8ea6-084ce8aa4599.json +129 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-31-15-654Z-b0197bff-8363-4d46-b84b-46d9ed67fc39.json +248 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-31-39-137Z-e373f24d-8a8c-46b0-86aa-9f687cfadb9b.json +278 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-32-05-324Z-f63095f1-755e-43fc-9d28-3cd1a9ff4f4d.json +251 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-32-25-191Z-fc9a83af-ceae-40d7-a737-8ef861ba7946.json +282 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-33-14-993Z-5e7eae34-09f0-4c80-9210-b8cc4d1acb5f.json +282 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-38-39-010Z-57cf6a26-f091-45de-8849-b616b303a46c.json +283 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-40-32-118Z-54528e43-ac07-4f9c-8f12-10c041130983.json +283 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-41-49-525Z-48195b6e-f20d-49a5-bd53-a732a0af10c1.json +324 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-42-18-175Z-215330e7-06a6-4666-af9c-2ecb214d8d71.json +324 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/integrity.json +165 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/probe.mjs +161 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipt-archive.json +150 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-3feeffc5-97bf-4079-8505-8119fab7956a.json +54 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-42e5eace-ad87-480a-94d9-448c1dd167b8.json +49 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-50f39f1c-8b48-442b-8d15-1f9c8f63bd81.json +49 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-8482b2b0-f600-488b-9f36-905e0125177a.json +54 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-128ffdce-6fd5-431b-8019-32b40ba4174d.json +42 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-3b572182-a737-471f-b9cb-b01d5da1752a.json +42 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-6c225370-2f47-4a0a-80d5-87d12f6c6fdc.json +37 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-b48399db-cbed-43de-9071-ac27c34e3757.json +37 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-3a8f52b6-c8d6-4d1c-844c-782a6624a29e.json +45 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-6fcdbc20-b14b-4b80-a4da-bf24078da8d2.json +50 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-a8d6f628-40e1-437e-b192-f7232a051a44.json +50 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-c3c39463-a2d6-4ff8-b985-8f6d1fb1aa02.json +45 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-a23c264f-151d-4ff0-aab4-bdbb2f6560d8.json +53 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-d8178bd3-6530-4915-9cf1-056a975bfbcd.json +53 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-e3985119-e101-459e-91cd-21a0905287ba.json +48 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-e7a40382-2d27-4db5-a133-dbe346a5dc60.json +48 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-223d7adc-2dbc-4017-b1ec-0c38294320e2.json +41 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-347a8548-d2e0-4846-a08e-b0399f8fd3b4.json +41 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-49b45e2b-e2d2-456f-b73f-e6bc938b6378.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-aaf432f2-bb91-41a7-b951-2d4316389632.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-204ab3e8-f1fe-4894-8fb0-08299deb4c21.json +41 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-9388d2df-fa15-479c-a4ef-2a774c366c0f.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-e0bb4742-214a-4b3f-88d2-44de54394e2f.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-f77e1e2d-742a-490f-9955-1dfb19f59c9c.json +41 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/runner.mjs +36 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/README.md +20 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-10-753Z-2bb4fff5-48cc-4f6b-ae1b-5cc1a07f610b.json +54 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-26-537Z-5adc4fb1-0008-4ef9-a106-aa372dabf061.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-32-362Z-30949c31-73a3-4dae-af81-68deded51543.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-38-494Z-8eec81b8-5576-48cb-b2fa-c279269db058.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-45-546Z-991647e5-7ea4-43c4-a90d-868e4ac38d83.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-37-02-277Z-2296fb35-e5cb-4bf1-9e83-7370bcb46bfe.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-37-28-390Z-e9c3d106-b4c9-4146-ae83-a2799c907fe5.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-37-37-371Z-8545c893-a8e3-4dc6-973b-81dfd97d798b.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-38-41-612Z-c57c4778-261d-4397-8a36-df9cc23ca629.json +58 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-38-51-661Z-0eb898de-7471-4f17-a308-5ef5d86421ff.json +58 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-38-55-412Z-8169d843-a9e7-48f4-88b1-3a90e1592df1.json +58 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-39-15-274Z-a5610333-e428-4cc6-9f5a-9206748ee512.json +58 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-39-39-506Z-d4c80a7b-76b4-4d11-bf0f-552d11b131b2.json +136 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-39-53-515Z-db409f47-8ee5-4354-b7f9-a258eb7e17d0.json +136 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-42-04-909Z-01d70cb3-6897-46ca-b8aa-1c69d5b5c7fc.json +148 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/integrity.json +205 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/probe.mjs +151 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipt-archive.json +186 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-104e378f-8f82-4ae9-bffc-7f1d52e00e74.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-182a8009-c52a-4760-9768-9cba15fceb9c.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-1f07360d-046f-4f0c-b40f-6b57a027220c.json +65 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-256cb86e-40ae-4fec-a2d2-9b7f66cc4be8.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-2667d991-3133-44c3-b883-c401b3c14cb1.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-394fc425-ed51-408f-ab09-6d26aee0d48f.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-531d3f1d-c326-4914-b768-3d32103513b9.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-5c7d0d62-8290-494f-8729-5d60bc626ad7.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-64af1d94-ea73-481f-b827-dbf6755d8591.json +66 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-65fce696-864c-4247-960e-59f6d671cbf9.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-66acde31-19c7-4d3e-9814-ddeb2cffd373.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-79d220d0-fc0b-4cad-85cc-40b9e904fb97.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-a58f0281-71bc-4757-9d6f-e281f813135e.json +65 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-c2b61e4b-fd33-4969-ab29-118957ca5fbb.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-f61b5020-2c05-40ad-9cb8-590b22790186.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-0ee0df5a-299f-451c-96e3-5abcf8bfa999.json +45 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-169e5146-09a2-4231-8017-ebd8d4b75f0a.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-19d479f2-7162-463e-90de-2d89a13e59a3.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-1bd882bb-2403-4269-8335-90f9803f57b7.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-2ab9d418-68b2-4679-bf42-f31b6945ea5a.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-3a6aa7d7-b956-4fe5-9555-a2c63408c067.json +45 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-6333425f-0b46-4ced-a272-3d48895ee853.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-6eccb170-ff45-40e2-afc5-dfc0f77c229f.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-7f330c57-9c3f-4879-a1d0-67c4c5c36050.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-8d9de272-165c-4bb8-a147-d1b306388472.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-c1ffa69f-25fa-4f45-a691-af3bc422c089.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-c24ad0c8-5e7e-4d71-9b22-3e2708ce1626.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-c5a3140e-a28e-4264-9ee6-51b1310b3123.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-cdbb3dde-2441-46ae-9111-f2a299d45807.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-d68f774c-d1f0-4620-b334-301a20edffc3.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/runner.mjs +147 -0
- package/docs/evaluation/extension-functions-2026-10-17/integrity.json +618 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/README.md +22 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/SHA256SUMS.txt +8 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempt.json +13 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-30-37-626Z-7ba0ce60-b805-4bf1-813f-80f0673c519d.json +50 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-31-06-997Z-0df6e689-b7f6-4daf-a730-724638c7e9bb.json +52 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-31-22-489Z-dfa50911-d117-400d-9ea3-76b224693c10.json +59 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-31-39-899Z-6792c0ef-c795-4136-98e2-b9a9b00489bd.json +59 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-31-58-555Z-e23d44fb-d2cb-42b6-b76b-f2ac53645401.json +59 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-32-18-734Z-3708117d-bca6-44a6-9f61-4339a67535ae.json +60 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-32-34-897Z-abbfb675-7120-46fc-8638-2dde943a3c51.json +114 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-33-30-753Z-f1965485-aa41-4a9a-b62e-267fc9d7686c.json +72 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-33-46-589Z-e3b46364-e0dd-4a95-91ce-c11f5192d83f.json +72 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-33-57-569Z-d296148e-2f64-4921-bad7-391d0f3cc61d.json +74 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-34-30-540Z-51791e8c-b2a7-4f93-bff6-9b0467aeba51.json +109 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-34-57-906Z-2c3e469c-6d89-4707-8bc6-e62dcfacdc7c.json +114 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-35-16-679Z-035260fc-f3d1-4c1c-9619-81f2aa2ced55.json +115 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-36-05-641Z-24ceb58d-441b-4ffe-9853-ef4d15eb8c81.json +73 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-37-00-445Z-1ca606b7-306f-41e9-8745-b53879c620bb.json +72 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-37-23-659Z-c958d5fc-5c17-46b9-abc0-87913f14fd4b.json +73 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-38-49-639Z-9e74ee3c-7cea-4d9e-832f-0b5068d161ec.json +112 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-39-53-463Z-5d834e9f-e247-4887-8200-dee41070567f.json +32 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-40-16-811Z-0be9d64c-a0d7-405c-b81a-12f8c6cfebac.json +33 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-40-36-020Z-412777d5-f352-4fa0-9a07-f017b5f04cbb.json +124 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-42-03-506Z-a0cca711-1300-4431-bfff-5814a409d0af.json +120 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-42-28-426Z-fb70da7e-4888-469a-b5cd-b74da52afa9f.json +112 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-42-41-596Z-c8e99863-70e2-40f1-a516-e9f41156ef44.json +71 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-44-06-279Z-39516e45-daf6-409b-b216-64179608cc2e.json +97 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-45-34-538Z-87ddef90-2fda-4211-a513-0516dec235f4.json +112 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-45-48-020Z-06f478f2-43c4-48a7-ac02-7e53d4df8aaf.json +112 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-46-00-807Z-a98cc49d-6cf6-4109-aa95-f2d36e8d35c3.json +97 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-46-34-183Z-77f75abc-9ec3-41b2-896f-b6f4a180dca8.json +160 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-46-56-605Z-f46134c2-8523-4892-ab76-e88195d79ed2.json +163 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/child-guard.mjs +30 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/final-result.json +42 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/function-probe.mjs +521 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/function-runner.mjs +201 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/integrity.json +153 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/receipt-archive.json +160 -0
- package/docs/evaluation/extension-functions-2026-10-17/review.json +27 -0
- package/docs/evaluation/extension-functions-2026-10-17/summary.json +102 -0
- package/docs/evaluation/extension-functions-2026-10-17/verification.json +103 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/README.md +106 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/auth-warmup.mjs +33 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/contained-agent-ro.json +433 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/contained.json +439 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/control.json +403 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/live.json +75 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/wrapper.sh +37 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/README.md +360 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/design.md +150 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/inventory.md +113 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/README.md +117 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/dry-run/dry-01-L1-A.json +202 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/dry-run/dry-02-L1-C.json +259 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/01-L1-A.json +169 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/02-L1-A.json +202 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/03-L1-C.json +256 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/approval.json +31 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run-2/01-L1-C.json +256 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run-2/02-L1-A.json +201 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run-2/approval.json +16 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live-plan.md +87 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/pre-registration.md +117 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S1.json +361 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S2.json +544 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S3.json +470 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S4.json +271 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S5.json +271 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S6.json +266 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/X6.json +29 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/summary.json +269 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S1.json +391 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S2.json +600 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S3.json +519 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S4.json +281 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S5.json +294 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S6.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S8.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/X6.json +32 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/summary.json +307 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S1.json +391 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S2.json +600 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S3.json +519 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S4.json +281 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S5.json +294 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S6.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S8.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/X6.json +32 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/summary.json +307 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S1.json +409 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S2.json +634 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S3.json +537 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S4.json +281 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S5.json +294 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S6.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S8.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/X6.json +32 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/summary.json +307 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S1.json +409 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S2.json +634 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S3.json +537 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S4.json +281 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S5.json +294 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S6.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S8.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/X6.json +32 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/summary.json +307 -0
- package/docs/evaluation/live-rescreen-2026-10-17/README.md +114 -0
- package/docs/evaluation/live-rescreen-2026-10-17/approval.json +18 -0
- package/docs/evaluation/live-rescreen-2026-10-17/approved-budget.json +13 -0
- package/docs/evaluation/live-rescreen-2026-10-17/approved-manifest.json +315 -0
- package/docs/evaluation/live-rescreen-2026-10-17/audit-rescreen.mjs +78 -0
- package/docs/evaluation/live-rescreen-2026-10-17/audit.json +152 -0
- package/docs/evaluation/live-rescreen-2026-10-17/backend-independent-checks.json +38 -0
- package/docs/evaluation/live-rescreen-2026-10-17/checks.json +54 -0
- package/docs/evaluation/live-rescreen-2026-10-17/execution.json +19 -0
- package/docs/evaluation/live-rescreen-2026-10-17/integrity.json +138 -0
- package/docs/evaluation/live-rescreen-2026-10-17/planning-ledger.json +26 -0
- package/docs/evaluation/live-rescreen-2026-10-17/review.json +16 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/comparison.json +177 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-1.claim +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-1.diagnostic.json +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-1.json +97 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.claim +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.json +104 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.patch +11 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.snapshot/contract.mjs +4 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.snapshot/package.json +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-3.claim +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-3.json +89 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.claim +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.json +104 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.patch +11 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.snapshot/contract.mjs +4 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.snapshot/package.json +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-5.claim +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-5.diagnostic.json +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-5.json +117 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-6.json +53 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runtime-observation.json +11 -0
- package/docs/evaluation/live-screening-2026-10-17/approval.json +13 -0
- package/docs/evaluation/live-screening-2026-10-17/approved-budget.json +13 -0
- package/docs/evaluation/live-screening-2026-10-17/approved-manifest.json +359 -0
- package/docs/evaluation/live-screening-2026-10-17/audit.json +143 -0
- package/docs/evaluation/live-screening-2026-10-17/integrity.json +148 -0
- package/docs/evaluation/live-screening-2026-10-17/inventory.json +239 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/comparison.json +247 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-1.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-1.diagnostic.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-1.json +98 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.json +104 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.patch +11 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.snapshot/contract.mjs +4 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.snapshot/package.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-3.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-3.diagnostic.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-3.json +97 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.json +104 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.patch +11 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.snapshot/contract.mjs +4 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.snapshot/package.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-5.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-5.diagnostic.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-5.json +97 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.json +104 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.patch +11 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.snapshot/contract.mjs +4 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.snapshot/package.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-7.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-7.json +108 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-8.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-8.diagnostic.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-8.json +116 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/README.md +124 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/ab-proposal.json +135 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/README.md +25 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/approved-decision.json +79 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/token-live-result.json +546 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/README.md +22 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/approved-decision.json +80 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/token-live-result.json +1663 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/README.md +23 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/token-live-result.json +1748 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/README.md +25 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/token-live-result.json +3019 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/token-live-result.json +2859 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/README.md +67 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/token-live-result.json +3019 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/token-live-result.json +2981 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/token-live-result.json +2887 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/token-live-result.json +3189 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/token-live-result.json +2929 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/token-live-result.json +3085 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/token-live-result.json +3019 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/token-live-result.json +2925 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/summary-rows.json +338 -0
- package/docs/evaluation/node24-followup-2026-10-17/README.md +55 -0
- package/docs/evaluation/node24-followup-2026-10-17/client-migration-review.json +20 -0
- package/docs/evaluation/node24-followup-2026-10-17/client-registration-migration.json +31 -0
- package/docs/evaluation/node24-followup-2026-10-17/client-registration-verification.json +389 -0
- package/docs/evaluation/node24-followup-2026-10-17/closure-checks.json +33 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-probe.mjs +259 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-report.md +39 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result-attempt-2.json +49 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result-attempt-3.json +76 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result-attempt-4.json +108 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result.json +12 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-run.mjs +96 -0
- package/docs/evaluation/node24-followup-2026-10-17/download.json +16 -0
- package/docs/evaluation/node24-followup-2026-10-17/extension-summary.json +97 -0
- package/docs/evaluation/node24-followup-2026-10-17/final-review.json +15 -0
- package/docs/evaluation/node24-followup-2026-10-17/install.json +10 -0
- package/docs/evaluation/node24-followup-2026-10-17/integrity.json +204 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-evidence.json +39 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-probe.mjs +277 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-report.md +35 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-19-48-378Z-b378dc9f-9ab8-4349-8892-78af8184f78f.json +151 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-20-22-821Z-85cfcba4-c05e-4c5a-9658-d8d70f5c8d1a.json +223 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-20-54-825Z-fd5d8373-6e29-4197-84bd-2e65251b4db8.json +207 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-21-44-636Z-488698ad-f8bf-4d7e-b85a-615275c32e5d.json +82 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-22-05-375Z-16f5d77c-32a2-4d0a-905a-e080b392316f.json +94 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-22-07-471Z-fcbe7c98-fed3-4120-a860-b2e3f9572836.json +63 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-22-17-638Z-45ec386d-3429-4a7c-a10e-8673c03861f0.json +63 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-22-22-485Z-1b08e134-667c-4416-8372-cb233939c48b.json +125 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-22-25-490Z-223fd05e-52f9-4996-88d7-3ec43a6ecdd9.json +125 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-23-42-291Z-f4af1e12-844e-4b2d-a090-9068e7626dd5.json +82 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-24-36-866Z-30770d13-c7ae-4309-921b-5c1b43050adb.json +52 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-25-05-378Z-2a5dffc1-3f3a-433a-823f-6e77964dcaee.json +53 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-25-15-842Z-798946f5-b9a5-4810-8a0c-35be6f40abb3.json +83 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-25-19-099Z-89bd000d-bb51-4e3a-b713-51ff1ff4e38b.json +87 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-runner.mjs +172 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-install.json +121 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-package-lock.json +2321 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-package.json +12 -0
- package/docs/evaluation/node24-followup-2026-10-17/launcher-review.json +17 -0
- package/docs/evaluation/node24-followup-2026-10-17/launcher-switch.json +28 -0
- package/docs/evaluation/node24-followup-2026-10-17/mcp-launcher-test.json +24 -0
- package/docs/evaluation/node24-followup-2026-10-17/migrate-client-node.mjs +129 -0
- package/docs/evaluation/node24-followup-2026-10-17/node-runtime-report.md +127 -0
- package/docs/evaluation/node24-followup-2026-10-17/node24-checks.json +44 -0
- package/docs/evaluation/node24-followup-2026-10-17/pi-launcher-test.json +13 -0
- package/docs/evaluation/node24-followup-2026-10-17/publication-export.json +11 -0
- package/docs/evaluation/node24-followup-2026-10-17/restore-launchers.mjs +26 -0
- package/docs/evaluation/node24-followup-2026-10-17/verify-client-node.mjs +36 -0
- package/docs/evaluation/permission-gates-2026-10-17/README.md +23 -0
- package/docs/evaluation/permission-gates-2026-10-17/attempts.json +53 -0
- package/docs/evaluation/permission-gates-2026-10-17/integrity.json +46 -0
- package/docs/evaluation/permission-gates-2026-10-17/permission-gate-probe.mjs +132 -0
- package/docs/evaluation/permission-gates-2026-10-17/permission-gate-worker.mjs +209 -0
- package/docs/evaluation/permission-gates-2026-10-17/permission-gates-result-final.json +53 -0
- package/docs/evaluation/permission-gates-2026-10-17/permission-gates-result-verified.json +54 -0
- package/docs/evaluation/permission-gates-2026-10-17/permission-gates-result.json +53 -0
- package/docs/evaluation/permission-gates-2026-10-17/review.json +19 -0
- package/docs/evaluation/permission-gates-2026-10-17/superseded-initial-receipt.json +40 -0
- package/docs/evaluation/pi-lens-registration-2026-10-19/README.md +90 -0
- package/docs/evaluation/pi-lens-registration-2026-10-19/probe.mjs +126 -0
- package/docs/evaluation/pi-lens-registration-2026-10-19/result.json +1 -0
- package/docs/evaluation/plan-continuation-2026-10-17/README.md +107 -0
- package/docs/evaluation/plan-continuation-2026-10-17/budget.proposed.json +13 -0
- package/docs/evaluation/plan-continuation-2026-10-17/checks.json +1048 -0
- package/docs/evaluation/plan-continuation-2026-10-17/integrity.json +58 -0
- package/docs/evaluation/plan-continuation-2026-10-17/inventory.json +239 -0
- package/docs/evaluation/plan-continuation-2026-10-17/manifest.proposed.json +315 -0
- package/docs/evaluation/plan-continuation-2026-10-17/next-stage-ledger.json +19 -0
- package/docs/evaluation/plan-continuation-2026-10-17/prepare-rescreen.mjs +30 -0
- package/docs/evaluation/plan-continuation-2026-10-17/prior-integrity.json +25 -0
- package/docs/evaluation/plan-continuation-2026-10-17/proposal-validation.json +14 -0
- package/docs/evaluation/plan-continuation-2026-10-17/receipt-contract-update.patch +40 -0
- package/docs/evaluation/plan-continuation-2026-10-17/review.json +8 -0
- package/docs/evaluation/plan-continuation-2026-10-17/source-delta.json +14 -0
- package/docs/evaluation/profile-evaluation.md +297 -0
- package/docs/evaluation/publication-2026-10-17/README.md +88 -0
- package/docs/evaluation/publication-2026-10-17/checks.json +117 -0
- package/docs/evaluation/publication-2026-10-17/integrity.json +21 -0
- package/docs/evaluation/publication-2026-10-17/publication-scan.json +63 -0
- package/docs/evaluation/publication-2026-10-17/review.json +21 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/README.md +16 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/bounded-wait.md +78 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/README.md +151 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-1/claude-projection.json +126 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-2/claude-projection.json +1895 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-3/claude-projection.json +1895 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-4/claude-projection.json +1797 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-5/claude-projection.json +1797 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/worker-usage.md +63 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/README.md +212 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/binding.json +20 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-ev-off.json +43 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-ev-spool.json +43 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-l3.json +39 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-pre.json +31 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e-teardown-setup-remove.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-digest-ev-e1.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-leaks.json +131 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-oracle.json +74 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-setup-1-dryrun.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-setup-2-apply.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-setup-3-verify.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-digest-ev-e2l.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-digest-ev-e2s.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-leaks.json +205 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-oracle.json +110 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-digest-ev-e3.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-leaks.json +215 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-oracle.json +79 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-digest-ev-e4a.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-digest-ev-e4b.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-late-a.json +16 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-late-b.json +16 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-leaks.json +167 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-oracle.json +70 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-run.json +37 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-digest-ev-e5.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-leaks.json +82 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-oracle.json +60 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-server-env-names.txt +14 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-digest-ev-e1.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-leaks.json +156 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-run.json +37 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-setup-apply.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-teardown-remove.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/final-e-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/kit.sha256 +23 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-packed-off.json +1185 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-packed-spool.json +1334 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-wt-off.json +1185 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-wt-spool.json +1334 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-digest-cc-analysis.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-leaks.json +80 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-oracle.json +61 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-leaks.json +80 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-oracle-stage1.json +34 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-oracle-stage2.json +35 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-snapshot-stage1.txt +4 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-snapshot-stage2.txt +5 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-digest-cc-abort.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-leaks.json +82 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-oracle-flow.json +61 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-oracle-late.json +16 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-controller-skill-remove.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-controller-skill-setup.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-digest-cx-analysis.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-leaks.json +93 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-oracle.json +61 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-leaks.json +93 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-oracle-stage1.json +34 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-oracle-stage2.json +35 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-snapshot-stage1.txt +4 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-snapshot-stage2.txt +5 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-digest-cx-abort.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-leaks.json +95 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-oracle-flow.json +61 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-oracle-late.json +16 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-digest-pre-analysis.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-digest-pre-code.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-leaks.json +86 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-oracle.json +39 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-digest-pre-analysis.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-digest-pre-code.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-leaks.json +47 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-oracle.json +39 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-after-cc.json +6 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-after-cx.json +6 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-after-e.json +6 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-before.json +6 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-control-apply.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-control-dryrun.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-provision-apply-attempt1.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-provision-apply-attempt2.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-provision-dryrun.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-writer-verify.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2-leaks.json +130 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2-oracle.txt +14 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2b-oracle.txt +16 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2c-oracle.txt +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2d-oracle.txt +6 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2r-leaks.json +130 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2r-oracle.txt +3 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2r-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3-collect.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3-finish.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3r-collect.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3r-finish.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w4-remove.json +1 -0
- package/docs/evaluation/subagent-probe-2026-10-26/README.md +132 -0
- package/docs/evaluation/subagent-probe-2026-10-26/results/K7.json +463 -0
- package/docs/evaluation/subagent-probe-2026-10-26/results/summary.json +50 -0
- package/docs/evaluation/test-coverage-2026-10-17.json +483 -0
- package/docs/evaluation/test-coverage-review-2026-10-17.json +22 -0
- package/docs/evaluation/test-coverage-verification-2026-10-17.json +31 -0
- package/docs/evaluation/token-footprint-2026-10-17/README.md +297 -0
- package/docs/evaluation/token-footprint-2026-10-17/baseline.json +25871 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/README.md +24 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/baseline.json +30346 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/client-projection.json +2538 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-approval/budget.json +13 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-approval/decision.json +69 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-approval/manifest.json +271 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-package.json +785 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/measurement.json +37956 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/summary.json +119 -0
- package/docs/evaluation/token-footprint-2026-10-17/checks-final.json +273 -0
- package/docs/evaluation/token-footprint-2026-10-17/checks.json +190 -0
- package/docs/evaluation/token-footprint-2026-10-17/client-attempts/README.md +25 -0
- package/docs/evaluation/token-footprint-2026-10-17/client-attempts/attempt-4.json +2274 -0
- package/docs/evaluation/token-footprint-2026-10-17/client-attempts/pilot-1.json +77 -0
- package/docs/evaluation/token-footprint-2026-10-17/client-attempts/pilot-2.json +81 -0
- package/docs/evaluation/token-footprint-2026-10-17/client-attempts/pilot-3.json +121 -0
- package/docs/evaluation/token-footprint-2026-10-17/current-calibration/baseline.json +30346 -0
- package/docs/evaluation/token-footprint-2026-10-17/current-calibration/measurement.json +37956 -0
- package/docs/evaluation/token-footprint-2026-10-17/current-calibration/summary.json +119 -0
- package/docs/evaluation/token-footprint-2026-10-17/current-client-projection.json +2538 -0
- package/docs/evaluation/token-footprint-2026-10-17/follow-up.md +76 -0
- package/docs/evaluation/token-footprint-2026-10-17/integrity.json +171 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-approval/README.md +36 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-approval/budget.json +13 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-approval/decision.json +69 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-approval/manifest.json +271 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-package.json +795 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-proposal.json +427 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/README.md +75 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/approved-budget.json +13 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/approved-decision.json +69 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/approved-manifest.json +271 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/token-live-result.json +837 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/approved-budget.json +13 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/approved-decision.json +69 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/approved-manifest.json +271 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/token-live-result.json +985 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/approved-budget.json +13 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/approved-decision.json +69 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/approved-manifest.json +271 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/token-live-result.json +3055 -0
- package/docs/evaluation/token-footprint-2026-10-17/measurement.json +32476 -0
- package/docs/evaluation/token-footprint-2026-10-17/prior-calibration/README.md +20 -0
- package/docs/evaluation/token-footprint-2026-10-17/prior-calibration/integrity.json +40 -0
- package/docs/evaluation/token-footprint-2026-10-17/summary.json +119 -0
- package/docs/evaluation/tool-definitions-2026-10-18/README.md +204 -0
- package/docs/evaluation/tool-definitions-2026-10-18/codex-projection/after/client-projection.json +2853 -0
- package/docs/evaluation/tool-definitions-2026-10-18/codex-projection/before/client-projection.json +2853 -0
- package/docs/evaluation/tool-definitions-2026-10-18/compare-validation.mjs +64 -0
- package/docs/evaluation/tool-definitions-2026-10-18/diff-validation.mjs +13 -0
- package/docs/evaluation/tool-definitions-2026-10-18/measure-wire.mjs +31 -0
- package/docs/evaluation/worker-system-prompt-2026-10-26/README.md +95 -0
- package/docs/evaluation/worker-system-prompt-2026-10-26/probe.mjs +155 -0
- package/docs/execution-modes.md +388 -0
- package/docs/installation.md +246 -12
- package/docs/isolation-setup.md +258 -0
- package/docs/macos-setup-design.md +2 -2
- package/docs/pi-extensions-design.md +71 -16
- package/docs/releasing.md +12 -6
- package/docs/reviews/2026-10-18-adr-0008-decision-brief.md +53 -0
- package/docs/roadmap.md +320 -9
- package/docs/session-mcp.md +5 -1
- package/docs/skills.md +23 -0
- package/docs/sprints/2026-10-15-s4-decision.md +73 -4
- package/docs/sprints/2026-10-17-token-footprint.md +130 -0
- package/docs/sprints/2026-10-18-s5-maintenance-orchestration.md +202 -0
- package/docs/sprints/2026-10-21-s6-ledger-event-bridge.md +120 -0
- package/docs/sprints/2026-10-24-s7-stabilization-live-acceptance.md +173 -0
- package/docs/sprints/2026-10-24-s8-writer-migration.md +235 -0
- package/docs/sprints/2026-10-26-s10-orchestration-reliability.md +250 -0
- package/docs/sprints/2026-10-26-s11-orchestration-gaps.md +173 -0
- package/docs/threat-model.md +37 -6
- package/docs/tool-contracts.md +91 -9
- package/package.json +17 -11
- package/scripts/isolation-acceptance.mjs +709 -0
- package/scripts/isolation-probe.cjs +213 -0
- package/skills/pi-session-implementation/SKILL.md +13 -3
- package/skills/pi-session-orchestration/SKILL.md +50 -13
- package/skills/pi-session-orchestration/references/start-errors.md +12 -0
- package/skills/pi-session-review/SKILL.md +13 -5
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "pi-profile-extension-evaluation-private",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"pi-lens": "4.4.3",
|
|
8
|
+
"context-mode": "1.0.169",
|
|
9
|
+
"pi-cache-optimizer": "2.9.3",
|
|
10
|
+
"@gotgenes/pi-permission-system": "40.3.0"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "independent-read-only-review",
|
|
3
|
+
"reviewed_at": "2026-10-17T09:22:18.303Z",
|
|
4
|
+
"status": "PASS",
|
|
5
|
+
"findings": [],
|
|
6
|
+
"reviewed": [
|
|
7
|
+
"actual Pi and MCP launchers",
|
|
8
|
+
"fixed selector, child PATH and fail-closed routing",
|
|
9
|
+
"original backup and current hashes",
|
|
10
|
+
"MCP module hash preservation",
|
|
11
|
+
"launcher test evidence"
|
|
12
|
+
],
|
|
13
|
+
"limitation": "Three existing Node 22 MCP connections still require client-side reconnect. New-start qualification does not imply all existing processes were migrated.",
|
|
14
|
+
"changes": 0,
|
|
15
|
+
"test_runs": 0,
|
|
16
|
+
"provider_calls": 0
|
|
17
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "owned-node-launcher-switch",
|
|
3
|
+
"scope": "node24-extension-followup-04470d85-3a99-47e3-b356-ce96e77de0dd",
|
|
4
|
+
"created_at": "2026-10-17T09:18:15.784Z",
|
|
5
|
+
"node_version": "24.22.0",
|
|
6
|
+
"runtime_target": ".local/opt/node-v24.22.0",
|
|
7
|
+
"selector": ".local/share/pi-node/current",
|
|
8
|
+
"selector_original": null,
|
|
9
|
+
"pi": {
|
|
10
|
+
"entry": ".pi/agent/bin/pi",
|
|
11
|
+
"original_type": "file",
|
|
12
|
+
"original_hash": "sha256:da0c6a49fe94aadc9765cc7afc6ba6b17e553eed0247d0385c160bc188f5cfbb",
|
|
13
|
+
"original_mode": 493,
|
|
14
|
+
"backup_file": "pi-launcher.original",
|
|
15
|
+
"new_hash": "sha256:e1e9e3d2ae03af319cae5dfca8aff98e496ef68fe4ec67b37f5f96bbb91ac445"
|
|
16
|
+
},
|
|
17
|
+
"mcp": {
|
|
18
|
+
"entry": ".npm-global/bin/pi-session-mcp",
|
|
19
|
+
"original_type": "symlink",
|
|
20
|
+
"original_target": "../lib/node_modules/pi-session-mcp/dist/main.js",
|
|
21
|
+
"new_hash": "sha256:ef635778496a95ea1d51916ce860b91fbc87b1753c229a64f67e230f8c8db646",
|
|
22
|
+
"module_hash": "sha256:47875d38886528ace6b242df2c6ad79d624c51e330e63c2f401576eadc449ed7"
|
|
23
|
+
},
|
|
24
|
+
"system_node_changed": false,
|
|
25
|
+
"production_profiles_changed": false,
|
|
26
|
+
"status": "APPLIED",
|
|
27
|
+
"backup_scope": ".local/state/pi-node24-switch/node24-extension-followup-04470d85-3a99-47e3-b356-ce96e77de0dd"
|
|
28
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "actual-installed-mcp-launcher-node24-handshake",
|
|
3
|
+
"status": "PASS",
|
|
4
|
+
"runtime": {
|
|
5
|
+
"node": "24.22.0",
|
|
6
|
+
"expected_interpreter": true,
|
|
7
|
+
"child_path_prefers_runtime": true
|
|
8
|
+
},
|
|
9
|
+
"tools": [
|
|
10
|
+
"pi_capabilities_get",
|
|
11
|
+
"pi_session_start",
|
|
12
|
+
"pi_session_list",
|
|
13
|
+
"pi_session_get",
|
|
14
|
+
"pi_session_prompt",
|
|
15
|
+
"pi_session_abort",
|
|
16
|
+
"pi_session_close",
|
|
17
|
+
"pi_turn_get"
|
|
18
|
+
],
|
|
19
|
+
"capabilities": "PASS",
|
|
20
|
+
"session_starts": 0,
|
|
21
|
+
"provider_calls": 0,
|
|
22
|
+
"stderr_bytes_discarded": 0,
|
|
23
|
+
"observed_process_cleanup": "PASS"
|
|
24
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// Operator-authorized interpreter-only migration, not a general setup replacement.
|
|
2
|
+
import { readFile, rename, lstat, open } from 'node:fs/promises';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join, dirname } from 'node:path';
|
|
5
|
+
import { createHash } from 'node:crypto';
|
|
6
|
+
const home=homedir(), scope='node24-extension-followup-04470d85-3a99-47e3-b356-ce96e77de0dd';
|
|
7
|
+
const state=join(home,'.local/state/pi-node24-switch',scope);
|
|
8
|
+
const root=join(home,'.npm-global/lib/node_modules/pi-session-mcp');
|
|
9
|
+
const {immutableReleaseBinding,registrationFingerprint}=await import(join(root,'dist/setup.js'));
|
|
10
|
+
const {DurableOwnershipStore}=await import(join(root,'dist/setup-ownership.js'));
|
|
11
|
+
class MigrationError extends Error {}
|
|
12
|
+
const hash=b=>createHash('sha256').update(b).digest('hex');
|
|
13
|
+
const oldNode='/usr/bin/node', newNode=join(home,'.local/opt/node-v24.22.0/bin/node');
|
|
14
|
+
const entry=join(root,'dist/main.js');
|
|
15
|
+
const targets=[{client:'codex',scope:'user',alias:'pi-session-mcp'},{client:'claude-code',scope:'user',alias:'pi-session-mcp'}];
|
|
16
|
+
const paths=[join(home,'.codex/config.toml'),join(home,'.claude.json')];
|
|
17
|
+
// Preserve all bytes except the one command string. Refuse ambiguous syntax.
|
|
18
|
+
function registration(text,index,from,to){
|
|
19
|
+
let start,end,obj,command;
|
|
20
|
+
if(index===0){
|
|
21
|
+
const headers=[...text.matchAll(/^\[mcp_servers\.pi-session-mcp\]\r?$/gm)];
|
|
22
|
+
if(headers.length!==1)throw new MigrationError('codex_header_ambiguous');
|
|
23
|
+
start=headers[0].index+headers[0][0].length;
|
|
24
|
+
const next=/^\[/m.exec(text.slice(start));end=next?start+next.index:text.length;
|
|
25
|
+
const block=text.slice(start,end);
|
|
26
|
+
const commands=[...block.matchAll(/^command\s*=\s*("[^"\r\n]*")\s*\r?$/gm)];
|
|
27
|
+
if(commands.length!==1)throw new MigrationError('codex_command_ambiguous');
|
|
28
|
+
command=commands[0];
|
|
29
|
+
const args=/^args\s*=\s*(\[[^\r\n]*\])\s*\r?$/m.exec(block);
|
|
30
|
+
if(!args||JSON.stringify(JSON.parse(args[1]))!==JSON.stringify([entry]))throw new MigrationError('codex_args_mismatch');
|
|
31
|
+
obj={command:JSON.parse(command[1])};
|
|
32
|
+
}else{
|
|
33
|
+
const parsed=JSON.parse(text);obj=parsed.mcpServers?.['pi-session-mcp'];
|
|
34
|
+
if(!obj||JSON.stringify(obj.args)!==JSON.stringify([entry]))throw new MigrationError('claude_args_mismatch');
|
|
35
|
+
const keys=[...text.matchAll(/"pi-session-mcp"\s*:\s*\{/g)];
|
|
36
|
+
if(keys.length!==1)throw new MigrationError('claude_key_ambiguous');
|
|
37
|
+
start=keys[0].index+keys[0][0].lastIndexOf('{');
|
|
38
|
+
let depth=0,inString=false,escape=false;
|
|
39
|
+
for(end=start;end<text.length;end++){
|
|
40
|
+
const c=text[end];if(inString){if(escape)escape=false;else if(c==='\\')escape=true;else if(c==='"')inString=false;}
|
|
41
|
+
else if(c==='"')inString=true;else if(c==='{')depth++;else if(c==='}'&&!--depth){end++;break;}
|
|
42
|
+
}
|
|
43
|
+
const block=text.slice(start,end);
|
|
44
|
+
if(JSON.stringify(JSON.parse(block))!==JSON.stringify(obj))throw new MigrationError('claude_scope_mismatch');
|
|
45
|
+
const commands=[...block.matchAll(/"command"\s*:\s*("(?:\\.|[^"\\])*")/g)];
|
|
46
|
+
if(commands.length!==1)throw new MigrationError('claude_command_ambiguous');command=commands[0];
|
|
47
|
+
}
|
|
48
|
+
if(obj.command!==from)throw new MigrationError('interpreter_diverged');
|
|
49
|
+
const block=text.slice(start,end), offset=start+command.index+command[0].indexOf(command[1]);
|
|
50
|
+
return text.slice(0,offset)+JSON.stringify(to)+text.slice(offset+command[1].length);
|
|
51
|
+
}
|
|
52
|
+
async function checkedFile(path){const s=await lstat(path);if(!s.isFile()||s.isSymbolicLink()||s.uid!==process.getuid())throw new MigrationError('config_owner_invalid');return {bytes:await readFile(path),mode:s.mode&0o777};}
|
|
53
|
+
async function syncDirectory(path){const handle=await open(path,'r');try{await handle.sync();}finally{await handle.close();}}
|
|
54
|
+
async function durableCreate(path,bytes,mode){const handle=await open(path,'wx',mode);try{await handle.writeFile(bytes);await handle.sync();}finally{await handle.close();}await syncDirectory(dirname(path));}
|
|
55
|
+
async function replace(path,before,after,mode){
|
|
56
|
+
if(hash(await readFile(path))!==hash(before))throw new MigrationError('config_concurrent_edit');
|
|
57
|
+
const temp=path+'.'+scope;await durableCreate(temp,after,mode);
|
|
58
|
+
const current=await checkedFile(path);
|
|
59
|
+
if(hash(current.bytes)!==hash(before)||current.mode!==mode)throw new MigrationError('config_concurrent_edit');
|
|
60
|
+
await rename(temp,path);await syncDirectory(dirname(path));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
try{
|
|
64
|
+
const operation=process.argv[2]??'--check';if(process.argv.length>3||!['--check','--apply','--restore-check','--restore'].includes(operation))throw new MigrationError('usage_invalid');
|
|
65
|
+
if(await readFile(join(state,'.owner'),'utf8')!==scope)throw new MigrationError('scope_owner_invalid');
|
|
66
|
+
const release=await immutableReleaseBinding(root);
|
|
67
|
+
const claude=JSON.parse(await readFile(paths[1],'utf8')).mcpServers['pi-session-mcp'];
|
|
68
|
+
const config=claude.env?.PI_SESSION_MCP_CONFIG;
|
|
69
|
+
if(typeof config!=='string'||Object.keys(claude.env).length!==1)throw new MigrationError('config_env_mismatch');
|
|
70
|
+
const fp=node=>registrationFingerprint({scope:'user',nodePath:node,entryPath:entry,configPath:config},release);
|
|
71
|
+
const oldFingerprint=fp(oldNode),newFingerprint=fp(newNode);
|
|
72
|
+
const store=new DurableOwnershipStore(join(home,'.local/state/pi-session-mcp/ownership.json'));
|
|
73
|
+
const restoring=operation.startsWith('--restore'),applying=operation==='--apply'||operation==='--restore';
|
|
74
|
+
const result=await store.transaction(async access=>{
|
|
75
|
+
const files=await Promise.all(paths.map(checkedFile));
|
|
76
|
+
const records=await Promise.all(targets.map(t=>access.get(t)));
|
|
77
|
+
let meta;
|
|
78
|
+
try{meta=JSON.parse(await readFile(join(state,'client-registration-migration.json'),'utf8'));}catch(e){if(e.code!=='ENOENT')throw e;}
|
|
79
|
+
if(meta&&(meta.scope!==scope||meta.release!==release||meta.oldFingerprint!==oldFingerprint||meta.newFingerprint!==newFingerprint))throw new MigrationError('journal_binding_mismatch');
|
|
80
|
+
if(restoring&&!meta)throw new MigrationError('restore_journal_missing');
|
|
81
|
+
for(let i=0;i<2;i++){
|
|
82
|
+
const r=records[i];
|
|
83
|
+
if(!r||r.phase!=='owned'||![oldFingerprint,...(meta?[newFingerprint]:[])].includes(r.fingerprint))throw new MigrationError('owned_release_binding_mismatch');
|
|
84
|
+
if(meta&&JSON.stringify({...r,fingerprint:oldFingerprint})!==JSON.stringify(meta.records[i]))throw new MigrationError('ownership_record_changed');
|
|
85
|
+
}
|
|
86
|
+
// Existing CLI adapters prove each complete registration, including env and scope.
|
|
87
|
+
const {createProcessRunner}=await import(join(root,'dist/setup-process.js'));
|
|
88
|
+
const {createCodexAdapter,createClaudeCodeAdapter}=await import(join(root,'dist/client-adapters/index.js'));
|
|
89
|
+
const runner=createProcessRunner();
|
|
90
|
+
const adapters=[createCodexAdapter({runner}),createClaudeCodeAdapter({runner})];
|
|
91
|
+
const currentNodes=[];
|
|
92
|
+
const destination=restoring?oldNode:newNode;
|
|
93
|
+
const replacements=[];
|
|
94
|
+
for(let i=0;i<2;i++){
|
|
95
|
+
const text=files[i].bytes.toString('utf8');let current;
|
|
96
|
+
for(const candidate of [oldNode,...(meta?[newNode]:[])]){
|
|
97
|
+
try{registration(text,i,candidate,destination);current=candidate;break;}catch{}
|
|
98
|
+
}
|
|
99
|
+
if(!current)throw new MigrationError('registration_command_diverged');
|
|
100
|
+
const inspected=await adapters[i].inspect('user',{scope:'user',nodePath:current,entryPath:entry,configPath:config});
|
|
101
|
+
if(inspected.state!=='equivalent')throw new MigrationError('registration_not_equivalent');
|
|
102
|
+
currentNodes.push(current);replacements.push(Buffer.from(registration(text,i,current,destination)));
|
|
103
|
+
}
|
|
104
|
+
if(meta)for(let i=0;i<2;i++)if(hash(await readFile(join(state,`client-${i}.original`)))!==meta.files[i].before)throw new MigrationError('original_backup_changed');
|
|
105
|
+
if(!applying)return {status:'CHECK_PASS',operation,mutations:0,targets:2,owned_release_proved:true,recovery_journal_present:!!meta};
|
|
106
|
+
const journal=async()=>{
|
|
107
|
+
const stage=join(state,'client-registration-migration.next');
|
|
108
|
+
await durableCreate(stage,JSON.stringify(meta,null,2)+'\n',0o600);
|
|
109
|
+
await rename(stage,join(state,'client-registration-migration.json'));await syncDirectory(state);
|
|
110
|
+
};
|
|
111
|
+
if(!meta){
|
|
112
|
+
for(let i=0;i<2;i++)await durableCreate(join(state,`client-${i}.original`),files[i].bytes,0o600);
|
|
113
|
+
meta={scope,release,oldFingerprint,newFingerprint,files:files.map((f,i)=>({before:hash(f.bytes),after:hash(replacements[i]),mode:f.mode})),records,steps:[]};
|
|
114
|
+
await journal(); // Durable recovery intent precedes every configuration/ownership mutation.
|
|
115
|
+
}
|
|
116
|
+
for(let i=0;i<2;i++){
|
|
117
|
+
access.assertHealthy();
|
|
118
|
+
if(currentNodes[i]!==destination)await replace(paths[i],files[i].bytes,replacements[i],files[i].mode);
|
|
119
|
+
if(hash(await readFile(paths[i]))!==hash(replacements[i]))throw new MigrationError('postwrite_mismatch');
|
|
120
|
+
meta.steps.push({operation,index:i,event:'config_verified'});await journal();
|
|
121
|
+
const inspected=await adapters[i].inspect('user',{scope:'user',nodePath:destination,entryPath:entry,configPath:config});
|
|
122
|
+
if(inspected.state!=='equivalent')throw new MigrationError('postwrite_registration_mismatch');
|
|
123
|
+
await access.put({...records[i],fingerprint:restoring?oldFingerprint:newFingerprint});
|
|
124
|
+
meta.steps.push({operation,index:i,event:'ownership_updated'});await journal();
|
|
125
|
+
}
|
|
126
|
+
return {status:restoring?'RESTORED':'APPLIED',operation,targets:2,owned_release_proved:true,only_command_tokens_changed:true,skills_changed:false,release};
|
|
127
|
+
});
|
|
128
|
+
console.log(JSON.stringify(result));
|
|
129
|
+
}catch(e){console.error(JSON.stringify({status:'REFUSED',code:e instanceof MigrationError?e.message:'migration_failed'}));process.exitCode=1;}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Node 24 installation and launcher binding
|
|
2
|
+
|
|
3
|
+
Date: 2026-10-17. The operator approved continuing the previously proposed Node
|
|
4
|
+
24 update, explicit Pi/MCP interpreter selection and provider-free verification.
|
|
5
|
+
|
|
6
|
+
Node **24.22.0**, Linux x64, was downloaded from the official versioned Node
|
|
7
|
+
distribution endpoint. The archive's SHA-256 matched the versioned official
|
|
8
|
+
HTTPS `SHASUMS256.txt` exactly. [Download evidence](download.json) records both
|
|
9
|
+
URLs, byte count and hash. No detached-signature verification is claimed.
|
|
10
|
+
|
|
11
|
+
The runtime was installed alongside existing installations in the user's local
|
|
12
|
+
opt directory. The system Node 22.23.2 package and the separate existing Node
|
|
13
|
+
24.20.0 installation were preserved. Pi remains version 1.1.0; the evaluated
|
|
14
|
+
project and its SDK remain 0.8.3 and 1.2.0. No SDK or Pi package upgrade was
|
|
15
|
+
substituted for a Node update.
|
|
16
|
+
|
|
17
|
+
## Explicit launch paths
|
|
18
|
+
|
|
19
|
+
The shared selector is `$HOME/.local/share/pi-node/current`, pointing to the new
|
|
20
|
+
24.22.0 installation. Both the managed Pi launcher and the installed
|
|
21
|
+
`pi-session-mcp` executable now explicitly execute this selector's Node binary.
|
|
22
|
+
They prepend the same runtime's `bin` directory to child PATH and fail if the
|
|
23
|
+
runtime is missing. They do not depend on an optional `XDG_DATA_HOME` override or
|
|
24
|
+
fall back silently to the system interpreter.
|
|
25
|
+
|
|
26
|
+
The MCP executable's former npm-owned symlink was replaced with the scoped
|
|
27
|
+
wrapper; the installed package's JavaScript entry was not edited. Pi's managed
|
|
28
|
+
version selection is retained. The global shell PATH was not edited.
|
|
29
|
+
|
|
30
|
+
A subsequent inspection found that both actual user registrations, Codex and
|
|
31
|
+
Claude Code, bypass this wrapper: they directly invoked `/usr/bin/node` with the
|
|
32
|
+
installed server entry. Both registrations were migrated to the real Node
|
|
33
|
+
24.22.0 executable. Only their command string changed; args, environment and all
|
|
34
|
+
other configuration bytes were preserved. The existing owned release binding was
|
|
35
|
+
proved before mutation, and only the two registration fingerprints were updated.
|
|
36
|
+
Managed skills were preserved. The normal setup CLI has no interpreter migration
|
|
37
|
+
operation; its refusal to replace a divergent binding was retained. The explicit
|
|
38
|
+
operator-authorized migration uses a separate reviewed helper with the existing
|
|
39
|
+
ownership fence, private backups and a persistent recovery journal.
|
|
40
|
+
[Migration](client-registration-migration.json),
|
|
41
|
+
[independent review](client-migration-review.json).
|
|
42
|
+
|
|
43
|
+
Direct client registrations bind the **server** to Node 24. They do not prepend
|
|
44
|
+
PATH like the wrappers. Children that select `node` through PATH can therefore
|
|
45
|
+
still use the client's original runtime. Likewise a bare `node` in an unrelated
|
|
46
|
+
shell can remain Node 22. No host-wide or child-runtime migration is claimed.
|
|
47
|
+
|
|
48
|
+
The new official runtime bundles npm 11.19.1. The existing user-prefix npm 12.2.0
|
|
49
|
+
was not replaced. PATH inherited from these launchers prefers the runtime's
|
|
50
|
+
bundled npm; the isolated package install used that recorded version with
|
|
51
|
+
lifecycle scripts disabled.
|
|
52
|
+
|
|
53
|
+
For an optional shell-local selection:
|
|
54
|
+
|
|
55
|
+
```sh
|
|
56
|
+
export PATH="$HOME/.local/share/pi-node/current/bin:$PATH"
|
|
57
|
+
node --version
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Verification
|
|
61
|
+
|
|
62
|
+
- The real `pi --version` path returned **1.1.0**. A preload receipt independently
|
|
63
|
+
observed Node **24.22.0**, the expected executable and child PATH, even when
|
|
64
|
+
the incoming PATH selected only system locations. [Pi result](pi-launcher-test.json).
|
|
65
|
+
- The real installed MCP executable completed initialize, `tools/list` and
|
|
66
|
+
`pi_capabilities_get` with a fresh synthetic configuration and isolated HOME.
|
|
67
|
+
Its receipt likewise observed Node **24.22.0**. Eight tools were listed;
|
|
68
|
+
zero sessions were started and zero providers were called. Child termination
|
|
69
|
+
was observed. [MCP result](mcp-launcher-test.json).
|
|
70
|
+
- The full provider-free suite passed **1,459 tests**, six skipped, zero failures,
|
|
71
|
+
across 60 files. The standalone offline CLI passed **308 tests** with no failures
|
|
72
|
+
or skips. These counts overlap. Typecheck and both builds passed.
|
|
73
|
+
[Source-bound checks](node24-checks.json).
|
|
74
|
+
- Evaluated source digest remained
|
|
75
|
+
`sha256:686887d57899c2e55593bb7dd98b78be08ea0fc6c471a6dd4eab3298f890d160`.
|
|
76
|
+
- An independent read-only review found no concrete launcher/ownership issue.
|
|
77
|
+
[Review](launcher-review.json).
|
|
78
|
+
- Offline Doctor, exact registration inspection and the normal setup verification
|
|
79
|
+
were run against the actual installed package and existing configuration.
|
|
80
|
+
A separate bounded direct-registration handshake invokes only initialize,
|
|
81
|
+
`tools/list` and `pi_capabilities_get`. No session or provider was started.
|
|
82
|
+
[Actual-client verification](client-registration-verification.json).
|
|
83
|
+
|
|
84
|
+
Three pre-existing MCP stdio connections were still running Node 22 when checked:
|
|
85
|
+
one belongs to a Codex client and two to Claude clients. Their processes cannot
|
|
86
|
+
change interpreter in place. This session has no client reconnect control API;
|
|
87
|
+
it did not terminate peers whose sessions and pipes it does not own. Those clients
|
|
88
|
+
must reconnect their MCP server to apply the new command. The successful
|
|
89
|
+
fresh-start test does not mean that all existing connections were migrated.
|
|
90
|
+
For Codex, the documented desktop path is Settings → MCP servers → Restart;
|
|
91
|
+
the IDE extension exposes Restart extension after saving the server settings.
|
|
92
|
+
[Official Codex MCP configuration](https://learn.chatgpt.com/docs/extend/mcp?surface=cli).
|
|
93
|
+
|
|
94
|
+
## Ownership and restoration
|
|
95
|
+
|
|
96
|
+
The original Pi launcher, original MCP symlink target, file modes, original/current
|
|
97
|
+
hashes and an ownership marker are stored under the user's local state directory
|
|
98
|
+
in scope `node24-extension-followup-04470d85-3a99-47e3-b356-ce96e77de0dd`.
|
|
99
|
+
The [switch record](launcher-switch.json) is path-free relative to user home.
|
|
100
|
+
|
|
101
|
+
The [restoration helper](restore-launchers.mjs) defaults to a non-mutating check.
|
|
102
|
+
It refuses to act if the owner, backups, current wrappers or selector diverged.
|
|
103
|
+
Its check passed. With an explicit `--apply`, it restores the original launcher
|
|
104
|
+
and symlink and removes only this switch's selector; it retains the installed
|
|
105
|
+
Node distribution and evaluation artifacts.
|
|
106
|
+
|
|
107
|
+
The launcher helper does **not** restore the two direct client registrations.
|
|
108
|
+
For a complete interpreter rollback, first run the separate
|
|
109
|
+
[client migration helper](migrate-client-node.mjs) with `--restore-check`, then
|
|
110
|
+
explicitly `--restore`, and only then restore launchers. The client helper
|
|
111
|
+
revalidates release binding, ownership and exact registration, replaces only the
|
|
112
|
+
current command token, and preserves other client edits. Its journal can recover
|
|
113
|
+
proved old/new intermediate states after interruption; unrecognized divergence
|
|
114
|
+
is refused. Leftover staging files fail closed and require inspection. Both
|
|
115
|
+
helpers were checked; neither restoration was applied. Private full configuration
|
|
116
|
+
backups remain outside the repository and are never copied into this dossier.
|
|
117
|
+
|
|
118
|
+
```sh
|
|
119
|
+
"$HOME/.local/opt/node-v24.22.0/bin/node" \
|
|
120
|
+
"$HOME/.local/state/pi-node24-switch/node24-extension-followup-04470d85-3a99-47e3-b356-ce96e77de0dd/restore-launchers.mjs" \
|
|
121
|
+
--check
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Future npm or managed-Pi upgrades can regenerate these launcher files. Their Node
|
|
125
|
+
binding must then be checked again; restoring over later unrelated edits is
|
|
126
|
+
deliberately refused. No authentication store, production profile, deployment or
|
|
127
|
+
external repository was changed by this installation.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "node24-provider-free-verification",
|
|
3
|
+
"verified_at": "2026-10-17T09:22:18.294Z",
|
|
4
|
+
"node": "24.22.0",
|
|
5
|
+
"source_binding": {
|
|
6
|
+
"commit": "406dae7e6b99aa5715960490e869bd3fc668cca2",
|
|
7
|
+
"digest": "sha256:686887d57899c2e55593bb7dd98b78be08ea0fc6c471a6dd4eab3298f890d160"
|
|
8
|
+
},
|
|
9
|
+
"source_unchanged": true,
|
|
10
|
+
"full_suite": {
|
|
11
|
+
"exit_code": 0,
|
|
12
|
+
"passed": 1459,
|
|
13
|
+
"failed": 0,
|
|
14
|
+
"skipped": 6,
|
|
15
|
+
"total": 1465,
|
|
16
|
+
"files": 60,
|
|
17
|
+
"command": "npm test -- --maxWorkers=2 --reporter=json",
|
|
18
|
+
"raw_result_hash": "sha256:a032b98a5d34ef1db38f5fd2c5a0f11dd018bccfac9fecec5f4f239ba06c9c35"
|
|
19
|
+
},
|
|
20
|
+
"standalone_offline": {
|
|
21
|
+
"exit_code": 0,
|
|
22
|
+
"harness_status": "PASS",
|
|
23
|
+
"summary": {
|
|
24
|
+
"numTotalTests": 308,
|
|
25
|
+
"numPassedTests": 308,
|
|
26
|
+
"numFailedTests": 0,
|
|
27
|
+
"numPendingTests": 0,
|
|
28
|
+
"success": true
|
|
29
|
+
},
|
|
30
|
+
"model_starts": 0,
|
|
31
|
+
"provider_calls": 0
|
|
32
|
+
},
|
|
33
|
+
"typecheck": {
|
|
34
|
+
"exit_code": 0
|
|
35
|
+
},
|
|
36
|
+
"build": {
|
|
37
|
+
"exit_code": 0
|
|
38
|
+
},
|
|
39
|
+
"build_cli": {
|
|
40
|
+
"exit_code": 0
|
|
41
|
+
},
|
|
42
|
+
"root_package_lock_changed": false,
|
|
43
|
+
"note": "Offline subset overlaps full suite. Raw tests remain in owned ignored scope; sanitized summary is archived."
|
|
44
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "actual-pi-launcher-runtime-probe",
|
|
3
|
+
"invocation": "pi --version",
|
|
4
|
+
"exit_code": 0,
|
|
5
|
+
"pi_version": "1.1.0",
|
|
6
|
+
"runtime": {
|
|
7
|
+
"node": "24.22.0",
|
|
8
|
+
"expected_interpreter": true,
|
|
9
|
+
"child_path_prefers_runtime": true
|
|
10
|
+
},
|
|
11
|
+
"stderr_bytes_discarded": 0,
|
|
12
|
+
"provider_calls": 0
|
|
13
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "derived-publication-export",
|
|
3
|
+
"source_artifact": "cursor-headless-run.mjs",
|
|
4
|
+
"original_artifact_sha256": "5b35c97784a54fcd9a43114fc565fccd88c87e9b76dc9c188258619f23fd861f",
|
|
5
|
+
"public_artifact_sha256": "bb94f8702be86f406f98a08be0d8e5bae7293a677953e560341202e36e14203a",
|
|
6
|
+
"original_integrity_index_sha256": "112a79eff3f7f8cdcb649d119076bc65f56c4126c55442e817fbc17505bb6fc5",
|
|
7
|
+
"transformation": "Replace a private absolute interpreter path with process.execPath. Preserve the original v24.22.0 version requirement and all existing run receipts.",
|
|
8
|
+
"original_preservation": "Original script and index retained in the owned ignored publication scope.",
|
|
9
|
+
"limits": "This public script is a portability/privacy edit, not the exact byte sequence executed in the historical attempt. No historical run was repeated or reclassified.",
|
|
10
|
+
"exported_at": "2026-10-17T15:49:24.587910+00:00"
|
|
11
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { readFile, writeFile, rename, symlink, unlink, readlink, lstat } from 'node:fs/promises';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
import { createHash } from 'node:crypto';
|
|
5
|
+
const scope='node24-extension-followup-04470d85-3a99-47e3-b356-ce96e77de0dd';
|
|
6
|
+
const base=join(homedir(),'.local/state/pi-node24-switch',scope);
|
|
7
|
+
const hash=b=>'sha256:'+createHash('sha256').update(b).digest('hex');
|
|
8
|
+
try{
|
|
9
|
+
const args=process.argv.slice(2);if(args.length>1||args.some(a=>!['--check','--apply'].includes(a)))throw new Error('invalid_arguments');
|
|
10
|
+
const metadata=JSON.parse(await readFile(join(base,'restore-metadata.json'),'utf8'));
|
|
11
|
+
if((await readFile(join(base,'.owner'),'utf8'))!==scope||metadata.scope!==scope)throw new Error('ownership_mismatch');
|
|
12
|
+
if(metadata.pi.entry!=='.pi/agent/bin/pi'||metadata.mcp.entry!=='.npm-global/bin/pi-session-mcp'||metadata.selector!=='.local/share/pi-node/current'||metadata.runtime_target!=='.local/opt/node-v24.22.0'||metadata.mcp.original_target!=='../lib/node_modules/pi-session-mcp/dist/main.js')throw new Error('metadata_target_mismatch');
|
|
13
|
+
const pi=join(homedir(),metadata.pi.entry),mcp=join(homedir(),metadata.mcp.entry),selector=join(homedir(),metadata.selector);
|
|
14
|
+
const original=await readFile(join(base,'pi-launcher.original'));if(hash(original)!==metadata.pi.original_hash)throw new Error('original_backup_changed');
|
|
15
|
+
const stat=await lstat(mcp),currentPi=await readFile(pi);
|
|
16
|
+
if(hash(currentPi)===metadata.pi.original_hash&&stat.isSymbolicLink()&&await readlink(mcp)===metadata.mcp.original_target){console.log(JSON.stringify({status:'ALREADY_RESTORED',scope}));process.exit(0);}
|
|
17
|
+
if(hash(currentPi)!==metadata.pi.new_hash||stat.isSymbolicLink()||hash(await readFile(mcp))!==metadata.mcp.new_hash)throw new Error('launcher_changed_since_switch');
|
|
18
|
+
if(resolve(await readlink(selector))!==join(homedir(),metadata.runtime_target))throw new Error('selector_changed_since_switch');
|
|
19
|
+
if(args[0]!=='--apply'){console.log(JSON.stringify({status:'CHECK_PASS',scope,restorable:true,mutations:0}));process.exit(0);}
|
|
20
|
+
const piStage=pi+'.node24-restore',mcpStage=mcp+'.node24-restore';
|
|
21
|
+
await writeFile(piStage,original,{flag:'wx',mode:metadata.pi.original_mode});
|
|
22
|
+
await symlink(metadata.mcp.original_target,mcpStage);
|
|
23
|
+
await rename(piStage,pi);await rename(mcpStage,mcp);await unlink(selector);
|
|
24
|
+
const result={status:'RESTORED',scope,restored_at:new Date().toISOString(),node_install_retained:true,system_node_changed:false};
|
|
25
|
+
await writeFile(join(base,'restoration-result.json'),JSON.stringify(result,null,2)+'\n',{flag:'wx',mode:0o600});console.log(JSON.stringify(result));
|
|
26
|
+
}catch(e){process.stderr.write(JSON.stringify({status:'REFUSED',code:e.message??'restore_failed'})+'\n');process.exitCode=1;}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Offline Doctor + exact registration inspection + bounded MCP metadata handshake.
|
|
2
|
+
import {readFile,writeFile} from 'node:fs/promises';
|
|
3
|
+
import {homedir} from 'node:os';
|
|
4
|
+
import {join,resolve} from 'node:path';
|
|
5
|
+
import {execFile} from 'node:child_process';
|
|
6
|
+
import {promisify} from 'node:util';
|
|
7
|
+
const exec=promisify(execFile),home=homedir();
|
|
8
|
+
const root=join(home,'.npm-global/lib/node_modules/pi-session-mcp');
|
|
9
|
+
const node=join(home,'.local/opt/node-v24.22.0/bin/node');
|
|
10
|
+
const output=process.argv[2];
|
|
11
|
+
if(!output)throw Error('output_required');
|
|
12
|
+
const registration=JSON.parse(await readFile(join(home,'.claude.json'),'utf8')).mcpServers['pi-session-mcp'];
|
|
13
|
+
const config=registration.env.PI_SESSION_MCP_CONFIG;
|
|
14
|
+
const env={...process.env,PI_SESSION_MCP_CONFIG:config};
|
|
15
|
+
async function command(entry,args){
|
|
16
|
+
try{const r=await exec(node,[entry,...args],{env,timeout:45000,maxBuffer:262144});return {exit_code:0,result:JSON.parse(r.stdout)};}
|
|
17
|
+
catch(e){let result;try{result=JSON.parse(e.stdout);}catch{}return {exit_code:typeof e.code==='number'?e.code:1,...(result?{result}:{}),diagnostics_discarded:true};}
|
|
18
|
+
}
|
|
19
|
+
const doctor=await command(join(root,'scripts/doctor.mjs'),['--json']);
|
|
20
|
+
const verify=[];
|
|
21
|
+
for(const target of ['codex:user:pi-session-mcp','claude-code:user:pi-session-mcp'])verify.push({target,...await command(join(root,'dist/setup-main.js'),['--verify','--target',target,'--json'])});
|
|
22
|
+
const {createProcessRunner,createMcpStdioLauncher}=await import(join(root,'dist/setup-process.js'));
|
|
23
|
+
const {createCodexAdapter,createClaudeCodeAdapter}=await import(join(root,'dist/client-adapters/index.js'));
|
|
24
|
+
const {verifyMcpCapabilities}=await import(join(root,'dist/client-adapters/mcp-verifier.js'));
|
|
25
|
+
const runner=createProcessRunner(),intent={scope:'user',nodePath:node,entryPath:join(root,'dist/main.js'),configPath:config};
|
|
26
|
+
const inspections=[];
|
|
27
|
+
for(const adapter of [createCodexAdapter({runner}),createClaudeCodeAdapter({runner})])inspections.push(await adapter.inspect('user',intent));
|
|
28
|
+
const direct=await verifyMcpCapabilities({launch:createMcpStdioLauncher({nodePath:registration.command,entryPath:registration.args[0],configPath:config})});
|
|
29
|
+
const runtime=(await exec(registration.command,['--version'],{timeout:5000})).stdout.trim();
|
|
30
|
+
const result={kind:'node24-actual-client-registration-verification',verified_at:new Date().toISOString(),runtime,
|
|
31
|
+
direct_command_matches_expected:registration.command===node,doctor,setup_verify:verify,registration_inspections:inspections,
|
|
32
|
+
direct_registration_handshake:direct,session_starts:0,provider_calls:0,
|
|
33
|
+
limits:'The direct Node executable is bound to 24.22.0. It does not prepend PATH; child commands selected by PATH retain the client environment. Existing client stdio connections were not restarted.'};
|
|
34
|
+
result.status=doctor.exit_code===0&&verify.every(v=>v.exit_code===0)&&inspections.every(i=>i.state==='equivalent')&&direct.status==='verified'&&runtime==='v24.22.0'?'PASS':'CHECK_FINDINGS';
|
|
35
|
+
await writeFile(resolve(output),JSON.stringify(result,null,2)+'\n',{flag:'wx',mode:0o600});
|
|
36
|
+
console.log(JSON.stringify({status:result.status,doctor_exit:doctor.exit_code,setup_verify:verify.map(v=>({target:v.target,exit_code:v.exit_code})),direct_handshake:direct.status,session_starts:0,provider_calls:0}));
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Permission policy and hook checks
|
|
2
|
+
|
|
3
|
+
This record tests `@gotgenes/pi-permission-system@40.3.0` from the isolated package prefix with Node 24.22.0. The actual package entry loaded through the evaluation's SDK adapter. The setup used a fresh temporary home and workspace, a synthetic permission configuration, and the existing fixture provider. It made no provider requests and submitted no prompts.
|
|
4
|
+
|
|
5
|
+
The policy service was obtained through the package's documented root export `getPermissionsService(sessionId)`. The probe checked a general allow and deny, an allowed and denied path, a matching and unmatched MCP target, and the `ask` state for a headless bash operation. All seven states matched the configured policy.
|
|
6
|
+
|
|
7
|
+
For mediation, the probe called the actual registered `tool_call` handler through the SDK's public API: `AgentSession.extensionRunner.emitToolCall()`. The SDK declarations expose `AgentSession` at `dist/index.d.ts`, `extensionRunner` at `dist/core/agent-session.d.ts`, and `emitToolCall` at `dist/core/extensions/runner.d.ts` for the pinned SDK 1.2.0. The allowed fixture tool passed the hook; a denied write, a headless ask, and an unregistered tool were blocked. An in-memory synthetic counter advanced only after an unblocked result.
|
|
8
|
+
|
|
9
|
+
No actual executor ran. The evidence establishes deterministic policy resolution and hook mediation for these synthetic inputs. It does not establish operating-system sandboxing, enforcement inside collectors or tool implementations, live UI behavior, MCP transport enforcement, or interactive-client integration. The MCP checks cover the policy surface only; they did not connect to an MCP server. The adapter used print mode without a dialog-capable UI; no model prompt was submitted.
|
|
10
|
+
|
|
11
|
+
The final sanitized, process-supervised result is archived as [permission-gates-result-verified.json](permission-gates-result-verified.json); matching ignored run receipts have unique UUID filenames under `eval/results/`. Earlier successful public-seam receipts are preserved. The initial diagnostic receipt is retained as [superseded-initial-receipt.json](superseded-initial-receipt.json) because that attempt read a private adapter-handle field. The corrected probe injects the public SDK `createAgentSessionRuntime()` seam and captures its public `runtime.session` result.
|
|
12
|
+
|
|
13
|
+
Run the supervisor from the repository root with:
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
"$HOME/.local/opt/node-v24.22.0/bin/node" \
|
|
17
|
+
docs/evaluation/permission-gates-2026-10-17/permission-gate-probe.mjs \
|
|
18
|
+
eval/results/operator-selected-fresh-gate-archive.json
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The archive path must be fresh; an existing path is refused before starting the worker. The supervisor requires worker exit, an empty worker process group, SDK disposal completion, the fixture's `session_shutdown` event, and removal of both temporary homes before it marks the result PASS. It configures a 45-second deadline, SIGTERM then SIGKILL escalation after one second, and a 64-KiB output cap. A triggered deadline forbids PASS. Neither limit was triggered in the successful run. The receipt is published only after cleanup checks. The exact attempt history, including the superseded private-field receipt and corrected harness assumptions, is in [attempts.json](attempts.json); hashes are in [integrity.json](integrity.json).
|
|
22
|
+
|
|
23
|
+
The JavaScript network/child-process guards are instrumentation, not an OS sandbox. The independent [review](review.json) confirms the narrow public-API and hook-decision scope.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "1.0.0",
|
|
3
|
+
"scope": "provider-free @gotgenes/pi-permission-system@40.3.0 policy and tool_call gate checks",
|
|
4
|
+
"attempts": [
|
|
5
|
+
{
|
|
6
|
+
"attempt": 1,
|
|
7
|
+
"status": "discarded_harness",
|
|
8
|
+
"finding": "The SDK public root did not export loadExtensions; an initial fake API approach could not provide registered tools or prove package-hook mediation.",
|
|
9
|
+
"resolution": "Replaced it with SdkPiSessionAdapter and the public AgentSession.extensionRunner.emitToolCall() seam."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"attempt": 2,
|
|
13
|
+
"status": "failed_configuration_context",
|
|
14
|
+
"finding": "Policy checks all resolved to the default ask state because the isolated agent-directory variables were not set before loading the candidate entry.",
|
|
15
|
+
"resolution": "Set HOME, PI_CODING_AGENT_DIR, and XDG directories to the fresh temporary scope before extension initialization."
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"attempt": 3,
|
|
19
|
+
"status": "failed_fixture_policy",
|
|
20
|
+
"finding": "The fixture tool inherited the configured deny fallback because no explicit fixture_tool allow rule existed.",
|
|
21
|
+
"resolution": "Added the exact synthetic fixture_tool allow rule, retained the global deny fallback, then reran the full probe."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"attempt": 4,
|
|
25
|
+
"status": "superseded_receipt",
|
|
26
|
+
"evidence": "superseded-initial-receipt.json",
|
|
27
|
+
"finding": "Policy and hook outcomes were correct, but the probe reached the SDK session through the private SdkPiSessionAdapter handle.session property.",
|
|
28
|
+
"resolution": "Retained the sanitized diagnostic and replaced access with the public extensionSdk.createRuntime seam and AgentSessionRuntime.session getter."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"attempt": 5,
|
|
32
|
+
"status": "pass",
|
|
33
|
+
"evidence": "permission-gates-result.json",
|
|
34
|
+
"ignored_receipt": "eval/results/permission-gates-514fd082-4f96-46bf-b520-514130f1d790.json",
|
|
35
|
+
"evidence_id": "a522f14a-9b44-49dd-b738-d39c56571910",
|
|
36
|
+
"summary": "Seven policy checks matched. Actual registered hook passed the allowed fixture tool and blocked denied write, headless ask, and unregistered tool; the in-memory counter advanced once. SDK dispose resolved, fixture shutdown was observed, worker exit and empty process group were confirmed, and both temporary scopes were removed."
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"attempt": 6,
|
|
40
|
+
"status": "pass",
|
|
41
|
+
"evidence": "permission-gates-result-final.json",
|
|
42
|
+
"ignored_receipt": "eval/results/permission-gates-f6fa21fd-c64b-4905-900a-e01d2fc2db5f.json",
|
|
43
|
+
"summary": "Rerun after adding supervisor SIGKILL escalation, bounded output capture and fresh archive-path preflight. Seven policy queries and four hook outcomes passed, with observed process and temporary-scope cleanup."
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"attempt": 7,
|
|
47
|
+
"status": "pass_final",
|
|
48
|
+
"evidence": "permission-gates-result-verified.json",
|
|
49
|
+
"ignored_receipt": "eval/results/permission-gates-b9552de2-bb69-42cd-be37-4e8a0ce3f9dd.json",
|
|
50
|
+
"summary": "Final rerun records timeout_triggered explicitly and forbids PASS when the deadline fires. All policy/hook outcomes and cleanup checks passed; timeout was not triggered."
|
|
51
|
+
}
|
|
52
|
+
]
|
|
53
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kind": "evaluation-continuation-dossier-integrity",
|
|
3
|
+
"created_at": "2026-10-17T12:04:43.297432+00:00",
|
|
4
|
+
"source_binding": {
|
|
5
|
+
"commit": "406dae7e6b99aa5715960490e869bd3fc668cca2",
|
|
6
|
+
"digest": "sha256:a4524626851448908b8d21ecbd7248c9956ce830406e81c45fda46c8eb6fffc5"
|
|
7
|
+
},
|
|
8
|
+
"files": [
|
|
9
|
+
{
|
|
10
|
+
"path": "README.md",
|
|
11
|
+
"hash": "sha256:4a3f91dfa2f244a10114e68ed8ecc60f3c9099cc26f79eaa0ce270e353a9197c"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"path": "attempts.json",
|
|
15
|
+
"hash": "sha256:14f39c91db0f8104e19f79596fa3445d9d82234deda58585d1a481856bababdc"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"path": "permission-gate-probe.mjs",
|
|
19
|
+
"hash": "sha256:743e949692cf739579db698c30a2f2e26eeccf784aa94b0fb932e9d57c7ee1c5"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"path": "permission-gate-worker.mjs",
|
|
23
|
+
"hash": "sha256:78e4574d9dc753f43d2bdccd9751b5276b90b94e788f74d5e63fb664ca09194e"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"path": "permission-gates-result-final.json",
|
|
27
|
+
"hash": "sha256:f8c0034630063d74f7cf4e191965b0084151f8bb09ce0ae5ef84da542de56f3d"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"path": "permission-gates-result-verified.json",
|
|
31
|
+
"hash": "sha256:903d8ff9775d59c8149f797ac3505a117f876661341547f8cd63fa76c14d8185"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"path": "permission-gates-result.json",
|
|
35
|
+
"hash": "sha256:c91913d046a0d76c1cc8ea8928ada3ce5b55940d6fec5b4034f114f6a4dc3628"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"path": "review.json",
|
|
39
|
+
"hash": "sha256:eaa0fc63b6b7c2b6a911f22a6aa30b2b7b0d9fdb9d72f06d69976c652fa247f4"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"path": "superseded-initial-receipt.json",
|
|
43
|
+
"hash": "sha256:e10b610f7bea50f224282511b1a4f28f45f871fa86df00022c2ac55417f86168"
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|