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
package/docs/installation.md
CHANGED
|
@@ -6,6 +6,10 @@ Code, and covers configuration changes, upgrades and removal. Related documents:
|
|
|
6
6
|
- [Client setup reference](client-setup.md): manual registration, the expected
|
|
7
7
|
tool flow and troubleshooting.
|
|
8
8
|
- [Acceptance](acceptance.md): how a release is accepted.
|
|
9
|
+
- [Execution modes](execution-modes.md): choose host, container or read-only per
|
|
10
|
+
repository; automated Linux container writers, readiness, collection and finish.
|
|
11
|
+
- [Isolation setup](isolation-setup.md): rootless Podman prerequisites, what setup
|
|
12
|
+
automates and migration from hand-made writers.
|
|
9
13
|
|
|
10
14
|
## What gets installed
|
|
11
15
|
|
|
@@ -20,8 +24,10 @@ An installation consists of these locations:
|
|
|
20
24
|
| --- | --- | --- |
|
|
21
25
|
| Package | the npm global prefix, or a dedicated directory per release such as `~/.local/share/pi-session-mcp/releases/<tag>` | The built server, `setup` and Doctor. |
|
|
22
26
|
| Configuration | a file outside the package, for example `~/.config/pi-session-mcp/pi-session-mcp.json` | Operator-owned, mode `0600`, never committed. |
|
|
27
|
+
| Execution modes | `execution-modes.json` next to the configuration | Per-alias write policy; selected with `setup --repo`. See [Execution modes](execution-modes.md). |
|
|
23
28
|
| Skill overrides (optional) | the `skills/` directory next to the configuration file, for example `~/.config/pi-session-mcp/skills/` | Your own or customized skills, plus `.pi-session-mcp-bases.json` and its lock file `.pi-session-mcp-bases.lock`. Created by you or by `setup --customize-skill`. See [Pi skills](#pi-skills). |
|
|
24
29
|
| Controller skill | `~/.agents/skills/pi-session-orchestration` (Codex), `~/.claude/skills/pi-session-orchestration` or `<project>/.claude/skills/pi-session-orchestration` (Claude Code) | Written by `setup --apply`; see [Register a client](#4-register-a-client). |
|
|
30
|
+
| Wake hook (optional) | `hooks.PostToolUse` in a Claude Code settings file: `~/.claude/settings.json` (user), `<project>/.claude/settings.json` (project) or `<project>/.claude/settings.local.json` (local); the program is `dist/wake-main.js` of the package | Written by `setup --apply` only when the configuration enables event delivery; see [Wake the controller](#wake-the-controller-claude-code). |
|
|
25
31
|
| Setup ownership state | `~/.local/state/pi-session-mcp/ownership.json` | Written by `setup` only. Path-free and secret-free. |
|
|
26
32
|
|
|
27
33
|
Never register a development checkout. A registered client launches
|
|
@@ -55,14 +61,19 @@ the same arguments.
|
|
|
55
61
|
- Codex CLI or Claude Code. `setup` does not pin client versions. It accepts a
|
|
56
62
|
client whose public `mcp` command output matches the expected contract and
|
|
57
63
|
reports `unsupported` otherwise. The contract was last recorded with Codex CLI
|
|
58
|
-
`0.162.1` and Claude Code `2.1.
|
|
64
|
+
`0.162.1` and Claude Code `2.1.310`. Manual registration, described in the
|
|
59
65
|
[client setup reference](client-setup.md), works independently of `setup`.
|
|
60
|
-
- For real prompts
|
|
61
|
-
|
|
62
|
-
|
|
66
|
+
- For real prompts: local Pi authentication and a provider/model pair that Pi
|
|
67
|
+
knows. Doctor is offline. Container apply may pull the built-in pinned image
|
|
68
|
+
and runs the acceptance network probes; coding session launchers can
|
|
69
|
+
copy/refresh selected credentials. Host registration health checks do not
|
|
70
|
+
start writer containers. Direct writer verify
|
|
71
|
+
disables credential refresh and uses no session or provider request.
|
|
63
72
|
|
|
64
73
|
Pi Session MCP embeds the Pi SDK version pinned in `package.json`. It reuses the
|
|
65
|
-
local user's existing Pi authentication and never
|
|
74
|
+
local user's existing Pi authentication and never prints it. Automated writers
|
|
75
|
+
keep selected provider credentials in their private boundary agent copy; see
|
|
76
|
+
[Execution modes](execution-modes.md#writer-storage-launch-and-readiness).
|
|
66
77
|
|
|
67
78
|
## 1. Install
|
|
68
79
|
|
|
@@ -169,6 +180,11 @@ Rules:
|
|
|
169
180
|
configuration file's directory; `~` is not expanded. The example already uses
|
|
170
181
|
`builtin:` for the two worker skills, so you need not change its skill
|
|
171
182
|
entries. See [Pi skills](#pi-skills).
|
|
183
|
+
- An optional top-level `events` field, `{ "delivery": "spool" }` or
|
|
184
|
+
`{ "delivery": "off" }`, turns turn-event delivery for the Claude Code wake on
|
|
185
|
+
or states explicitly that it is off. Delivery is off by default and when the
|
|
186
|
+
field is absent; any other shape fails startup with `invalid_event_delivery`. See
|
|
187
|
+
[Wake the controller](#wake-the-controller-claude-code).
|
|
172
188
|
- Never put keys, tokens, credential objects, headers, base URLs or
|
|
173
189
|
authentication paths into this file.
|
|
174
190
|
|
|
@@ -182,6 +198,25 @@ directory is the client's project, so a file found there must never become the
|
|
|
182
198
|
policy. Each registration stores the absolute configuration path, so registered
|
|
183
199
|
clients do not depend on your shell environment.
|
|
184
200
|
|
|
201
|
+
### Choose repository execution modes
|
|
202
|
+
|
|
203
|
+
Before registering a client, choose a mode for every workspace alias with
|
|
204
|
+
`pi-session-mcp-setup --repo <alias> --profiles <coding-alias>` (dry-run), then
|
|
205
|
+
repeat with `--apply`. Container mode requires a non-empty list of configured
|
|
206
|
+
coding-profile aliases (`--profiles a,b`); without it, setup reports
|
|
207
|
+
`container_profiles_required` and writes nothing. See
|
|
208
|
+
[Execution modes](execution-modes.md#choose-at-installation) for explicit
|
|
209
|
+
host-write acknowledgment and all options. With usable rootless Podman, setup
|
|
210
|
+
proposes container; otherwise it requires an explicit host or read-only choice.
|
|
211
|
+
On Linux, container apply provisions and accepts separate full-clone writers
|
|
212
|
+
for the host registration's leased pool; it adds no writer registrations. First explicitly authorize the host isolation
|
|
213
|
+
control (`--isolation-control --repo <alias> --apply`): it writes real canaries
|
|
214
|
+
below $HOME and removes them. Without a passing control writers remain not ready.
|
|
215
|
+
See [Isolation setup](isolation-setup.md) for prerequisites, residual credential
|
|
216
|
+
and network risks, and migration of hand-made writers.
|
|
217
|
+
Missing entries retain host behavior as `unset` for compatibility and warn in
|
|
218
|
+
Doctor when a coding profile exists.
|
|
219
|
+
|
|
185
220
|
## 3. Check the installation
|
|
186
221
|
|
|
187
222
|
```bash
|
|
@@ -310,6 +345,110 @@ directory, where the client discovers it without further steps:
|
|
|
310
345
|
The codes and the rules are in [Pi skills](skills.md#install-the-orchestration-skill-into-codex-and-claude-code)
|
|
311
346
|
and the [setup lifecycle design](client-setup-design.md#skill-installation).
|
|
312
347
|
|
|
348
|
+
### Wake the controller (Claude Code)
|
|
349
|
+
|
|
350
|
+
By default a controller learns that a turn ended by polling `pi_turn_get`. For
|
|
351
|
+
Claude Code you can opt in to a wake instead, decided in
|
|
352
|
+
[ADR 0011](adr/0011-turn-events-and-controller-wake.md): the server writes one
|
|
353
|
+
content-free event file when a turn ends, and a Claude Code hook starts a new
|
|
354
|
+
controller request that reads the turn once. This improves reaction time. It is
|
|
355
|
+
not a token or cost saving, and none is measured on short tasks. Design:
|
|
356
|
+
[Architecture](architecture.md#turn-events-and-controller-wake).
|
|
357
|
+
|
|
358
|
+
1. Add the field to the server configuration and start a new client session
|
|
359
|
+
(the file is read at startup):
|
|
360
|
+
|
|
361
|
+
```json
|
|
362
|
+
"events": { "delivery": "spool" }
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
The server and the hook locate the spool through an absolute
|
|
366
|
+
`XDG_RUNTIME_DIR` (set by systemd user sessions; macOS does not set it by
|
|
367
|
+
default, and delivery there is untested). If the server's environment has
|
|
368
|
+
no runtime directory, delivery stays inactive: the server starts, reports
|
|
369
|
+
`events.delivery: "off"` and writes one `event_delivery_inactive` warning.
|
|
370
|
+
This is how a Codex registration that shares the configuration behaves,
|
|
371
|
+
because Codex passes no `XDG_RUNTIME_DIR` to MCP servers. A runtime
|
|
372
|
+
directory that exists but is unusable stops the server with the startup
|
|
373
|
+
code `event_spool_unavailable`. Doctor checks
|
|
374
|
+
the runtime, `events` and `claims` directories offline (`event_spool_root`):
|
|
375
|
+
each that exists must be a real directory of your user without group or
|
|
376
|
+
other access.
|
|
377
|
+
2. Plan, then apply, for each Claude Code target. Run `setup` from the project
|
|
378
|
+
directory for `project` and `local` scope, as in [Register a client](#4-register-a-client):
|
|
379
|
+
|
|
380
|
+
```bash
|
|
381
|
+
pi-session-mcp-setup --dry-run --target claude-code:user:pi-session-mcp
|
|
382
|
+
pi-session-mcp-setup --apply --target claude-code:user:pi-session-mcp
|
|
383
|
+
pi-session-mcp-setup --verify --target claude-code:user:pi-session-mcp
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
After the registration, `--apply` adds one `PostToolUse` entry to the settings
|
|
387
|
+
file of the same scope. A report line has the alias `hook:pi-session-mcp-wake`:
|
|
388
|
+
|
|
389
|
+
```text
|
|
390
|
+
claude-code/user/hook:pi-session-mcp-wake: ok (hook_added)
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
3. Restart Claude Code, or review the new hook in `/hooks`, before relying on
|
|
394
|
+
it. Setup writes the file and cannot observe what the running client loaded.
|
|
395
|
+
The skill `pi-session-orchestration` reads `events.delivery` from
|
|
396
|
+
`pi_capabilities_get` and stops polling only when it is `spool`.
|
|
397
|
+
|
|
398
|
+
**What setup writes.** One entry, with `matcher` for
|
|
399
|
+
`pi_session_prompt` and `pi_turn_get` of `pi-session-mcp` only
|
|
400
|
+
(`mcp__pi-session-mcp__*`), and one command hook:
|
|
401
|
+
`<node> <package>/dist/wake-main.js --budget-ms 1800000`, `asyncRewake: true`
|
|
402
|
+
and `timeout` 1860 seconds (the 30-minute wait budget plus 60 seconds, so the
|
|
403
|
+
client never ends the hook before its own budget). The entry is compared by
|
|
404
|
+
fingerprint. Setup edits the JSON file with a compare-and-swap on its bytes
|
|
405
|
+
and keeps its permissions; every other setting stays as it was. Verify checks
|
|
406
|
+
the file and that the program exists; it does not test that Claude Code honors
|
|
407
|
+
the hook.
|
|
408
|
+
|
|
409
|
+
The hook reads only the host spool
|
|
410
|
+
`$XDG_RUNTIME_DIR/pi-session-mcp/events/inst-*`, including relayed container
|
|
411
|
+
turns. Its claims stay in `$XDG_RUNTIME_DIR/pi-session-mcp/claims`. There are no
|
|
412
|
+
writer hook entries or per-session writer spool mounts.
|
|
413
|
+
|
|
414
|
+
**Change and remove.** With delivery switched off, `--apply` removes an entry
|
|
415
|
+
that setup owns (`hook_removed`); `--remove` and `--rollback` remove it with the
|
|
416
|
+
registration. Setup never replaces or deletes an entry it did not write or that
|
|
417
|
+
you edited (`hook_divergent`). During migration an owned shared legacy entry may stay
|
|
418
|
+
(`hook_kept_shared`) while another owned registration still needs it. With
|
|
419
|
+
delivery off and no entry of its own, setup does not read the settings file. The upgrade procedure below removes the entry with the
|
|
420
|
+
old registration and adds it again with the new one, because it names the
|
|
421
|
+
package path. The settings-file codes are in the
|
|
422
|
+
[client setup reference](client-setup.md#wake-hook).
|
|
423
|
+
|
|
424
|
+
**Limits.**
|
|
425
|
+
|
|
426
|
+
- Linux only. The server spool needs `XDG_RUNTIME_DIR`, and the hook reads
|
|
427
|
+
through `/proc/self/fd`; on any other platform `pi-session-mcp-wake` exits
|
|
428
|
+
without a wake, so the controller polls.
|
|
429
|
+
- Claude Code only. Codex has no external wake, so Codex controllers keep
|
|
430
|
+
polling; `setup` reports no hook finding for a Codex target.
|
|
431
|
+
- Use interactive or stream-json sessions. A one-shot `claude -p` run holds its
|
|
432
|
+
next model request until the hook ends, so do not use it with delivery on.
|
|
433
|
+
- The path of the Node executable and of the package must contain only
|
|
434
|
+
letters, digits and `_ @ % + = : , . / -`. Otherwise setup refuses with
|
|
435
|
+
`hook_path_unsafe` and writes nothing, because the command is embedded in the
|
|
436
|
+
settings file without quoting. Install the package
|
|
437
|
+
under a path that fits.
|
|
438
|
+
- Claude Code's managed settings can disable hooks; the controller then polls.
|
|
439
|
+
- Wake in the interactive TUI and in the VS Code extension was not tested in
|
|
440
|
+
the evaluation behind ADR 0011. Later observations, not a test matrix:
|
|
441
|
+
- the operator confirmed the TUI wake after the 0.11.0 release;
|
|
442
|
+
- on 2026-10-24 the VS Code extension woke on 0.11.2;
|
|
443
|
+
- on 2026-10-24 a running stream-json session of Claude Code 2.1.308 used a
|
|
444
|
+
project hook that setup wrote after the session started.
|
|
445
|
+
|
|
446
|
+
Whether a running extension or TUI session does the same is not checked, so
|
|
447
|
+
step 3 above stays the rule
|
|
448
|
+
([Sprint 7 evidence](evaluation/s7-live-acceptance-2026-10-24/README.md)).
|
|
449
|
+
- Container turns are relayed into the host spool, with no writer spool mount;
|
|
450
|
+
see [Isolation setup](isolation-setup.md#event-spool-mount).
|
|
451
|
+
|
|
313
452
|
### Register without setup
|
|
314
453
|
|
|
315
454
|
`setup` runs on Linux and macOS. On every other platform, Windows included, it
|
|
@@ -395,11 +534,17 @@ define every field and error code.
|
|
|
395
534
|
|
|
396
535
|
The server reads the configuration once when it starts. After editing the file,
|
|
397
536
|
start a new client session so that the client launches a new server process.
|
|
398
|
-
`pi_capabilities_get` returns the SHA-256 fingerprint of the loaded
|
|
399
|
-
bytes and `reloadPolicy: "restart-required"`, which shows
|
|
400
|
-
file a running server uses. The
|
|
537
|
+
`pi_capabilities_get` returns the SHA-256 fingerprint of the loaded main
|
|
538
|
+
configuration file's bytes and `reloadPolicy: "restart-required"`, which shows
|
|
539
|
+
which version of that file a running server uses. The fingerprint does not
|
|
540
|
+
cover `execution-modes.json`; each workspace's `mode` in `pi_capabilities_get`
|
|
541
|
+
confirms the running execution-mode policy. The same applies to changes of the local Pi provider
|
|
401
542
|
configuration or credentials.
|
|
402
543
|
|
|
544
|
+
Execution-mode changes also require a new server process; setup reports
|
|
545
|
+
`controllers_restart_required` after applying a mode change and never restarts
|
|
546
|
+
controllers itself. See the [restart rule](execution-modes.md#restart-rule).
|
|
547
|
+
|
|
403
548
|
The configuration path is part of the registration. Editing the file in place
|
|
404
549
|
needs no new registration; moving it does.
|
|
405
550
|
|
|
@@ -420,6 +565,42 @@ pin the installed version in the profile:
|
|
|
420
565
|
}
|
|
421
566
|
```
|
|
422
567
|
|
|
568
|
+
For a review profile, grant individual extension tools rather than every tool
|
|
569
|
+
in a package. This example assumes the named tool is available from the pinned
|
|
570
|
+
extension; it is not evidence of a live provider check:
|
|
571
|
+
|
|
572
|
+
```json
|
|
573
|
+
"review-navigation": {
|
|
574
|
+
"default": false,
|
|
575
|
+
"permissionProfile": "read-only",
|
|
576
|
+
"provider": "your-configured-provider",
|
|
577
|
+
"model": "your-configured-model",
|
|
578
|
+
"thinkingLevel": "medium",
|
|
579
|
+
"extensions": ["npm:pi-lens@4.4.3"],
|
|
580
|
+
"grantedExtensionTools": ["symbol_search"]
|
|
581
|
+
}
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
- **Grants.** `grantedExtensionTools` is allowed only on `read-only` profiles
|
|
585
|
+
with at least one extension. At most 32 unique names are allowed, each 1–64
|
|
586
|
+
characters of `[A-Za-z0-9_-]`, not starting with `-`, not MCP-reserved (see
|
|
587
|
+
**Fail-closed start** below), and not a built-in name (`read`, `bash`, `edit`,
|
|
588
|
+
`write`, `grep`, `find`, `ls`). A violation prevents startup with
|
|
589
|
+
`invalid_execution_profile_config`. A grant is your trust decision, not proof
|
|
590
|
+
that a tool only reads: third-party tools may write. Workspace modes
|
|
591
|
+
`container` and `read-only` do not restrict them. See
|
|
592
|
+
[ADR 0010](adr/0010-read-only-extension-tools.md).
|
|
593
|
+
- **Availability.** Each grant must be registered when extensions load; the
|
|
594
|
+
registered set is re-checked after bind. Each grant must also be active and
|
|
595
|
+
declared to the model at admission, or `pi_session_start` fails with
|
|
596
|
+
`extension_tool_missing`, message `Granted Pi extension tool is not available`,
|
|
597
|
+
class `needs_operator`. Resolution errors (`extension_not_installed`,
|
|
598
|
+
`extension_version_mismatch`) take precedence; tool conflicts are checked
|
|
599
|
+
first. Lazy registration in `session_start` or later is unsupported. The SDK
|
|
600
|
+
activates only declarable tools: several registered `pi-lens` tools were never
|
|
601
|
+
active in the [evaluation](evaluation/pi-lens-registration-2026-10-19/).
|
|
602
|
+
Granting such a tool fails closed. Capabilities show configured grants only;
|
|
603
|
+
Doctor stays offline and does not import extensions to inspect tool names.
|
|
423
604
|
- **Install location.** Only Pi's own user install counts:
|
|
424
605
|
`<Pi agent dir>/npm/node_modules/<name>`, normally `~/.pi/agent/npm/…`,
|
|
425
606
|
created by `pi install npm:<name>`. A package installed with `npm i -g` is
|
|
@@ -430,9 +611,11 @@ pin the installed version in the profile:
|
|
|
430
611
|
`extension_version_mismatch` and Doctor reports it. After `pi update
|
|
431
612
|
--extensions`, update the pinned version and restart the client.
|
|
432
613
|
- **Full capabilities.** An extension loads with its providers, tools, hooks
|
|
433
|
-
and system-prompt changes. In `read-only` profiles the
|
|
434
|
-
`read`, `grep`, `find
|
|
435
|
-
|
|
614
|
+
and system-prompt changes. In `read-only` profiles the active tools are
|
|
615
|
+
`read`, `grep`, `find`, `ls`, the granted MCP tools and exactly the granted
|
|
616
|
+
extension tools. Without grants extension tools remain inactive. An
|
|
617
|
+
extension's `setActiveTools` cannot add others. In `coding` profiles every
|
|
618
|
+
extension tool may be active. Extension commands never run from client prompts, but
|
|
436
619
|
extension input hooks can still see, rewrite or consume a client prompt;
|
|
437
620
|
they receive it with `source: "rpc"`, never `interactive`.
|
|
438
621
|
- **Fail-closed start.** A session start fails with `extension_load_failed` if
|
|
@@ -538,6 +721,56 @@ pi-session-mcp-setup --apply --target claude-code:user:pi-session-mcp
|
|
|
538
721
|
pi-session-mcp-setup --verify --target claude-code:user:pi-session-mcp
|
|
539
722
|
```
|
|
540
723
|
|
|
724
|
+
### Container writers
|
|
725
|
+
|
|
726
|
+
Writer acceptance binds the package version, so every container writer is
|
|
727
|
+
`writer_not_ready` after an upgrade, and Doctor blocks `--apply` for the client
|
|
728
|
+
targets until they are accepted again. With container writers, run the
|
|
729
|
+
repository step between the install and the client targets:
|
|
730
|
+
|
|
731
|
+
1. Close all coding sessions and controllers first. This quiescence barrier
|
|
732
|
+
ensures no old-release launcher is still in flight. Install the new package
|
|
733
|
+
(`npm install -g` or the release checkout above).
|
|
734
|
+
2. For each repository in mode `container`, repeat its existing provisioning command
|
|
735
|
+
with `--apply`, for example
|
|
736
|
+
`pi-session-mcp-setup --repo <alias> --mode container ... --apply`. It
|
|
737
|
+
migrates writers under the lease and container fence: removes owned writer
|
|
738
|
+
registrations and hooks, rewrites stable wrappers for the new release,
|
|
739
|
+
marks writers `launch: "relay"` and re-accepts them provider-free before
|
|
740
|
+
admitting them to the pool. It keeps the clone and work in it; acceptance
|
|
741
|
+
briefly places canaries in the clone. Migration records the shared default
|
|
742
|
+
base; differing writer bases fail with `workspace_base_ambiguous` unless
|
|
743
|
+
you supply an explicit `--base <branch>`. A divergent registration is never
|
|
744
|
+
deleted or replaced: it reports `registration_divergent` and keeps that
|
|
745
|
+
writer legacy, outside the pool. Resolve divergence before use; do not
|
|
746
|
+
launch through a retained legacy registration. `--client codex` has no writer effect any
|
|
747
|
+
more; both clients code through the one host `pi-session-mcp` registration.
|
|
748
|
+
Use the same
|
|
749
|
+
settings as before: a writer whose settings or coding profiles changed is
|
|
750
|
+
reported as `writer_settings_changed` and left as it is, and one whose
|
|
751
|
+
coding profile selects an overridden or unshipped `builtin:` skill as
|
|
752
|
+
`container_profile_unsupported`. Such a writer stays `writer_not_ready`
|
|
753
|
+
until you change the profile or remove the override, or collect it,
|
|
754
|
+
`--writer <name> --remove` it and provision it again
|
|
755
|
+
([Isolation setup](isolation-setup.md)).
|
|
756
|
+
3. `--apply` and `--verify` the client targets, then `--writer <name> --verify`
|
|
757
|
+
for each writer. Reconnect the host `pi-session-mcp` server after migration
|
|
758
|
+
and client setup. Later reset, finish and recreate need no reconnect.
|
|
759
|
+
|
|
760
|
+
The repository step does not count another repository's writers that are not
|
|
761
|
+
ready yet, so the repositories can be accepted one after the other. Releases
|
|
762
|
+
before this fix did, so with two or more container repositories no repository
|
|
763
|
+
step could pass after an upgrade to such a release
|
|
764
|
+
([#148](https://github.com/plagor44-ux/pi-session-mcp/issues/148)). If that
|
|
765
|
+
happens, install the previous version again: its writers are still accepted
|
|
766
|
+
for it.
|
|
767
|
+
|
|
768
|
+
Releases up to 0.11.4 accepted only writers whose phase was not ready, so a
|
|
769
|
+
ready writer stayed `writer_not_ready` after the upgrade
|
|
770
|
+
([#130](https://github.com/plagor44-ux/pi-session-mcp/issues/130)). With such a
|
|
771
|
+
release on the new side, collect the writer's work, `--writer <name> --remove`
|
|
772
|
+
it, and provision it again.
|
|
773
|
+
|
|
541
774
|
### Release checkout
|
|
542
775
|
|
|
543
776
|
Install the new release next to the old one, move the registrations, and
|
|
@@ -588,7 +821,8 @@ same owned removal and reports `rolled_back`; use it to undo an apply. After
|
|
|
588
821
|
every target reports `removed`, uninstall the package or delete the release
|
|
589
822
|
directory, and delete the configuration file and
|
|
590
823
|
`~/.local/state/pi-session-mcp/`. The same call removes the controller skill
|
|
591
|
-
that `setup` installed (`skill_removed`)
|
|
824
|
+
that `setup` installed (`skill_removed`) and the wake hook entry it added
|
|
825
|
+
(`hook_removed`). It keeps a copy that you modified
|
|
592
826
|
(`skill_divergent`) and the shared Claude Code directory while the other
|
|
593
827
|
Claude Code registration is still owned (`skill_kept_shared`). Your override
|
|
594
828
|
directory `skills/` next to the configuration file is yours: delete it with the
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
# Isolation setup for coding profiles (rootless Podman)
|
|
2
|
+
|
|
3
|
+
This is the operator reference for what **setup now automates** under
|
|
4
|
+
[ADR 0008](adr/0008-coding-profile-isolation.md) and
|
|
5
|
+
[ADR 0009](adr/0009-execution-modes.md), Plan B, as amended by
|
|
6
|
+
[ADR 0012](adr/0012-leased-writer-pool.md). Start with
|
|
7
|
+
[Execution modes](execution-modes.md) for exact flags, lifecycle commands,
|
|
8
|
+
readiness, finding codes and migration. Automation is implemented, not a claim
|
|
9
|
+
of new live acceptance or a release.
|
|
10
|
+
|
|
11
|
+
The historical Linux manual acceptance for hand-made writers is
|
|
12
|
+
preserved in [the 2026-10-18 evidence](evaluation/isolation-acceptance-2026-10-18/README.md).
|
|
13
|
+
It does not automatically accept another image, wrapper, Podman version or writer.
|
|
14
|
+
macOS containment remains unaccepted and keeps the
|
|
15
|
+
[Sprint 4 interim rules](sprints/2026-10-15-s4-decision.md#interim-operating-rules).
|
|
16
|
+
|
|
17
|
+
## Commit identity and base tags
|
|
18
|
+
|
|
19
|
+
Provisioning, recreation and reset copy the operator checkout's effective
|
|
20
|
+
`user.name` and `user.email` into the clone's local Git config. Both must be
|
|
21
|
+
1–256 characters without control characters and must not start with `-`; if
|
|
22
|
+
either is absent or invalid, both clone values are unset. Missing identity does
|
|
23
|
+
not block setup, but commits need it: set both values in the operator checkout,
|
|
24
|
+
then reset the writer.
|
|
25
|
+
Doctor reports `writer_git_identity_missing` without exposing either value.
|
|
26
|
+
Identity is not stored in writer state or boundary acceptance.
|
|
27
|
+
|
|
28
|
+
Tags default to `none`. Add `--tags reachable` to a container mode request to
|
|
29
|
+
include tags merged into the selected base commit. Reset always deletes all
|
|
30
|
+
clone tags, then imports the selected base tags when enabled. Worker-created
|
|
31
|
+
tags are not collected work and do not affect the collected digest. The setting
|
|
32
|
+
participates in settings drift, not the acceptance fingerprint.
|
|
33
|
+
|
|
34
|
+
## Prerequisites
|
|
35
|
+
|
|
36
|
+
- Linux with usable **rootless** Podman, Node.js 22.19.0 or newer and Git.
|
|
37
|
+
macOS is not supported: the setup reports `platform_unsupported` even with a
|
|
38
|
+
Podman machine (evaluation in
|
|
39
|
+
[#144](https://github.com/plagor44-ux/pi-session-mcp/issues/144)).
|
|
40
|
+
Follow your distribution's packaging and the
|
|
41
|
+
[Podman rootless tutorial](https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md).
|
|
42
|
+
User namespaces and subordinate UID/GID ranges must be configured. Do not
|
|
43
|
+
run the writer as root or with `--privileged`.
|
|
44
|
+
- A release installation with production dependencies, not a development checkout;
|
|
45
|
+
configured workspace aliases, coding profiles and `PI_SESSION_MCP_CONFIG`.
|
|
46
|
+
See [Installation](installation.md).
|
|
47
|
+
- Profiles supported in the boundary: non-default coding, no Cursor provider,
|
|
48
|
+
no extensions or external MCP grants, only shipped builtin skills without an
|
|
49
|
+
operator override (overrides do not reach the writer). Each container
|
|
50
|
+
gets the synthetic default `boundary-read-only`; name coding profiles explicitly.
|
|
51
|
+
- Review setup's dry-run before applying. Image `node` resolves a built-in digest
|
|
52
|
+
pin and can be pulled on apply if absent; an operator-supplied image must be
|
|
53
|
+
present locally and named by its full 64-character lowercase hex image ID.
|
|
54
|
+
A custom image needs Node, Git, bash, ssh and coreutils for the acceptance harness.
|
|
55
|
+
|
|
56
|
+
## What setup automates
|
|
57
|
+
|
|
58
|
+
| Area | Automation and limits |
|
|
59
|
+
| --- | --- |
|
|
60
|
+
| Workspace | Separate full clone per writer, created via a base bundle; no hardlinks or shared linked-worktree metadata |
|
|
61
|
+
| Wrapper | Generated stdio-only launcher bound to the release and writer name; no daemon between client connections |
|
|
62
|
+
| Boundary | Rootless keep-id, read-only root, capability drop, no-new-privileges, tmpfs home and /tmp; clone read-write with hooks/config overmounted read-only |
|
|
63
|
+
| Mounts | Only clone, release read-only, contained config read-only, isolated writable agent directory, optional Go or uv/npm cache; no per-session writer spool mount ([below](#event-spool-mount)) |
|
|
64
|
+
| Configuration | One workspace, selected coding profiles and a synthetic read-only default; internal acknowledged host mode permits writes only in the contained clone |
|
|
65
|
+
| Credentials | Selected provider entries only; OAuth refresh token emptied, API keys retained; no host SSH/Git/client credentials intentionally mounted |
|
|
66
|
+
| Acceptance | Explicit uncontained host control, then provider-free contained harness per writer; fingerprint gates readiness |
|
|
67
|
+
| Registration | One host `pi-session-mcp` registration; no per-writer tool sets or registrations; `--client codex` has no writer effect |
|
|
68
|
+
| Results | Bundle export into namespaced refs in the operator's checkout; never host Git inside the writer clone |
|
|
69
|
+
| Reuse | Collect then reset persistent writers or recreate ephemeral writers; refuse loss of uncollected work unless explicitly discarded |
|
|
70
|
+
|
|
71
|
+
The environment passed into the container is an explicit allowlist; no host
|
|
72
|
+
environment passthrough. The package and configuration are read-only mounts,
|
|
73
|
+
but the isolated agent directory is writable because Pi auth storage requires
|
|
74
|
+
writes even without refreshing. It is not the host's agent directory.
|
|
75
|
+
|
|
76
|
+
## Provision and accept
|
|
77
|
+
|
|
78
|
+
```sh
|
|
79
|
+
pi-session-mcp-setup --repo my-project --mode container --profiles code
|
|
80
|
+
pi-session-mcp-setup --isolation-control --repo my-project
|
|
81
|
+
# Explicit permission: the uncontained control writes real canaries below $HOME and removes them.
|
|
82
|
+
pi-session-mcp-setup --isolation-control --repo my-project --apply
|
|
83
|
+
pi-session-mcp-setup --repo my-project --mode container --profiles code --apply
|
|
84
|
+
pi-session-mcp-setup --writer my-project-w1 --verify
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The host control uses a disposable clone and must detect the expected escapes.
|
|
88
|
+
Without apply it plans only. Writers remain not ready until the control passes
|
|
89
|
+
and their contained harness passes. Failed control invalidates the host control
|
|
90
|
+
record. Contained acceptance records network classification as limited or not
|
|
91
|
+
limited; both can pass. Readiness fingerprints bind wrapper, package version,
|
|
92
|
+
image ID, Podman version, network and cache.
|
|
93
|
+
|
|
94
|
+
Before the acceptance, `--repo <alias> ... --apply` checks each kept writer
|
|
95
|
+
against the settings and configuration it would be provisioned from now: the
|
|
96
|
+
image ID (resolved locally, never pulled), lifecycle, network, cache, profile
|
|
97
|
+
list and providers in its state, and the whole rendered writer configuration
|
|
98
|
+
with each selected profile's model, thinking level and skills and the event
|
|
99
|
+
delivery. A difference reports `writer_settings_changed` and leaves the writer
|
|
100
|
+
as it is
|
|
101
|
+
([#134](https://github.com/plagor44-ux/pi-session-mcp/issues/134)). The same
|
|
102
|
+
holds for the other findings of this check: `podman_unavailable` when Podman
|
|
103
|
+
cannot be asked, `image_unavailable` when Podman answers but cannot resolve the
|
|
104
|
+
image, and `container_profile_unsupported` when a selected coding profile is
|
|
105
|
+
no longer supported in the boundary, for example because it now selects an
|
|
106
|
+
overridden or unshipped `builtin:` skill. The dry run runs the same check, so
|
|
107
|
+
it also asks Podman. To adopt new settings, collect the writer's work,
|
|
108
|
+
`--writer <name> --remove` it and run the provisioning command again; for
|
|
109
|
+
`container_profile_unsupported` first change the profile or remove the
|
|
110
|
+
override. The key order of the profile objects does not count as a change, and
|
|
111
|
+
an explicit `events: { "delivery": "off" }` counts the same as no `events`
|
|
112
|
+
field.
|
|
113
|
+
|
|
114
|
+
A changed binding must be accepted
|
|
115
|
+
again: `--repo <alias> ... --apply` accepts every kept writer whose acceptance is
|
|
116
|
+
not current (the same predicate as Doctor's `writer_not_ready`: not ready, a
|
|
117
|
+
stale fingerprint, or a missing image), not only writers whose phase is not
|
|
118
|
+
ready. When Podman cannot be asked or fails at that point, setup leaves a ready
|
|
119
|
+
writer as it is and reports `podman_unavailable`,
|
|
120
|
+
rather than downgrading it. A missing image is detected, but acceptance cannot
|
|
121
|
+
pass without it: `--writer <name> --recreate --apply` provisions the writer
|
|
122
|
+
again. Acceptance briefly places canaries and a `.git/commondir` file in the
|
|
123
|
+
writer's clone and removes them, so run it while no session uses the writer.
|
|
124
|
+
Doctor is offline and cannot substitute for acceptance.
|
|
125
|
+
|
|
126
|
+
The harness launches the writer with `PI_WRITER_NO_CREDENTIAL_REFRESH=1`, as
|
|
127
|
+
direct verify does: acceptance makes no provider request, and a host login
|
|
128
|
+
warm-up for an expiring token would change the host's Pi agent directory inside
|
|
129
|
+
the harness's digest window and fail `digests.preexisting_changed`.
|
|
130
|
+
|
|
131
|
+
The harness checks launch binding, file writes outside the clone, host credential
|
|
132
|
+
visibility, detached-process persistence, child environment names and network.
|
|
133
|
+
Canaries have per-run names; it never intentionally replaces pre-existing files,
|
|
134
|
+
removes its canaries and verifies cleanup. It does not prove the runtime is
|
|
135
|
+
escape-free or that credentials cannot be exfiltrated. The historical manual
|
|
136
|
+
live/provider checks are separate evidence, not something setup newly performs.
|
|
137
|
+
For harness details see `scripts/isolation-acceptance.mjs` and the historical
|
|
138
|
+
evidence linked above; do not claim a live provider test from provider-free acceptance.
|
|
139
|
+
|
|
140
|
+
**Health-check warning:** `claude mcp get` starts the registered host server
|
|
141
|
+
briefly, not a writer container. Writer verify and acceptance explicitly launch
|
|
142
|
+
the wrapper with `PI_WRITER_NO_CREDENTIAL_REFRESH=1`; they start no session,
|
|
143
|
+
use no provider and touch no credentials in that direct launch.
|
|
144
|
+
|
|
145
|
+
## Event spool mount
|
|
146
|
+
|
|
147
|
+
Relayed sessions report terminal turn events through the host registry into the
|
|
148
|
+
host spool (`$XDG_RUNTIME_DIR/pi-session-mcp/events/`). Per-session writer spool
|
|
149
|
+
mounts and writer wake-hook entries are gone under
|
|
150
|
+
[ADR 0012](adr/0012-leased-writer-pool.md). The Claude Code wake hook matches
|
|
151
|
+
only `mcp__pi-session-mcp__*`; a wake is a trigger to read `pi_turn_get`, never
|
|
152
|
+
state. No container can write the host spool or claims through a spool mount.
|
|
153
|
+
See [Installation](installation.md#wake-the-controller-claude-code).
|
|
154
|
+
|
|
155
|
+
## Lease and container fence
|
|
156
|
+
|
|
157
|
+
Coding on container workspaces goes through the one host registration
|
|
158
|
+
`pi-session-mcp`. Per session the host leases a ready writer on the requested
|
|
159
|
+
or default base and spawns its stable `wrapper.sh`. The launcher, not the host
|
|
160
|
+
server, holds the host-only lease
|
|
161
|
+
`~/.local/state/pi-session-mcp/leases/<name>.lock` for warm-up, credential
|
|
162
|
+
projection, the container lifetime, refresh and cleanup. The directory is 0700
|
|
163
|
+
and the file 0600; it is opened without following links, checked for type,
|
|
164
|
+
owner and mode, and never deleted. Do not remove lease files to clear busy state.
|
|
165
|
+
|
|
166
|
+
Every mutating operation, including collect, reset, finish, recreate, remove,
|
|
167
|
+
acceptance and provisioning reconciliation, takes the same fence. Setup waits
|
|
168
|
+
up to 10 seconds, then returns `writer_busy`. Mutating host children inherit
|
|
169
|
+
the locked descriptor; nested acceptance launchers validate and adopt it.
|
|
170
|
+
Neither the container nor Podman's monitor receives that descriptor.
|
|
171
|
+
|
|
172
|
+
After acquiring the lease and before writing credentials or changing a clone,
|
|
173
|
+
the holder confirms container absence by label `pi-session-mcp.writer=<name>`
|
|
174
|
+
and by clone mount, including unlabeled old containers. It removes remnants
|
|
175
|
+
of dead holders, waits boundedly and fails with `writer_fenced` if absence
|
|
176
|
+
cannot be confirmed. Session containers have the fixed name
|
|
177
|
+
`pi-writer-<name>`; setup's throwaway containers also carry the label.
|
|
178
|
+
|
|
179
|
+
On stdin end, SIGTERM or SIGHUP the launcher stops scheduling refreshes, joins
|
|
180
|
+
an outstanding refresh, stops/removes its container and checks absence before
|
|
181
|
+
exiting and releasing the lease. Close need not wait for that full cleanup;
|
|
182
|
+
the launcher continues to fence the writer. After a killed holder the next
|
|
183
|
+
holder must remove any leftover container before touching the writer. This
|
|
184
|
+
combination prevents a second client or setup run from using the clone early.
|
|
185
|
+
|
|
186
|
+
To inspect a running writer container with `podman exec`, use the same
|
|
187
|
+
`XDG_RUNTIME_DIR` as the client that started it. Rootless Podman keeps its
|
|
188
|
+
runtime state there, and with another value `exec` reports that the container
|
|
189
|
+
does not exist.
|
|
190
|
+
|
|
191
|
+
## Credentials and residual risks
|
|
192
|
+
|
|
193
|
+
The launcher checks on launch and every **60 seconds**. Only when a selected
|
|
194
|
+
OAuth token expires within **10 minutes** or is expired does it refresh the host
|
|
195
|
+
credential (invalid/missing expiry also triggers it). The refresh asks the Pi
|
|
196
|
+
SDK for that much remaining validity through Pi's own locked host store,
|
|
197
|
+
without a model request, and is bounded at 20 seconds; the launcher then
|
|
198
|
+
copies the selected credentials even if the refresh failed. Boundary refresh
|
|
199
|
+
tokens are empty; API-key entries are copied unchanged, not refreshed.
|
|
200
|
+
|
|
201
|
+
The boundary still holds provider credentials: an **access token**, or the
|
|
202
|
+
**API key** for API-key providers. The worker can read and use them. Network
|
|
203
|
+
**`pasta` is not limited**, and no provider-only proxy/firewall is configured.
|
|
204
|
+
`none` removes network entirely and normally prevents remote provider access.
|
|
205
|
+
Credential exfiltration and runtime escapes remain residual risks.
|
|
206
|
+
|
|
207
|
+
## Review, finish and migration
|
|
208
|
+
|
|
209
|
+
Never run host Git in a writer clone, even for diff/log or direct fetch: mutable
|
|
210
|
+
Git metadata can redirect reads to worker-controlled configuration. Setup checks
|
|
211
|
+
clone layout and runs clone-side Git only in throwaway no-network containers.
|
|
212
|
+
Collect with `--writer <name> --collect --apply`, then review
|
|
213
|
+
`refs/remotes/writer-<name>/<branch>` in your own checkout, with dirty work at
|
|
214
|
+
`<branch>-wip`. Imported refs are untrusted until reviewed.
|
|
215
|
+
|
|
216
|
+
After taking over the result and closing its coding session, run
|
|
217
|
+
`pi-session-mcp-setup --writer <name> --finish --apply` before another task.
|
|
218
|
+
It collects then resets (persistent) or recreates (ephemeral). If any branch name
|
|
219
|
+
was refused, collection is incomplete and finish stops. Rename inside the writer
|
|
220
|
+
or have the operator explicitly resolve loss with `--reset --discard --apply`.
|
|
221
|
+
Finish returns persistent and ephemeral writers to the workspace default base.
|
|
222
|
+
No reconnect is needed after finish, reset or recreate: each session starts a
|
|
223
|
+
fresh launcher. Setup operations on a held writer fail with `writer_busy` after
|
|
224
|
+
a 10-second lease wait, including collection and operations with `--discard`.
|
|
225
|
+
Mode policy changes still require controller/server restart.
|
|
226
|
+
|
|
227
|
+
For a fix round, create a local branch at the collected ref in the operator's
|
|
228
|
+
checkout, run `--writer <name> --reset --base <branch> --apply`, then call
|
|
229
|
+
`pi_session_start` on `pi-session-mcp` with a coding profile and
|
|
230
|
+
`base: "<branch>"`. Read `writer` from the result for collection. Default starts
|
|
231
|
+
cannot take a writer moved to another branch.
|
|
232
|
+
|
|
233
|
+
For hand-made writers:
|
|
234
|
+
|
|
235
|
+
1. Preserve and review any work through their old bundle route.
|
|
236
|
+
2. In each original project remove the manual registration with
|
|
237
|
+
`claude mcp remove pi-coding-<name> -s local`; remove any manual Codex entry too.
|
|
238
|
+
3. Remove the manual wrapper and state directory only after collecting needed work.
|
|
239
|
+
4. Run the explicit isolation control, then
|
|
240
|
+
`pi-session-mcp-setup --repo <alias> --mode container --profiles <coding-aliases> --apply`.
|
|
241
|
+
5. Reconnect/restart the host `pi-session-mcp` server, verify its client targets
|
|
242
|
+
and run `--writer <name> --verify` for the new alias-derived writers.
|
|
243
|
+
|
|
244
|
+
The Go-toolchain writer uses an operator-supplied local **image ID** with
|
|
245
|
+
`--image <image-id> --cache go`, recording `cache: "go"` in container settings.
|
|
246
|
+
Mode requests rebuild options from supplied values/defaults: repeat the image
|
|
247
|
+
and cache flags each time. The Go mount is `/pi/go`, with GOPATH, GOCACHE and
|
|
248
|
+
`GOTOOLCHAIN=local`; setup does not build the operator's toolchain image.
|
|
249
|
+
|
|
250
|
+
A Python writer using uv and npm uses `--image <image-id> --cache uv`, which
|
|
251
|
+
records `cache: "uv"` and mounts a private per-writer directory at `/pi/uv`
|
|
252
|
+
with `UV_CACHE_DIR=/pi/uv/cache` and `npm_config_cache=/pi/uv/npm`. No other uv
|
|
253
|
+
or npm variables are set. The cache belongs to one writer: it is never shared
|
|
254
|
+
between writers and never a host cache mount, and setup does not install uv
|
|
255
|
+
or npm for you.
|
|
256
|
+
|
|
257
|
+
See [Execution modes](execution-modes.md#migration-from-manual-writers) for
|
|
258
|
+
migration limitations and [Doctor](doctor-design.md) for offline writer checks.
|
|
@@ -36,7 +36,7 @@ the documentation calls it CI-tested.
|
|
|
36
36
|
| Concern | Linux mechanism | Location |
|
|
37
37
|
| --- | --- | --- |
|
|
38
38
|
| Kernel lock | util-linux `flock -E 75 -w N 3` locks the open file description that the parent opened; the guardian inherits it as fd 3 | `src/setup-process.ts` `acquireSetupGuardian` |
|
|
39
|
-
| Process-group proof | `/proc/<pid>/stat` scan; `Z`
|
|
39
|
+
| Process-group proof | `/proc/<pid>/stat` scan; a `Z` entry does not count as live unless its `num_threads` is above 1 (#118) | `src/setup-process.ts` `processGroupState`, `src/setup-command-guardian.ts` `groupState`, `processTableReadable` |
|
|
40
40
|
| Filesystem | `statfs().type` allowlist of Linux magic numbers | `src/setup-ownership.ts` `SUPPORTED_LOCAL_FILESYSTEMS` |
|
|
41
41
|
| Platform gates | `process.platform !== "linux"` | `src/setup-main.ts`, `src/setup-process.ts` (runner, guardian), `src/setup-ownership.ts` |
|
|
42
42
|
|
|
@@ -63,7 +63,7 @@ export function currentSetupPlatform(platform?: NodeJS.Platform): SetupPlatform
|
|
|
63
63
|
|
|
64
64
|
export type ProcessGroupState = "alive" | "gone" | "unknown";
|
|
65
65
|
export interface ProcessTable {
|
|
66
|
-
/** "alive"
|
|
66
|
+
/** "alive" for a non-zombie group member, or on Linux a zombie leader with other threads. */
|
|
67
67
|
groupState(group: number): Promise<ProcessGroupState>;
|
|
68
68
|
/** True only if a scan is trustworthy and contains the calling process. */
|
|
69
69
|
readable(): Promise<boolean>;
|