pi-session-mcp 0.8.3 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.pi-session-mcp-cli/client-adapters/command.js +33 -0
- package/.pi-session-mcp-cli/client-adapters/mcp-verifier.js +198 -0
- package/.pi-session-mcp-cli/client-adapters/types.js +1 -0
- package/.pi-session-mcp-cli/config.js +29 -3
- package/.pi-session-mcp-cli/container-runtime.js +18 -0
- package/.pi-session-mcp-cli/doctor.js +370 -4
- package/.pi-session-mcp-cli/execution-modes.js +83 -0
- package/.pi-session-mcp-cli/execution-profile.js +1 -0
- package/.pi-session-mcp-cli/override-lock.js +4 -4
- package/.pi-session-mcp-cli/session-tools.js +45 -0
- package/.pi-session-mcp-cli/setup-platform.js +64 -36
- package/.pi-session-mcp-cli/setup-process.js +455 -0
- package/.pi-session-mcp-cli/skill-library.js +8 -4
- package/.pi-session-mcp-cli/turn-events.js +97 -0
- package/.pi-session-mcp-cli/writer-boundary.js +321 -0
- package/.pi-session-mcp-cli/writer-fence.js +50 -0
- package/.pi-session-mcp-cli/writer-lease.js +140 -0
- package/.pi-session-mcp-cli/writer-lifecycle.js +567 -0
- package/.pi-session-mcp-cli/writer-state.js +199 -0
- package/.pi-session-mcp-cli/writer-wrapper.js +14 -0
- package/CHANGELOG.md +527 -0
- package/README.md +8 -2
- package/dist/capabilities.d.ts +9 -1
- package/dist/capabilities.js +8 -3
- package/dist/child-stdio-transport.d.ts +21 -0
- package/dist/child-stdio-transport.js +88 -0
- package/dist/client-adapters/claude-code.js +3 -2
- package/dist/client-adapters/command.d.ts +8 -0
- package/dist/client-adapters/command.js +9 -1
- package/dist/client-adapters/mcp-verifier.d.ts +7 -0
- package/dist/client-adapters/mcp-verifier.js +21 -4
- package/dist/client-adapters/types.d.ts +5 -1
- package/dist/client-adapters/writer-registration.d.ts +16 -0
- package/dist/client-adapters/writer-registration.js +156 -0
- package/dist/config.d.ts +12 -1
- package/dist/config.js +29 -3
- package/dist/container-runtime.d.ts +2 -0
- package/dist/container-runtime.js +18 -0
- package/dist/doctor.d.ts +36 -2
- package/dist/doctor.js +370 -4
- package/dist/event-spool.d.ts +70 -0
- package/dist/event-spool.js +180 -0
- package/dist/execution-modes.d.ts +60 -0
- package/dist/execution-modes.js +83 -0
- package/dist/execution-profile.d.ts +2 -0
- package/dist/execution-profile.js +1 -0
- package/dist/main.js +63 -8
- package/dist/override-lock.d.ts +2 -0
- package/dist/override-lock.js +4 -4
- package/dist/pi-adapter.d.ts +31 -1
- package/dist/pi-adapter.js +12 -0
- package/dist/process-diagnostics.d.ts +1 -1
- package/dist/process-diagnostics.js +2 -1
- package/dist/refusal-server.d.ts +6 -0
- package/dist/refusal-server.js +46 -0
- package/dist/sdk-pi-adapter.js +16 -9
- package/dist/server.d.ts +3 -2
- package/dist/server.js +27 -53
- package/dist/session-registry.d.ts +32 -2
- package/dist/session-registry.js +61 -11
- package/dist/session-tools.d.ts +14 -5
- package/dist/session-tools.js +13 -9
- package/dist/setup-cli.d.ts +14 -0
- package/dist/setup-cli.js +132 -0
- package/dist/setup-command-guardian.js +9 -3
- package/dist/setup-hooks.d.ts +158 -0
- package/dist/setup-hooks.js +657 -0
- package/dist/setup-main.d.ts +1 -1
- package/dist/setup-main.js +18 -2
- package/dist/setup-modes.d.ts +18 -0
- package/dist/setup-modes.js +131 -0
- package/dist/setup-ownership.d.ts +1 -0
- package/dist/setup-ownership.js +11 -3
- package/dist/setup-platform.d.ts +9 -1
- package/dist/setup-platform.js +64 -36
- package/dist/setup-process.d.ts +23 -1
- package/dist/setup-process.js +88 -10
- package/dist/setup-writers.d.ts +42 -0
- package/dist/setup-writers.js +510 -0
- package/dist/setup.d.ts +4 -1
- package/dist/setup.js +23 -10
- package/dist/skill-library.d.ts +2 -0
- package/dist/skill-library.js +8 -4
- package/dist/tool-schemas.d.ts +339 -0
- package/dist/tool-schemas.js +49 -0
- package/dist/turn-events.d.ts +45 -0
- package/dist/turn-events.js +97 -0
- package/dist/wake-hook.d.ts +180 -0
- package/dist/wake-hook.js +638 -0
- package/dist/wake-main.d.ts +8 -0
- package/dist/wake-main.js +111 -0
- package/dist/writer-acceptance.d.ts +10 -0
- package/dist/writer-acceptance.js +192 -0
- package/dist/writer-boundary.d.ts +52 -0
- package/dist/writer-boundary.js +321 -0
- package/dist/writer-credentials.d.ts +29 -0
- package/dist/writer-credentials.js +85 -0
- package/dist/writer-fence.d.ts +12 -0
- package/dist/writer-fence.js +50 -0
- package/dist/writer-guard.d.ts +13 -0
- package/dist/writer-guard.js +54 -0
- package/dist/writer-launch.d.ts +29 -0
- package/dist/writer-launch.js +232 -0
- package/dist/writer-lease.d.ts +28 -0
- package/dist/writer-lease.js +140 -0
- package/dist/writer-lifecycle.d.ts +96 -0
- package/dist/writer-lifecycle.js +567 -0
- package/dist/writer-relay.d.ts +33 -0
- package/dist/writer-relay.js +359 -0
- package/dist/writer-state.d.ts +111 -0
- package/dist/writer-state.js +199 -0
- package/dist/writer-wrapper.d.ts +3 -0
- package/dist/writer-wrapper.js +14 -0
- package/docs/acceptance.md +1694 -1
- package/docs/adr/0003-post-mvp-maintenance.md +2 -2
- package/docs/adr/0006-pi-extension-allowlist.md +3 -1
- package/docs/adr/0008-coding-profile-isolation.md +295 -0
- package/docs/adr/0009-execution-modes.md +131 -0
- package/docs/adr/0010-read-only-extension-tools.md +68 -0
- package/docs/adr/0011-turn-events-and-controller-wake.md +173 -0
- package/docs/adr/0012-leased-writer-pool.md +357 -0
- package/docs/architecture.md +96 -8
- package/docs/client-setup-design.md +12 -8
- package/docs/client-setup.md +84 -2
- package/docs/doctor-design.md +48 -0
- package/docs/evaluation/2026-10-17-live-screening.md +121 -0
- package/docs/evaluation/2026-10-17-node-runtime-followup.md +33 -0
- package/docs/evaluation/2026-10-17-profile-evaluation-evidence.md +155 -0
- package/docs/evaluation/2026-10-17-test-coverage.md +127 -0
- package/docs/evaluation/README.md +123 -0
- package/docs/evaluation/client-reconnect-2026-10-17/README.md +41 -0
- package/docs/evaluation/client-reconnect-2026-10-17/checks.json +38 -0
- package/docs/evaluation/client-reconnect-2026-10-17/integrity.json +30 -0
- package/docs/evaluation/client-reconnect-2026-10-17/reconnect.json +57 -0
- package/docs/evaluation/client-reconnect-2026-10-17/registration-verification.json +389 -0
- package/docs/evaluation/client-reconnect-2026-10-17/review.json +10 -0
- package/docs/evaluation/controller-ledger-hooks-2026-10-26/README.md +115 -0
- package/docs/evaluation/evidence-2026-10-17/budget.proposed.json +13 -0
- package/docs/evaluation/evidence-2026-10-17/changed-files.txt +82 -0
- package/docs/evaluation/evidence-2026-10-17/checks.json +103 -0
- package/docs/evaluation/evidence-2026-10-17/comparison.json +247 -0
- package/docs/evaluation/evidence-2026-10-17/development-collection-failure.json +15 -0
- package/docs/evaluation/evidence-2026-10-17/full-attempt-default.json +19 -0
- package/docs/evaluation/evidence-2026-10-17/full-tests.json +17 -0
- package/docs/evaluation/evidence-2026-10-17/inventory.json +239 -0
- package/docs/evaluation/evidence-2026-10-17/manifest.json +359 -0
- package/docs/evaluation/evidence-2026-10-17/offline.json +1020 -0
- package/docs/evaluation/evidence-2026-10-17/ui-reference/T3-1280.png +0 -0
- package/docs/evaluation/evidence-2026-10-17/ui-reference/T3-375.png +0 -0
- package/docs/evaluation/evidence-2026-10-17/ui-reference/result.json +141 -0
- package/docs/evaluation/extension-ablation-2026-10-20/README.md +414 -0
- package/docs/evaluation/extension-ablation-2026-10-20/setup.md +140 -0
- package/docs/evaluation/extension-ablation-repeat-2026-10-21/README.md +142 -0
- package/docs/evaluation/extension-ablation-repeat-2026-10-21/setup.md +69 -0
- package/docs/evaluation/extension-audit-2026-10-17/README.md +149 -0
- package/docs/evaluation/extension-audit-2026-10-17/checks.json +38 -0
- package/docs/evaluation/extension-audit-2026-10-17/cursor-static-evidence.json +93 -0
- package/docs/evaluation/extension-audit-2026-10-17/installed-artifact-comparison.json +85 -0
- package/docs/evaluation/extension-audit-2026-10-17/installed-packages.json +100 -0
- package/docs/evaluation/extension-audit-2026-10-17/integrity.json +108 -0
- package/docs/evaluation/extension-audit-2026-10-17/navigation-cursor-registry.json +290 -0
- package/docs/evaluation/extension-audit-2026-10-17/navigation-static-evidence.json +185 -0
- package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-bindings.json +25 -0
- package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-cleanup.json +12 -0
- package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-probe.mjs +63 -0
- package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-reproduction.json +91 -0
- package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-result.json +83 -0
- package/docs/evaluation/extension-audit-2026-10-17/permission-cache-artifact-verification.json +24 -0
- package/docs/evaluation/extension-audit-2026-10-17/permission-cache-evidence.json +133 -0
- package/docs/evaluation/extension-audit-2026-10-17/permission-cache-report.md +64 -0
- package/docs/evaluation/extension-audit-2026-10-17/publication-export.json +10 -0
- package/docs/evaluation/extension-audit-2026-10-17/resolver-gates.json +51 -0
- package/docs/evaluation/extension-audit-2026-10-17/review.json +28 -0
- package/docs/evaluation/extension-audit-2026-10-17/run-openwiki-headless-probe.mjs +29 -0
- package/docs/evaluation/extension-audit-2026-10-17/summary.json +123 -0
- package/docs/evaluation/extension-audit-2026-10-17/web-openwiki-artifacts.json +29 -0
- package/docs/evaluation/extension-audit-2026-10-17/web-openwiki-evidence.json +116 -0
- package/docs/evaluation/extension-audit-2026-10-17/web-openwiki-report.md +113 -0
- package/docs/evaluation/extension-functions-2026-10-17/README.md +33 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/README.md +39 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-03dc1dad-9959-40df-b51c-7820991bf7e3.json +79 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-0c43651e-8c7d-4c7c-aa9b-5b5761141e3b.json +54 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-51247b13-87c1-4ec6-886b-82d922b0585a.json +89 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-5337f6bf-503f-4c45-aac0-43b142385a87.json +47 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-60285194-b1d1-4335-b616-6614941585df.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-6d2fbaa9-a720-4582-9be1-a95f4764786d.json +69 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-6fbb576c-d87d-478d-9c05-4b5ef3563598.json +125 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-730926d1-ef20-4b2d-ab74-7e542f1065e9.json +48 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-a1baa47a-5bbe-4a16-ade8-a350599eb911.json +48 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-bc1d69c7-784f-4ddb-9335-0d905330d568.json +91 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-d582757d-2859-4683-8310-ec158bf6d551.json +99 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-e6533a23-4933-4d6e-a250-b1b27f010d18.json +60 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts.json +138 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/guard.mjs +74 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/integrity.json +86 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/openwiki-final.json +125 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/run.mjs +36 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/web-final.json +99 -0
- package/docs/evaluation/extension-functions-2026-10-17/bridges/worker.mjs +102 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/README.md +21 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-30-31-440Z-b1a47f88-8d86-4238-9ef8-af890d9ba74b.json +129 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-31-04-505Z-a3736add-73b8-4d77-8ea6-084ce8aa4599.json +129 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-31-15-654Z-b0197bff-8363-4d46-b84b-46d9ed67fc39.json +248 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-31-39-137Z-e373f24d-8a8c-46b0-86aa-9f687cfadb9b.json +278 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-32-05-324Z-f63095f1-755e-43fc-9d28-3cd1a9ff4f4d.json +251 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-32-25-191Z-fc9a83af-ceae-40d7-a737-8ef861ba7946.json +282 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-33-14-993Z-5e7eae34-09f0-4c80-9210-b8cc4d1acb5f.json +282 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-38-39-010Z-57cf6a26-f091-45de-8849-b616b303a46c.json +283 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-40-32-118Z-54528e43-ac07-4f9c-8f12-10c041130983.json +283 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-41-49-525Z-48195b6e-f20d-49a5-bd53-a732a0af10c1.json +324 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/cache-function-evidence-2026-10-17T13-42-18-175Z-215330e7-06a6-4666-af9c-2ecb214d8d71.json +324 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/integrity.json +165 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/probe.mjs +161 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipt-archive.json +150 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-3feeffc5-97bf-4079-8505-8119fab7956a.json +54 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-42e5eace-ad87-480a-94d9-448c1dd167b8.json +49 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-50f39f1c-8b48-442b-8d15-1f9c8f63bd81.json +49 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-8482b2b0-f600-488b-9f36-905e0125177a.json +54 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-128ffdce-6fd5-431b-8019-32b40ba4174d.json +42 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-3b572182-a737-471f-b9cb-b01d5da1752a.json +42 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-6c225370-2f47-4a0a-80d5-87d12f6c6fdc.json +37 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-b48399db-cbed-43de-9071-ac27c34e3757.json +37 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-3a8f52b6-c8d6-4d1c-844c-782a6624a29e.json +45 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-6fcdbc20-b14b-4b80-a4da-bf24078da8d2.json +50 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-a8d6f628-40e1-437e-b192-f7232a051a44.json +50 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-c3c39463-a2d6-4ff8-b985-8f6d1fb1aa02.json +45 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-a23c264f-151d-4ff0-aab4-bdbb2f6560d8.json +53 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-d8178bd3-6530-4915-9cf1-056a975bfbcd.json +53 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-e3985119-e101-459e-91cd-21a0905287ba.json +48 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-e7a40382-2d27-4db5-a133-dbe346a5dc60.json +48 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-223d7adc-2dbc-4017-b1ec-0c38294320e2.json +41 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-347a8548-d2e0-4846-a08e-b0399f8fd3b4.json +41 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-49b45e2b-e2d2-456f-b73f-e6bc938b6378.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-aaf432f2-bb91-41a7-b951-2d4316389632.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-204ab3e8-f1fe-4894-8fb0-08299deb4c21.json +41 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-9388d2df-fa15-479c-a4ef-2a774c366c0f.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-e0bb4742-214a-4b3f-88d2-44de54394e2f.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-f77e1e2d-742a-490f-9955-1dfb19f59c9c.json +41 -0
- package/docs/evaluation/extension-functions-2026-10-17/cache/runner.mjs +36 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/README.md +20 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-10-753Z-2bb4fff5-48cc-4f6b-ae1b-5cc1a07f610b.json +54 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-26-537Z-5adc4fb1-0008-4ef9-a106-aa372dabf061.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-32-362Z-30949c31-73a3-4dae-af81-68deded51543.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-38-494Z-8eec81b8-5576-48cb-b2fa-c279269db058.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-45-546Z-991647e5-7ea4-43c4-a90d-868e4ac38d83.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-37-02-277Z-2296fb35-e5cb-4bf1-9e83-7370bcb46bfe.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-37-28-390Z-e9c3d106-b4c9-4146-ae83-a2799c907fe5.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-37-37-371Z-8545c893-a8e3-4dc6-973b-81dfd97d798b.json +56 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-38-41-612Z-c57c4778-261d-4397-8a36-df9cc23ca629.json +58 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-38-51-661Z-0eb898de-7471-4f17-a308-5ef5d86421ff.json +58 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-38-55-412Z-8169d843-a9e7-48f4-88b1-3a90e1592df1.json +58 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-39-15-274Z-a5610333-e428-4cc6-9f5a-9206748ee512.json +58 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-39-39-506Z-d4c80a7b-76b4-4d11-bf0f-552d11b131b2.json +136 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-39-53-515Z-db409f47-8ee5-4354-b7f9-a258eb7e17d0.json +136 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-42-04-909Z-01d70cb3-6897-46ca-b8aa-1c69d5b5c7fc.json +148 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/integrity.json +205 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/probe.mjs +151 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipt-archive.json +186 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-104e378f-8f82-4ae9-bffc-7f1d52e00e74.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-182a8009-c52a-4760-9768-9cba15fceb9c.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-1f07360d-046f-4f0c-b40f-6b57a027220c.json +65 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-256cb86e-40ae-4fec-a2d2-9b7f66cc4be8.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-2667d991-3133-44c3-b883-c401b3c14cb1.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-394fc425-ed51-408f-ab09-6d26aee0d48f.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-531d3f1d-c326-4914-b768-3d32103513b9.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-5c7d0d62-8290-494f-8729-5d60bc626ad7.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-64af1d94-ea73-481f-b827-dbf6755d8591.json +66 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-65fce696-864c-4247-960e-59f6d671cbf9.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-66acde31-19c7-4d3e-9814-ddeb2cffd373.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-79d220d0-fc0b-4cad-85cc-40b9e904fb97.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-a58f0281-71bc-4757-9d6f-e281f813135e.json +65 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-c2b61e4b-fd33-4969-ab29-118957ca5fbb.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-f61b5020-2c05-40ad-9cb8-590b22790186.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-0ee0df5a-299f-451c-96e3-5abcf8bfa999.json +45 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-169e5146-09a2-4231-8017-ebd8d4b75f0a.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-19d479f2-7162-463e-90de-2d89a13e59a3.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-1bd882bb-2403-4269-8335-90f9803f57b7.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-2ab9d418-68b2-4679-bf42-f31b6945ea5a.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-3a6aa7d7-b956-4fe5-9555-a2c63408c067.json +45 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-6333425f-0b46-4ced-a272-3d48895ee853.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-6eccb170-ff45-40e2-afc5-dfc0f77c229f.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-7f330c57-9c3f-4879-a1d0-67c4c5c36050.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-8d9de272-165c-4bb8-a147-d1b306388472.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-c1ffa69f-25fa-4f45-a691-af3bc422c089.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-c24ad0c8-5e7e-4d71-9b22-3e2708ce1626.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-c5a3140e-a28e-4264-9ee6-51b1310b3123.json +14 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-cdbb3dde-2441-46ae-9111-f2a299d45807.json +46 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-d68f774c-d1f0-4620-b334-301a20edffc3.json +15 -0
- package/docs/evaluation/extension-functions-2026-10-17/cursor/runner.mjs +147 -0
- package/docs/evaluation/extension-functions-2026-10-17/integrity.json +618 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/README.md +22 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/SHA256SUMS.txt +8 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempt.json +13 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-30-37-626Z-7ba0ce60-b805-4bf1-813f-80f0673c519d.json +50 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-31-06-997Z-0df6e689-b7f6-4daf-a730-724638c7e9bb.json +52 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-31-22-489Z-dfa50911-d117-400d-9ea3-76b224693c10.json +59 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-31-39-899Z-6792c0ef-c795-4136-98e2-b9a9b00489bd.json +59 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-31-58-555Z-e23d44fb-d2cb-42b6-b76b-f2ac53645401.json +59 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-32-18-734Z-3708117d-bca6-44a6-9f61-4339a67535ae.json +60 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-32-34-897Z-abbfb675-7120-46fc-8638-2dde943a3c51.json +114 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-33-30-753Z-f1965485-aa41-4a9a-b62e-267fc9d7686c.json +72 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-33-46-589Z-e3b46364-e0dd-4a95-91ce-c11f5192d83f.json +72 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-33-57-569Z-d296148e-2f64-4921-bad7-391d0f3cc61d.json +74 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-34-30-540Z-51791e8c-b2a7-4f93-bff6-9b0467aeba51.json +109 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-34-57-906Z-2c3e469c-6d89-4707-8bc6-e62dcfacdc7c.json +114 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-35-16-679Z-035260fc-f3d1-4c1c-9619-81f2aa2ced55.json +115 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-36-05-641Z-24ceb58d-441b-4ffe-9853-ef4d15eb8c81.json +73 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-37-00-445Z-1ca606b7-306f-41e9-8745-b53879c620bb.json +72 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-37-23-659Z-c958d5fc-5c17-46b9-abc0-87913f14fd4b.json +73 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-38-49-639Z-9e74ee3c-7cea-4d9e-832f-0b5068d161ec.json +112 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-39-53-463Z-5d834e9f-e247-4887-8200-dee41070567f.json +32 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-40-16-811Z-0be9d64c-a0d7-405c-b81a-12f8c6cfebac.json +33 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-40-36-020Z-412777d5-f352-4fa0-9a07-f017b5f04cbb.json +124 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-42-03-506Z-a0cca711-1300-4431-bfff-5814a409d0af.json +120 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-42-28-426Z-fb70da7e-4888-469a-b5cd-b74da52afa9f.json +112 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-42-41-596Z-c8e99863-70e2-40f1-a516-e9f41156ef44.json +71 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-44-06-279Z-39516e45-daf6-409b-b216-64179608cc2e.json +97 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-45-34-538Z-87ddef90-2fda-4211-a513-0516dec235f4.json +112 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-45-48-020Z-06f478f2-43c4-48a7-ac02-7e53d4df8aaf.json +112 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-46-00-807Z-a98cc49d-6cf6-4109-aa95-f2d36e8d35c3.json +97 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-46-34-183Z-77f75abc-9ec3-41b2-896f-b6f4a180dca8.json +160 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/attempts/isolated-extensions-results-2026-10-17T13-46-56-605Z-f46134c2-8523-4892-ab76-e88195d79ed2.json +163 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/child-guard.mjs +30 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/final-result.json +42 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/function-probe.mjs +521 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/function-runner.mjs +201 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/integrity.json +153 -0
- package/docs/evaluation/extension-functions-2026-10-17/navigation/receipt-archive.json +160 -0
- package/docs/evaluation/extension-functions-2026-10-17/review.json +27 -0
- package/docs/evaluation/extension-functions-2026-10-17/summary.json +102 -0
- package/docs/evaluation/extension-functions-2026-10-17/verification.json +103 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/README.md +106 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/auth-warmup.mjs +33 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/contained-agent-ro.json +433 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/contained.json +439 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/control.json +403 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/live.json +75 -0
- package/docs/evaluation/isolation-acceptance-2026-10-18/wrapper.sh +37 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/README.md +360 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/design.md +150 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/inventory.md +113 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/README.md +117 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/dry-run/dry-01-L1-A.json +202 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/dry-run/dry-02-L1-C.json +259 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/01-L1-A.json +169 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/02-L1-A.json +202 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/03-L1-C.json +256 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/approval.json +31 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run-2/01-L1-C.json +256 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run-2/02-L1-A.json +201 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run-2/approval.json +16 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/live-plan.md +87 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/pre-registration.md +117 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S1.json +361 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S2.json +544 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S3.json +470 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S4.json +271 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S5.json +271 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S6.json +266 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/X6.json +29 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/summary.json +269 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S1.json +391 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S2.json +600 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S3.json +519 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S4.json +281 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S5.json +294 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S6.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S8.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/X6.json +32 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/summary.json +307 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S1.json +391 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S2.json +600 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S3.json +519 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S4.json +281 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S5.json +294 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S6.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S8.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/X6.json +32 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/summary.json +307 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S1.json +409 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S2.json +634 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S3.json +537 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S4.json +281 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S5.json +294 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S6.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S8.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/X6.json +32 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/summary.json +307 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S1.json +409 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S2.json +634 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S3.json +537 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S4.json +281 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S5.json +294 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S6.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S8.json +280 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/X6.json +32 -0
- package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/summary.json +307 -0
- package/docs/evaluation/live-rescreen-2026-10-17/README.md +114 -0
- package/docs/evaluation/live-rescreen-2026-10-17/approval.json +18 -0
- package/docs/evaluation/live-rescreen-2026-10-17/approved-budget.json +13 -0
- package/docs/evaluation/live-rescreen-2026-10-17/approved-manifest.json +315 -0
- package/docs/evaluation/live-rescreen-2026-10-17/audit-rescreen.mjs +78 -0
- package/docs/evaluation/live-rescreen-2026-10-17/audit.json +152 -0
- package/docs/evaluation/live-rescreen-2026-10-17/backend-independent-checks.json +38 -0
- package/docs/evaluation/live-rescreen-2026-10-17/checks.json +54 -0
- package/docs/evaluation/live-rescreen-2026-10-17/execution.json +19 -0
- package/docs/evaluation/live-rescreen-2026-10-17/integrity.json +138 -0
- package/docs/evaluation/live-rescreen-2026-10-17/planning-ledger.json +26 -0
- package/docs/evaluation/live-rescreen-2026-10-17/review.json +16 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/comparison.json +177 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-1.claim +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-1.diagnostic.json +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-1.json +97 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.claim +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.json +104 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.patch +11 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.snapshot/contract.mjs +4 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.snapshot/package.json +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-3.claim +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-3.json +89 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.claim +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.json +104 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.patch +11 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.snapshot/contract.mjs +4 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.snapshot/package.json +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-5.claim +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-5.diagnostic.json +1 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-5.json +117 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-6.json +53 -0
- package/docs/evaluation/live-rescreen-2026-10-17/runtime-observation.json +11 -0
- package/docs/evaluation/live-screening-2026-10-17/approval.json +13 -0
- package/docs/evaluation/live-screening-2026-10-17/approved-budget.json +13 -0
- package/docs/evaluation/live-screening-2026-10-17/approved-manifest.json +359 -0
- package/docs/evaluation/live-screening-2026-10-17/audit.json +143 -0
- package/docs/evaluation/live-screening-2026-10-17/integrity.json +148 -0
- package/docs/evaluation/live-screening-2026-10-17/inventory.json +239 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/comparison.json +247 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-1.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-1.diagnostic.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-1.json +98 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.json +104 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.patch +11 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.snapshot/contract.mjs +4 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.snapshot/package.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-3.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-3.diagnostic.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-3.json +97 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.json +104 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.patch +11 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.snapshot/contract.mjs +4 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.snapshot/package.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-5.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-5.diagnostic.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-5.json +97 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.json +104 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.patch +11 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.snapshot/contract.mjs +4 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.snapshot/package.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-7.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-7.json +108 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-8.claim +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-8.diagnostic.json +1 -0
- package/docs/evaluation/live-screening-2026-10-17/runs/screen-8.json +116 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/README.md +124 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/ab-proposal.json +135 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/README.md +25 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/approved-decision.json +79 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/token-live-result.json +546 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/README.md +22 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/approved-decision.json +80 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/token-live-result.json +1663 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/README.md +23 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/token-live-result.json +1748 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/README.md +25 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/token-live-result.json +3019 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/token-live-result.json +2859 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/README.md +67 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/token-live-result.json +3019 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/token-live-result.json +2981 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/token-live-result.json +2887 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/token-live-result.json +3189 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/token-live-result.json +2929 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/token-live-result.json +3085 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/token-live-result.json +3019 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/approved-budget.json +13 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/approved-decision.json +71 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/approved-manifest.json +271 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/token-live-result.json +2925 -0
- package/docs/evaluation/m1-ab-proposal-2026-10-18/results/summary-rows.json +338 -0
- package/docs/evaluation/node24-followup-2026-10-17/README.md +55 -0
- package/docs/evaluation/node24-followup-2026-10-17/client-migration-review.json +20 -0
- package/docs/evaluation/node24-followup-2026-10-17/client-registration-migration.json +31 -0
- package/docs/evaluation/node24-followup-2026-10-17/client-registration-verification.json +389 -0
- package/docs/evaluation/node24-followup-2026-10-17/closure-checks.json +33 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-probe.mjs +259 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-report.md +39 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result-attempt-2.json +49 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result-attempt-3.json +76 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result-attempt-4.json +108 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result.json +12 -0
- package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-run.mjs +96 -0
- package/docs/evaluation/node24-followup-2026-10-17/download.json +16 -0
- package/docs/evaluation/node24-followup-2026-10-17/extension-summary.json +97 -0
- package/docs/evaluation/node24-followup-2026-10-17/final-review.json +15 -0
- package/docs/evaluation/node24-followup-2026-10-17/install.json +10 -0
- package/docs/evaluation/node24-followup-2026-10-17/integrity.json +204 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-evidence.json +39 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-probe.mjs +277 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-report.md +35 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-19-48-378Z-b378dc9f-9ab8-4349-8892-78af8184f78f.json +151 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-20-22-821Z-85cfcba4-c05e-4c5a-9658-d8d70f5c8d1a.json +223 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-20-54-825Z-fd5d8373-6e29-4197-84bd-2e65251b4db8.json +207 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-21-44-636Z-488698ad-f8bf-4d7e-b85a-615275c32e5d.json +82 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-22-05-375Z-16f5d77c-32a2-4d0a-905a-e080b392316f.json +94 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-22-07-471Z-fcbe7c98-fed3-4120-a860-b2e3f9572836.json +63 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-22-17-638Z-45ec386d-3429-4a7c-a10e-8673c03861f0.json +63 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-22-22-485Z-1b08e134-667c-4416-8372-cb233939c48b.json +125 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-22-25-490Z-223fd05e-52f9-4996-88d7-3ec43a6ecdd9.json +125 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-23-42-291Z-f4af1e12-844e-4b2d-a090-9068e7626dd5.json +82 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-24-36-866Z-30770d13-c7ae-4309-921b-5c1b43050adb.json +52 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-25-05-378Z-2a5dffc1-3f3a-433a-823f-6e77964dcaee.json +53 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-25-15-842Z-798946f5-b9a5-4810-8a0c-35be6f40abb3.json +83 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-results-2026-10-17T09-25-19-099Z-89bd000d-bb51-4e3a-b713-51ff1ff4e38b.json +87 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-runner.mjs +172 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-install.json +121 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-package-lock.json +2321 -0
- package/docs/evaluation/node24-followup-2026-10-17/isolated-package.json +12 -0
- package/docs/evaluation/node24-followup-2026-10-17/launcher-review.json +17 -0
- package/docs/evaluation/node24-followup-2026-10-17/launcher-switch.json +28 -0
- package/docs/evaluation/node24-followup-2026-10-17/mcp-launcher-test.json +24 -0
- package/docs/evaluation/node24-followup-2026-10-17/migrate-client-node.mjs +129 -0
- package/docs/evaluation/node24-followup-2026-10-17/node-runtime-report.md +127 -0
- package/docs/evaluation/node24-followup-2026-10-17/node24-checks.json +44 -0
- package/docs/evaluation/node24-followup-2026-10-17/pi-launcher-test.json +13 -0
- package/docs/evaluation/node24-followup-2026-10-17/publication-export.json +11 -0
- package/docs/evaluation/node24-followup-2026-10-17/restore-launchers.mjs +26 -0
- package/docs/evaluation/node24-followup-2026-10-17/verify-client-node.mjs +36 -0
- package/docs/evaluation/permission-gates-2026-10-17/README.md +23 -0
- package/docs/evaluation/permission-gates-2026-10-17/attempts.json +53 -0
- package/docs/evaluation/permission-gates-2026-10-17/integrity.json +46 -0
- package/docs/evaluation/permission-gates-2026-10-17/permission-gate-probe.mjs +132 -0
- package/docs/evaluation/permission-gates-2026-10-17/permission-gate-worker.mjs +209 -0
- package/docs/evaluation/permission-gates-2026-10-17/permission-gates-result-final.json +53 -0
- package/docs/evaluation/permission-gates-2026-10-17/permission-gates-result-verified.json +54 -0
- package/docs/evaluation/permission-gates-2026-10-17/permission-gates-result.json +53 -0
- package/docs/evaluation/permission-gates-2026-10-17/review.json +19 -0
- package/docs/evaluation/permission-gates-2026-10-17/superseded-initial-receipt.json +40 -0
- package/docs/evaluation/pi-lens-registration-2026-10-19/README.md +90 -0
- package/docs/evaluation/pi-lens-registration-2026-10-19/probe.mjs +126 -0
- package/docs/evaluation/pi-lens-registration-2026-10-19/result.json +1 -0
- package/docs/evaluation/plan-continuation-2026-10-17/README.md +107 -0
- package/docs/evaluation/plan-continuation-2026-10-17/budget.proposed.json +13 -0
- package/docs/evaluation/plan-continuation-2026-10-17/checks.json +1048 -0
- package/docs/evaluation/plan-continuation-2026-10-17/integrity.json +58 -0
- package/docs/evaluation/plan-continuation-2026-10-17/inventory.json +239 -0
- package/docs/evaluation/plan-continuation-2026-10-17/manifest.proposed.json +315 -0
- package/docs/evaluation/plan-continuation-2026-10-17/next-stage-ledger.json +19 -0
- package/docs/evaluation/plan-continuation-2026-10-17/prepare-rescreen.mjs +30 -0
- package/docs/evaluation/plan-continuation-2026-10-17/prior-integrity.json +25 -0
- package/docs/evaluation/plan-continuation-2026-10-17/proposal-validation.json +14 -0
- package/docs/evaluation/plan-continuation-2026-10-17/receipt-contract-update.patch +40 -0
- package/docs/evaluation/plan-continuation-2026-10-17/review.json +8 -0
- package/docs/evaluation/plan-continuation-2026-10-17/source-delta.json +14 -0
- package/docs/evaluation/profile-evaluation.md +297 -0
- package/docs/evaluation/publication-2026-10-17/README.md +88 -0
- package/docs/evaluation/publication-2026-10-17/checks.json +117 -0
- package/docs/evaluation/publication-2026-10-17/integrity.json +21 -0
- package/docs/evaluation/publication-2026-10-17/publication-scan.json +63 -0
- package/docs/evaluation/publication-2026-10-17/review.json +21 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/README.md +16 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/bounded-wait.md +78 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/README.md +151 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-1/claude-projection.json +126 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-2/claude-projection.json +1895 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-3/claude-projection.json +1895 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-4/claude-projection.json +1797 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-5/claude-projection.json +1797 -0
- package/docs/evaluation/s5-decision-inputs-2026-10-18/worker-usage.md +63 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/README.md +212 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/binding.json +20 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-ev-off.json +43 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-ev-spool.json +43 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-l3.json +39 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-pre.json +31 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e-teardown-setup-remove.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-digest-ev-e1.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-leaks.json +131 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-oracle.json +74 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-setup-1-dryrun.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-setup-2-apply.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-setup-3-verify.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-digest-ev-e2l.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-digest-ev-e2s.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-leaks.json +205 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-oracle.json +110 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-digest-ev-e3.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-leaks.json +215 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-oracle.json +79 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-digest-ev-e4a.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-digest-ev-e4b.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-late-a.json +16 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-late-b.json +16 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-leaks.json +167 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-oracle.json +70 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-run.json +37 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-digest-ev-e5.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-leaks.json +82 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-oracle.json +60 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-server-env-names.txt +14 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-digest-ev-e1.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-leaks.json +156 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-run.json +37 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-setup-apply.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-teardown-remove.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/final-e-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/kit.sha256 +23 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-packed-off.json +1185 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-packed-spool.json +1334 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-wt-off.json +1185 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-wt-spool.json +1334 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-digest-cc-analysis.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-leaks.json +80 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-oracle.json +61 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-leaks.json +80 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-oracle-stage1.json +34 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-oracle-stage2.json +35 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-snapshot-stage1.txt +4 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-snapshot-stage2.txt +5 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-digest-cc-abort.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-leaks.json +82 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-oracle-flow.json +61 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-oracle-late.json +16 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-controller-skill-remove.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-controller-skill-setup.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-digest-cx-analysis.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-leaks.json +93 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-oracle.json +61 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-leaks.json +93 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-oracle-stage1.json +34 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-oracle-stage2.json +35 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-snapshot-stage1.txt +4 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-snapshot-stage2.txt +5 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-digest-cx-abort.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-leaks.json +95 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-oracle-flow.json +61 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-oracle-late.json +16 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-digest-pre-analysis.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-digest-pre-code.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-leaks.json +86 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-oracle.json +39 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-clean-10s.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-clean.json +15 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-digest-pre-analysis.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-digest-pre-code.json +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-leaks.json +47 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-oracle.json +39 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-after-cc.json +6 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-after-cx.json +6 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-after-e.json +6 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-before.json +6 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-control-apply.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-control-dryrun.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-provision-apply-attempt1.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-provision-apply-attempt2.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-provision-dryrun.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-writer-verify.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2-leaks.json +130 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2-oracle.txt +14 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2b-oracle.txt +16 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2c-oracle.txt +8 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2d-oracle.txt +6 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2r-leaks.json +130 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2r-oracle.txt +3 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2r-run.json +33 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3-collect.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3-finish.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3r-collect.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3r-finish.json +1 -0
- package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w4-remove.json +1 -0
- package/docs/evaluation/subagent-probe-2026-10-26/README.md +132 -0
- package/docs/evaluation/subagent-probe-2026-10-26/results/K7.json +463 -0
- package/docs/evaluation/subagent-probe-2026-10-26/results/summary.json +50 -0
- package/docs/evaluation/test-coverage-2026-10-17.json +483 -0
- package/docs/evaluation/test-coverage-review-2026-10-17.json +22 -0
- package/docs/evaluation/test-coverage-verification-2026-10-17.json +31 -0
- package/docs/evaluation/token-footprint-2026-10-17/README.md +297 -0
- package/docs/evaluation/token-footprint-2026-10-17/baseline.json +25871 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/README.md +24 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/baseline.json +30346 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/client-projection.json +2538 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-approval/budget.json +13 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-approval/decision.json +69 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-approval/manifest.json +271 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-package.json +785 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/measurement.json +37956 -0
- package/docs/evaluation/token-footprint-2026-10-17/calibration-2/summary.json +119 -0
- package/docs/evaluation/token-footprint-2026-10-17/checks-final.json +273 -0
- package/docs/evaluation/token-footprint-2026-10-17/checks.json +190 -0
- package/docs/evaluation/token-footprint-2026-10-17/client-attempts/README.md +25 -0
- package/docs/evaluation/token-footprint-2026-10-17/client-attempts/attempt-4.json +2274 -0
- package/docs/evaluation/token-footprint-2026-10-17/client-attempts/pilot-1.json +77 -0
- package/docs/evaluation/token-footprint-2026-10-17/client-attempts/pilot-2.json +81 -0
- package/docs/evaluation/token-footprint-2026-10-17/client-attempts/pilot-3.json +121 -0
- package/docs/evaluation/token-footprint-2026-10-17/current-calibration/baseline.json +30346 -0
- package/docs/evaluation/token-footprint-2026-10-17/current-calibration/measurement.json +37956 -0
- package/docs/evaluation/token-footprint-2026-10-17/current-calibration/summary.json +119 -0
- package/docs/evaluation/token-footprint-2026-10-17/current-client-projection.json +2538 -0
- package/docs/evaluation/token-footprint-2026-10-17/follow-up.md +76 -0
- package/docs/evaluation/token-footprint-2026-10-17/integrity.json +171 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-approval/README.md +36 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-approval/budget.json +13 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-approval/decision.json +69 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-approval/manifest.json +271 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-package.json +795 -0
- package/docs/evaluation/token-footprint-2026-10-17/live-proposal.json +427 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/README.md +75 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/approved-budget.json +13 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/approved-decision.json +69 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/approved-manifest.json +271 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/token-live-result.json +837 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/approved-budget.json +13 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/approved-decision.json +69 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/approved-manifest.json +271 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/token-live-result.json +985 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/approved-budget.json +13 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/approved-decision.json +69 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/approved-manifest.json +271 -0
- package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/token-live-result.json +3055 -0
- package/docs/evaluation/token-footprint-2026-10-17/measurement.json +32476 -0
- package/docs/evaluation/token-footprint-2026-10-17/prior-calibration/README.md +20 -0
- package/docs/evaluation/token-footprint-2026-10-17/prior-calibration/integrity.json +40 -0
- package/docs/evaluation/token-footprint-2026-10-17/summary.json +119 -0
- package/docs/evaluation/tool-definitions-2026-10-18/README.md +204 -0
- package/docs/evaluation/tool-definitions-2026-10-18/codex-projection/after/client-projection.json +2853 -0
- package/docs/evaluation/tool-definitions-2026-10-18/codex-projection/before/client-projection.json +2853 -0
- package/docs/evaluation/tool-definitions-2026-10-18/compare-validation.mjs +64 -0
- package/docs/evaluation/tool-definitions-2026-10-18/diff-validation.mjs +13 -0
- package/docs/evaluation/tool-definitions-2026-10-18/measure-wire.mjs +31 -0
- package/docs/evaluation/worker-system-prompt-2026-10-26/README.md +95 -0
- package/docs/evaluation/worker-system-prompt-2026-10-26/probe.mjs +155 -0
- package/docs/execution-modes.md +388 -0
- package/docs/installation.md +246 -12
- package/docs/isolation-setup.md +258 -0
- package/docs/macos-setup-design.md +2 -2
- package/docs/pi-extensions-design.md +71 -16
- package/docs/releasing.md +12 -6
- package/docs/reviews/2026-10-18-adr-0008-decision-brief.md +53 -0
- package/docs/roadmap.md +320 -9
- package/docs/session-mcp.md +5 -1
- package/docs/skills.md +23 -0
- package/docs/sprints/2026-10-15-s4-decision.md +73 -4
- package/docs/sprints/2026-10-17-token-footprint.md +130 -0
- package/docs/sprints/2026-10-18-s5-maintenance-orchestration.md +202 -0
- package/docs/sprints/2026-10-21-s6-ledger-event-bridge.md +120 -0
- package/docs/sprints/2026-10-24-s7-stabilization-live-acceptance.md +173 -0
- package/docs/sprints/2026-10-24-s8-writer-migration.md +235 -0
- package/docs/sprints/2026-10-26-s10-orchestration-reliability.md +250 -0
- package/docs/sprints/2026-10-26-s11-orchestration-gaps.md +173 -0
- package/docs/threat-model.md +37 -6
- package/docs/tool-contracts.md +91 -9
- package/package.json +17 -11
- package/scripts/isolation-acceptance.mjs +709 -0
- package/scripts/isolation-probe.cjs +213 -0
- package/skills/pi-session-implementation/SKILL.md +13 -3
- package/skills/pi-session-orchestration/SKILL.md +50 -13
- package/skills/pi-session-orchestration/references/start-errors.md +12 -0
- package/skills/pi-session-review/SKILL.md +13 -5
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
# Ledger, event bridge and controller rewake: evaluation report
|
|
2
|
+
|
|
3
|
+
Date: 2026-10-21. Base main `0922d98f0fb33d3c493dc428dfef932443bfa4fa`, package
|
|
4
|
+
0.10.0, Pi SDK 1.3.0, MCP SDK 2.3.1, Claude Code CLI 2.1.303 (VS Code extension
|
|
5
|
+
2.1.304), Codex 0.162.1, Node 26.11.1, Linux. Tracking:
|
|
6
|
+
[#104](https://github.com/plagor44-ux/pi-session-mcp/issues/104); sprint file:
|
|
7
|
+
[Sprint 6](../../sprints/2026-10-21-s6-ledger-event-bridge.md).
|
|
8
|
+
|
|
9
|
+
Companion files: [pre-registration](pre-registration.md) (fixed before any
|
|
10
|
+
comparative run, commit `569c89f`), [design](design.md), [inventory](inventory.md)
|
|
11
|
+
(source and documentation facts), [live plan](live-plan.md) (not approved) and
|
|
12
|
+
the probe evidence in [`probe/`](probe/).
|
|
13
|
+
|
|
14
|
+
Status as of 2026-10-24: this report is the evaluation as of 2026-10-21 and is
|
|
15
|
+
not rewritten. "The current procedure stays" and the recommendation not to build
|
|
16
|
+
the bridge describe the evaluation's verdict. The maintainer then accepted ADR
|
|
17
|
+
0011 items 1-3 anyway, and the completion bridge (spool delivery and a
|
|
18
|
+
setup-installed Claude Code wake hook) shipped in 0.11.0 on 2026-10-22, with
|
|
19
|
+
fixes in 0.11.1 and 0.11.2. The question channel is undecided; a file ledger and
|
|
20
|
+
a supervisor are not product features. See the
|
|
21
|
+
[Sprint 6 closure](../../sprints/2026-10-21-s6-ledger-event-bridge.md#closure-status-as-of-2026-10-24).
|
|
22
|
+
|
|
23
|
+
Each claim names its evidence level: L0 source or docs, L1 unit test, L2 host
|
|
24
|
+
event, L3 client wake with a scripted fake model, L4 real controller model.
|
|
25
|
+
Everything up to L3 is provider-free. **L4 was reached for two approved
|
|
26
|
+
pairs** (case L1, arm A and arm C, one run each per pair; see
|
|
27
|
+
[`live/`](live/README.md)).
|
|
28
|
+
|
|
29
|
+
## Verdict
|
|
30
|
+
|
|
31
|
+
**The current procedure stays.** That means the controller skill's internal
|
|
32
|
+
ledger with consume-once and the #86 cadence. **A lean event bridge from the
|
|
33
|
+
existing SDK completion, with a targeted Claude Code integration, is
|
|
34
|
+
technically viable at the client level (L3)**, and in two real-model pairs (L4)
|
|
35
|
+
the woken controller read each turn once, without polling or sleeping. It does
|
|
36
|
+
**not** pay off in controller requests or tokens for short tasks:
|
|
37
|
+
|
|
38
|
+
- requests were 7 against 8 and 8 against 8;
|
|
39
|
+
- uncached input and cost were mixed;
|
|
40
|
+
- the pre-registered product rule is **not met**.
|
|
41
|
+
|
|
42
|
+
What it does improve consistently is latency: the controller acted on a
|
|
43
|
+
finished turn after about 2 s instead of 10–21 s with polling. The evaluation
|
|
44
|
+
therefore recommended **not to build it now**. On 2026-10-21 the maintainer
|
|
45
|
+
decided otherwise, for reaction time:
|
|
46
|
+
[ADR 0011](../../adr/0011-turn-events-and-controller-wake.md) is accepted for
|
|
47
|
+
items 1–3 (implementation in
|
|
48
|
+
[#108](https://github.com/plagor44-ux/pi-session-mcp/issues/108)). The request
|
|
49
|
+
saving that the model predicts for long turns is still unmeasured.
|
|
50
|
+
|
|
51
|
+
- **File ledger:** not recommended as a product feature. It helps a human
|
|
52
|
+
overview and context continuity after compaction. It does nothing for tokens
|
|
53
|
+
or notification. A hook can keep it current without the model (L2: a
|
|
54
|
+
host-side write during real client runs); that is a development aid, not a
|
|
55
|
+
monitor.
|
|
56
|
+
- **Deterministic supervisor:** not recommended. The registry already has
|
|
57
|
+
exactly one terminal transition. Periodic reading adds latency and a second
|
|
58
|
+
trigger, and still needs the same delivery path to reach the controller.
|
|
59
|
+
- **Bounded wait (#91):** stays rejected. Rewake is a separate mechanism; this
|
|
60
|
+
evaluation does not reopen #91.
|
|
61
|
+
- **Question channel:** a structured worker question works end to end on L1
|
|
62
|
+
(real `AgentSession`) and L3 (real client). It needs a new answer path (a
|
|
63
|
+
tool), which is a public contract change: its own decision and a minor
|
|
64
|
+
release.
|
|
65
|
+
|
|
66
|
+
## Verified orchestration today
|
|
67
|
+
|
|
68
|
+
As of `0922d98`, the controller starts sessions and prompts. `pi_session_prompt`
|
|
69
|
+
returns a running turn at once, and the controller polls `pi_turn_get`
|
|
70
|
+
(10 s, then every 15–30 s), reads a terminal turn once, verifies the result
|
|
71
|
+
itself and closes the session. Nothing tells the controller that a turn ended
|
|
72
|
+
(L0). The registry's terminal transition is already the settled end of the SDK
|
|
73
|
+
run, including retries, compaction and queued follow-ups. `agent_settled` comes
|
|
74
|
+
before `prompt()` resolves, and `agent_end` can occur several times per run (L0
|
|
75
|
+
and L1, order observed on the faux provider:
|
|
76
|
+
`agent_end(willRetry=true) > auto_retry_start > … > agent_end(willRetry=false) > agent_settled > prompt resolved`).
|
|
77
|
+
Extension UI dialogs return their no-op defaults. A worker cannot ask a
|
|
78
|
+
question that waits for an answer. Separate client processes have separate
|
|
79
|
+
registries (L1 in process, and X6 with two real stdio server processes
|
|
80
|
+
driven by the MCP SDK client: the second returns `unknown_session` and an empty
|
|
81
|
+
list).
|
|
82
|
+
|
|
83
|
+
## Answers
|
|
84
|
+
|
|
85
|
+
### 4.1 Is a ledger needed?
|
|
86
|
+
|
|
87
|
+
| Information | Covered today by | Gap |
|
|
88
|
+
| --- | --- | --- |
|
|
89
|
+
| a) task state (scope, base, dependencies, acceptance) | skill ledger in the controller context; sprint documents for humans | lost from context on compaction unless re-derived; nothing machine-readable |
|
|
90
|
+
| b) last observed runtime state | `pi_turn_get` (authoritative) | none while connected; after a client or server restart all IDs are history |
|
|
91
|
+
| c) verified acceptance | controller's own checks | not recorded anywhere structured |
|
|
92
|
+
| d) event delivery and controller resume | **nothing** | the controller must poll; an idle controller is never told |
|
|
93
|
+
|
|
94
|
+
Several sessions, follow-ups and retries fit the skill's ledger as long as the
|
|
95
|
+
context holds. The real gap is d), and for a) only compaction. Several
|
|
96
|
+
independent controllers cannot share sessions at all (separate registries), so
|
|
97
|
+
a shared ledger would only list dead references. A restart or resume use case
|
|
98
|
+
is not documented (ADR 0003 trigger D not met). A snapshot would not restore Pi
|
|
99
|
+
sessions anyway.
|
|
100
|
+
|
|
101
|
+
### 4.2 Format and owner
|
|
102
|
+
|
|
103
|
+
| Option | Fit |
|
|
104
|
+
| --- | --- |
|
|
105
|
+
| Internal ledger (skill) | enough for one controller; no cost; lost on compaction |
|
|
106
|
+
| Native client task tools | not available in the evaluated Claude Code session; not assessed |
|
|
107
|
+
| `task.md` by hand | model writes it: costs model output and drifts |
|
|
108
|
+
| `run.json` + generated `task.md` | prototype: pure reducer, one locked writer, revision check, atomic rename, content-free validation, generated view (L1, 25 tests) |
|
|
109
|
+
| JSONL journal | no shown benefit over a snapshot with `appliedEventIds` |
|
|
110
|
+
| SQLite | no multi-writer or query need |
|
|
111
|
+
| OMO Boulder | unlocked `writeFileSync`, last writer wins; re-prompts the same session on idle; not a monitor (L0, summarized reads) |
|
|
112
|
+
|
|
113
|
+
Owner: the controller, through one serialized writer. The prototype's hook
|
|
114
|
+
writer is the integration route that needs no model. Pi stays authoritative for
|
|
115
|
+
runtime state; only `controller` events may accept or reject (L1).
|
|
116
|
+
|
|
117
|
+
### 4.3 Automatic status updates
|
|
118
|
+
|
|
119
|
+
| Option | Owns connection and sessions | Source of transitions | LLM per poll | Reaches a busy/idle controller | Loss, EOF, cleanup | New surface |
|
|
120
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
121
|
+
| SDK completion bridge in the owning server | the existing server | registry terminal transition, once per turn | no | via a client adapter (rewake) | `instance_ended`; running turns become unresolved | internal observer + local event spool |
|
|
122
|
+
| Controller hooks after Pi calls | client | only what the controller already read | no (hook), but still polls | no | no own state | client config |
|
|
123
|
+
| Deterministic supervisor | must be the same process, or it sees an empty registry | periodic reads | no | needs the same adapter | as bridge | timer, second trigger |
|
|
124
|
+
| Proxy on the existing connection | proxy | MCP traffic | no | only by injecting into the client | proxy lifetime = connection | protocol proxy |
|
|
125
|
+
| Bounded wait | server | registry | one blocking call | yes, inside a call | client tool timeouts | public argument; rejected in #91 |
|
|
126
|
+
| MCP notifications, subscriptions, tasks | server | registry | no | not in Claude Code: no notification starts a turn; tasks not supported; channels gated preview | — | protocol features the client lacks |
|
|
127
|
+
|
|
128
|
+
A second stdio client gets its own empty registry (L1, X6). A supervisor
|
|
129
|
+
therefore has to live in the owning server. There it is a timer around the same
|
|
130
|
+
registry. The bridge covers the same ground without polling the registry.
|
|
131
|
+
|
|
132
|
+
Polling does not disappear entirely; it moves out of the model. The
|
|
133
|
+
host-side waiter is a model-free local poller: one sleeping process per armed
|
|
134
|
+
turn, with `fs.watch` on the spool directories plus a full directory scan every
|
|
135
|
+
200 ms. In the probe the watch path delivered (16–34 ms). The 200 ms scan alone
|
|
136
|
+
was not measured. The cost is one process and a few inotify watches per waiting
|
|
137
|
+
turn, and no model request.
|
|
138
|
+
|
|
139
|
+
### 4.4 Controller resume without model polling (Claude Code 2.1.303, L2/L3)
|
|
140
|
+
|
|
141
|
+
Probe on a loopback fake Messages API with a dummy key, inside a fresh user and
|
|
142
|
+
network namespace, four attempts preserved ([`probe/`](probe/)). Attempt 1 had
|
|
143
|
+
harness defects (wake parsing, missing waiter signal log). Attempts 2 and 3
|
|
144
|
+
produced the same results on the frozen review head. Attempt 4 ran after the
|
|
145
|
+
review fixes: same outcomes, and in S8 the close-generated `turn_terminal` now
|
|
146
|
+
comes before `instance_ended`.
|
|
147
|
+
|
|
148
|
+
| Scenario (attempt 3) | Result |
|
|
149
|
+
| --- | --- |
|
|
150
|
+
| S1 completion, idle stream-json session | one wake (own model request) **16 ms** after the bridge event; one terminal read; 0 running polls (by construction: the scripted model never polls) |
|
|
151
|
+
| S2 two concurrent turns | two wakes in completion order, each matched to its turn (16, 17 ms); no missing or duplicate wake |
|
|
152
|
+
| S3 controller question round trip | question wake (17 ms) → `eval_question_get` → `eval_question_answer` → the scripted worker's waiting ask continued → terminal wake (34 ms) → one read; the answer digest reached the worker's final text. The worker is the scripted adapter; continuation of a real Pi tool call is L1 (faux provider) only |
|
|
153
|
+
| S4 control with plain `async: true` | hook exited 2, **no wake** |
|
|
154
|
+
| S5 one-shot `-p "<prompt>"` | **pre-registered expectation not met** (attempts 2 and 3): the client held the next model request until the hook ended (8.4 s) and delivered the wake text with the tool result, then exited; no leftover |
|
|
155
|
+
| S6 hook timeout 4 s, worker 15 s | client killed the waiter at 4 s (exit 143); the completion 11 s later woke nobody; no leftover |
|
|
156
|
+
| S8 stream-json, stdin closed after one message | client exited after about 0.4 s; the server closed the running turn as aborted; the waiter claimed that close-generated event and exited 2 before the client exited, but no model request followed (no wake at L3); no leftover |
|
|
157
|
+
| X6 two server processes, same aliases | no shared registry |
|
|
158
|
+
|
|
159
|
+
Every run: no leftover hook or server process, temporary root removed, no path
|
|
160
|
+
or canary in any output. In the Claude scenarios the client ended the server
|
|
161
|
+
by signal (`instance_ended` = `server_exit`).
|
|
162
|
+
|
|
163
|
+
The four kinds of evidence stay separate. A spool file is a host-side record
|
|
164
|
+
(L1). A hook start or exit in the stream is L2. A new model request at the fake
|
|
165
|
+
is L3. A real model choosing the right call is L4. That was tested twice
|
|
166
|
+
for completion (arm C of both live pairs). It was not tested for questions.
|
|
167
|
+
|
|
168
|
+
Interactive TUI and the VS Code extension were not tested. The extension uses
|
|
169
|
+
the same stream-json input, which S1–S3 exercised, but that is an inference.
|
|
170
|
+
Codex has no documented wake path (L0).
|
|
171
|
+
|
|
172
|
+
### 4.5 Earlier cost measurement
|
|
173
|
+
|
|
174
|
+
#91 stands: 1–3 running polls per turn on the Codex route, no consistent uncached
|
|
175
|
+
difference. That A/B did not compare push, rewake, a supervisor or a ledger.
|
|
176
|
+
The rewake makes running polls unnecessary for delivery: in S1–S3 the turn
|
|
177
|
+
end and the question reached an idle client without any poll. Those runs show
|
|
178
|
+
0 polls only because the scripted model never polls. Whether a real model stops
|
|
179
|
+
polling is the L4 question. Each event costs one wake request. A model-based expectation from the skill cadence (not a
|
|
180
|
+
measurement): for a turn of `T` seconds the skill gives `ceil((T − 10) / c)`
|
|
181
|
+
running polls for `T > 10 s`, with `c` = 15–30 s. That is 1–3 for the M1 cases
|
|
182
|
+
(about 50–100 s), so C saves at most about two model requests per turn there. A
|
|
183
|
+
10-minute turn would need about 20–40 polls against one wake. The benefit grows
|
|
184
|
+
with turn length and with questions; for short turns it is close to neutral.
|
|
185
|
+
This expectation was the reason for the L4 pairs. On the short case they confirmed it: no request saving (see [`live/`](live/README.md)).
|
|
186
|
+
|
|
187
|
+
### 4.6 Completion and questions
|
|
188
|
+
|
|
189
|
+
**A. Completion.** The bridge emits one content-free `turn_terminal` per turn from
|
|
190
|
+
the registry read model (L1, 22 bridge tests: concurrent turns, follow-ups,
|
|
191
|
+
duplicates, late settlements, `abort_timeout` with a later outcome, close,
|
|
192
|
+
shutdown, many activity callbacks with no early event). `agent_settled` is not
|
|
193
|
+
used as a second source. The independent review found that the first version
|
|
194
|
+
filled a `close` race from the adapter outcome and could report `completed`
|
|
195
|
+
for a turn the registry had aborted after `abort_timeout`. The bridge now
|
|
196
|
+
reports only read-model states, or `turn_unobserved` when close removed the
|
|
197
|
+
turn first (see *Independent review*). A side check against the real
|
|
198
|
+
`SdkPiSessionAdapter` (scratch test, not committed) found that an abort during a
|
|
199
|
+
running tool ends the SDK run with `stopReason: "error"`, yet the public turn is
|
|
200
|
+
`aborted` in 60 of 60 runs per variant. The abort path completes first by
|
|
201
|
+
microtask order, and the later `failed` outcome is ignored. Correct today, but
|
|
202
|
+
it depends on that order.
|
|
203
|
+
|
|
204
|
+
**B. Questions.** Human questions: MCP elicitation reaches the user or an
|
|
205
|
+
`Elicitation` hook, never the model. Under protocol 2026-07-28 it is only
|
|
206
|
+
possible inside a pending `tools/call`, so a question that arises long after
|
|
207
|
+
`pi_session_prompt` returned cannot be sent (L0). Controller questions: an
|
|
208
|
+
explicit worker tool (`ask_controller`, evaluation only) on a separate broker
|
|
209
|
+
works. On a real `AgentSession` (faux provider, L1), `prompt()` stays pending
|
|
210
|
+
and `isStreaming` stays true while the tool waits. The answer reaches exactly
|
|
211
|
+
the waiting call. Abort fires the tool's signal and cancels the question. A
|
|
212
|
+
prompt on the same session is rejected with `session_running`, so it cannot
|
|
213
|
+
deadlock as an answer path. The broker tests cover concurrent questions, wrong
|
|
214
|
+
instance, duplicates, late answers, deadlines, limits and content-free events.
|
|
215
|
+
A host UI context (`bindExtensions({ uiContext })`) would serve only extension
|
|
216
|
+
dialogs, needs about 30 members and gives the worker model no way to ask. The
|
|
217
|
+
explicit tool is smaller. Normal assistant questions in result text stay plain
|
|
218
|
+
text; no text is interpreted as a signal.
|
|
219
|
+
|
|
220
|
+
**C. Real resume.** Bridge event → correlation → spool → `asyncRewake` waiter
|
|
221
|
+
claims the event exactly once → exit 2 → client starts a new model request
|
|
222
|
+
(L3) → `eval_question_answer` → broker → waiting tool call continues → final
|
|
223
|
+
wake → one terminal read (S3). The real-model edge is untested.
|
|
224
|
+
|
|
225
|
+
A waiter exists only while a hook armed it. It is armed after
|
|
226
|
+
`pi_session_prompt`, after `eval_question_answer`, and (after the review) after
|
|
227
|
+
a `pi_turn_get` that shows a running turn. These gaps remain. The client kills
|
|
228
|
+
the waiter at its hook `timeout` (S6), so the timeout must cover the task
|
|
229
|
+
budget. A failed MCP call is likely routed to `PostToolUseFailure`, which is not
|
|
230
|
+
armed or tested. A controller that ends its turn without an armed waiter is
|
|
231
|
+
never woken.
|
|
232
|
+
|
|
233
|
+
## Comparison matrix
|
|
234
|
+
|
|
235
|
+
| | A current | B hook ledger | C bridge + rewake | D supervisor |
|
|
236
|
+
| --- | --- | --- | --- | --- |
|
|
237
|
+
| Overview and context continuity | context only | `run.json`/`task.md` survive compaction | same as A, plus B if wanted | none |
|
|
238
|
+
| LLM in status checks | every poll | every poll | none for running turns | none |
|
|
239
|
+
| Real notification and resume | none | none | client wake L3 (stream-json; `-p` blocks); real model L4 in two pairs (completion) | needs C's delivery |
|
|
240
|
+
| State and connection owner | server | server; ledger by hook | server; spool per instance | must be the same server |
|
|
241
|
+
| Restart and cleanup | IDs become history | ledger marks unresolved | `instance_ended`; waiter ends at budget, parent loss or claim loss | as C |
|
|
242
|
+
| Client dependency | none | Claude Code hooks (Codex has hooks too) | Claude Code `asyncRewake`; not Codex | as C |
|
|
243
|
+
| Implementation and maintenance | none | small | observer, spool, setup-managed hook, waiter | timer plus C |
|
|
244
|
+
| Decision or contract needed | none | none (dev aid) | ADR; spool is a new local surface; question tool = minor release | ADR |
|
|
245
|
+
| Evidence | M1 A/B (Codex); two L4 runs (Claude) | L1, L2 | L1, L3; two L4 pairs | L1 partial; detection-only arm skipped |
|
|
246
|
+
|
|
247
|
+
## Prototype
|
|
248
|
+
|
|
249
|
+
`eval/bridge/` (about 3,000 lines) with 91 provider-free tests in five files.
|
|
250
|
+
Not in the runtime path or the npm package. No `src/` change.
|
|
251
|
+
|
|
252
|
+
- `ledger.ts`, `ledger-store.ts`, `ledger-cli.ts`: reducer, locked store,
|
|
253
|
+
generated `task.md`, CLI.
|
|
254
|
+
- `bridge.ts`: `EventBridge`, `SpoolSink`, `BridgedRegistry` (subclass of the
|
|
255
|
+
real registry).
|
|
256
|
+
- `questions.ts`, `ask-tool.ts`: broker and the `ask_controller` tool.
|
|
257
|
+
- `scripted-adapter.ts`: deterministic worker scripts.
|
|
258
|
+
- `server-main.ts`: evaluation stdio server (real `createServer`, plus
|
|
259
|
+
`eval_question_get` and `eval_question_answer`).
|
|
260
|
+
- `hook-waiter.ts`: `asyncRewake` waiter with claim files, budget and
|
|
261
|
+
parent-loss exit.
|
|
262
|
+
- `hook-ledger.ts`: PostToolUse ledger projection, storing result hashes only.
|
|
263
|
+
- `claude-probe.ts`, `cli.ts`: the L3 probe.
|
|
264
|
+
- `live/`: the approval-bound runner for the L4 pair, with a provider-free dry
|
|
265
|
+
run.
|
|
266
|
+
|
|
267
|
+
Tests: 163 in `bridge-ledger`, `bridge-ledger-lock`, `bridge-events`,
|
|
268
|
+
`bridge-sdk-faux`, `bridge-hooks` and `bridge-live`.
|
|
269
|
+
|
|
270
|
+
Ledger limits that are deliberate:
|
|
271
|
+
|
|
272
|
+
- `abort_unconfirmed` is not sticky. After `abort_timeout` the turn may still
|
|
273
|
+
finish normally, so a later `completed` from the read model is recorded.
|
|
274
|
+
- `decision` after `instance_ended` is allowed only for a result that was
|
|
275
|
+
consumed (hash recorded) while connected.
|
|
276
|
+
- A lock left by a killed writer is never broken automatically. The ledger hook
|
|
277
|
+
waits at most 1 s for it and skips. `run.json` and `task.md` are separate
|
|
278
|
+
renames, so a crash between them leaves a stale view until the next write.
|
|
279
|
+
|
|
280
|
+
## Independent review
|
|
281
|
+
|
|
282
|
+
Two independent reviews of the frozen head `1289137`:
|
|
283
|
+
|
|
284
|
+
- a Claude reviewer (Opus 5.5) with test runs and reproductions;
|
|
285
|
+
- a read-only Pi worker on `review-grok` (xAI Grok 4.7, another model family).
|
|
286
|
+
It ran 15 minutes; the controller needed 6 running polls and one terminal
|
|
287
|
+
read for that one turn. That is an anecdote for arm A, not a measurement.
|
|
288
|
+
|
|
289
|
+
Both found the same defect: after `abort_timeout`, `close` could report
|
|
290
|
+
`completed` for a turn the registry had aborted, a hidden second status source.
|
|
291
|
+
It is fixed by `turn_unobserved` and has a regression test. Confirmed and
|
|
292
|
+
fixed:
|
|
293
|
+
|
|
294
|
+
- `instance_ended` was emitted before the close terminals at shutdown.
|
|
295
|
+
- Re-arm gaps: an answer error carried no IDs, and nothing re-armed after a
|
|
296
|
+
running `pi_turn_get`.
|
|
297
|
+
- A claimed but undelivered wake stayed claimed when the client killed the
|
|
298
|
+
hook.
|
|
299
|
+
- A lock was left behind when the pid write failed.
|
|
300
|
+
- Spool write failures were uncounted.
|
|
301
|
+
- A non-`EEXIST` claim error was unhandled.
|
|
302
|
+
- An empty budget was read as zero.
|
|
303
|
+
- A question was not re-checked before its wake.
|
|
304
|
+
|
|
305
|
+
Documentation was corrected in these places:
|
|
306
|
+
|
|
307
|
+
- the S5 expectation is stated as not met;
|
|
308
|
+
- S8 is described correctly;
|
|
309
|
+
- the 200 ms local scan is disclosed;
|
|
310
|
+
- "0 polls" is stated as true by construction;
|
|
311
|
+
- the verdict is made conditional per the pre-registration;
|
|
312
|
+
- the evidence levels of S3 and the ledger hook are fixed.
|
|
313
|
+
|
|
314
|
+
Open and accepted as limits: overlapping waiters of one turn can both send a
|
|
315
|
+
budget wake; a hook killed between claim and exit can still lose a terminal
|
|
316
|
+
wake that a sibling waiter already gave up on; `PostToolUseFailure` routing is
|
|
317
|
+
untested.
|
|
318
|
+
|
|
319
|
+
## Not measured, not tested, unknown
|
|
320
|
+
|
|
321
|
+
L4 beyond two pairs (completion only, short case L1, one client version and
|
|
322
|
+
model); long worker turns; a
|
|
323
|
+
question round trip with a real model; worker usage; interactive
|
|
324
|
+
TUI and VS Code wake; Codex; a supervisor-only detection arm (S7 skipped: the
|
|
325
|
+
registry subclass has no supported way to switch off its event trigger);
|
|
326
|
+
`PostToolUseFailure` projection into the ledger; a worker finishing before its
|
|
327
|
+
waiter starts (handled by the persistent spool, not exercised in a client run);
|
|
328
|
+
why S5 (positional prompt) blocks while S8 (stream-json, stdin closed) exits.
|
|
329
|
+
|
|
330
|
+
## Strongest objection, critical assumption, simpler alternative, next test
|
|
331
|
+
|
|
332
|
+
- **Strongest objection:** polling already costs only 1–3 calls per turn on the
|
|
333
|
+
measured route. The rewake works only in Claude Code. And it needs a new local
|
|
334
|
+
surface (event spool), an installed client hook and, for questions, a new
|
|
335
|
+
public tool: a lot of surface for a saving that may be small.
|
|
336
|
+
- **Critical assumption:** a real controller model, once woken, reads the turn
|
|
337
|
+
once and does not poll anyway. Hook budgets also have to fit long tasks, since
|
|
338
|
+
the client kills the waiter at its timeout (S6).
|
|
339
|
+
- **Simpler alternative:** keep the skill cadence and add one rule: for long
|
|
340
|
+
tasks, poll at the long end of the cadence. No mechanism, no contract.
|
|
341
|
+
- **Critical assumption, checked twice:** it held in both live C runs (one
|
|
342
|
+
wake, one read, no poll, no sleep).
|
|
343
|
+
- **Smallest next test, only if revisited:** one pair with a long worker turn
|
|
344
|
+
(several minutes), where the model predicts a request saving, rather than the
|
|
345
|
+
full short-task matrix.
|
|
346
|
+
|
|
347
|
+
## Reproduction
|
|
348
|
+
|
|
349
|
+
```sh
|
|
350
|
+
npm ci
|
|
351
|
+
npx tsc -p tsconfig.bridge.json
|
|
352
|
+
npx vitest run test/bridge-ledger.test.ts test/bridge-events.test.ts test/bridge-sdk-faux.test.ts test/bridge-hooks.test.ts
|
|
353
|
+
# L3 probe: Linux with unprivileged user namespaces, `unshare` and `ip`;
|
|
354
|
+
# Claude Code exactly 2.1.303 unless --client-version is given.
|
|
355
|
+
node .bridge-eval/eval/bridge/cli.js probe --out <empty directory>
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
The probe runs inside `unshare -rn` with only loopback, a dummy API key and a
|
|
359
|
+
throwaway client home. It writes only allowlisted fields and refuses outputs
|
|
360
|
+
containing its temporary root or synthetic canaries.
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Ledger and event-bridge prototype: design
|
|
2
|
+
|
|
3
|
+
Date: 2026-10-21. Base main `0922d98f0fb33d3c493dc428dfef932443bfa4fa`
|
|
4
|
+
(merge of PR #103), package 0.10.0, Pi SDK 1.3.0, MCP SDK 2.3.1.
|
|
5
|
+
|
|
6
|
+
This is an evaluation prototype under `eval/bridge/`. It is not on the runtime
|
|
7
|
+
path, changes no public MCP tool, field, state or error code, and is not
|
|
8
|
+
shipped in the npm package (`files` does not list `eval/`). Every field below is
|
|
9
|
+
a **local prototype field**. None of them exists in the public Pi Session MCP
|
|
10
|
+
contract, and nothing here proposes them as public fields.
|
|
11
|
+
|
|
12
|
+
## Sources of truth
|
|
13
|
+
|
|
14
|
+
- **Runtime state** of a turn comes only from the `SessionRegistry` read model
|
|
15
|
+
(`getTurn`). Its terminal transition is the settlement of the adapter's
|
|
16
|
+
`prompt()` promise (`completeTurn`/`failTurn`), plus abort and close. In Pi SDK
|
|
17
|
+
1.3.0 `AgentSession.prompt()` resolves only after automatic retries,
|
|
18
|
+
compaction-and-continue, queued follow-ups and the `agent_settled` emission,
|
|
19
|
+
so the existing terminal transition already is the settled end. The bridge
|
|
20
|
+
never derives a terminal state from `agent_end`, `message_end`, activity or
|
|
21
|
+
`agent_settled`.
|
|
22
|
+
- **Task state** (pending, running, blocked, awaiting review, accepted,
|
|
23
|
+
rejected) is the controller's. Only an event with source `controller` can
|
|
24
|
+
accept or reject a task. A worker or a hook cannot.
|
|
25
|
+
- The ledger is a projection of observed runtime events plus the controller's
|
|
26
|
+
task decisions. It is never read back as runtime truth: after a context change
|
|
27
|
+
it gives an overview only, and any further action needs a fresh read over a
|
|
28
|
+
still-valid connection.
|
|
29
|
+
|
|
30
|
+
## Ledger (`eval/bridge/ledger.ts`)
|
|
31
|
+
|
|
32
|
+
`run.json`, schema version 1, `local: true`.
|
|
33
|
+
|
|
34
|
+
| Object | Fields |
|
|
35
|
+
| --- | --- |
|
|
36
|
+
| `RunLedger` | `schemaVersion`, `local`, `runId`, `revision`, `createdAt`, `updatedAt`, `controllerLabel`, `instances[]`, `tasks[]`, `questions[]`, `appliedEventIds[]` (bounded, newest 1,000) |
|
|
37
|
+
| `LedgerInstance` | `instanceId` (local label bound to one MCP connection lifetime), `connectedAt`, `endedAt?`, `endReason?` (`closed`, `eof`, `server_exit`, `lost`) |
|
|
38
|
+
| `LedgerTask` | `taskId`, `label`, `baseCommit`, `dependsOn[]`, `changeScope[]` (relative paths), `work`, `attempts[]`, `decision?` (`outcome`, `at`, `evidence[]`) |
|
|
39
|
+
| `LedgerAttempt` | `attemptId`, `instanceId`, `sessionId`, `workspaceAlias`, `profileAlias`, `startedAt`, `deadlineAt`, `turns[]`, `cleanup` (`open`, `closed`, `close_failed`, `unknown`) |
|
|
40
|
+
| `LedgerTurn` | `turnId`, `kind` (`initial`, `follow_up`), `runtime`, `startedAt`, `observedAt`, `lastActivityAt?`, `terminalAt?`, `terminalVia?` (`bridge`, `poll`, `close`), `result?` (`consumedAt`, `textSha256`, `textBytes`, `truncated`) |
|
|
41
|
+
| `LedgerQuestion` | `requestId`, `instanceId`, `sessionId`, `turnId`, `attemptId`, `recipient` (`controller`, `human`), `kind` (`input`, `select`, `confirm`), `openedAt`, `deadlineAt`, `state` (`open`, `answered`, `expired`, `cancelled`, `refused`), `resolvedAt?` |
|
|
42
|
+
|
|
43
|
+
`work` is `pending`, `running`, `blocked`, `awaiting_review`, `accepted` or
|
|
44
|
+
`rejected`. `runtime` is `running`, `awaiting_input`, `completed`, `failed`,
|
|
45
|
+
`aborted`, `abort_unconfirmed` or `unresolved`. `awaiting_input` is not
|
|
46
|
+
terminal. `abort_unconfirmed` records an `abort_timeout`; it is not `aborted`.
|
|
47
|
+
|
|
48
|
+
No question or answer text, prompt, `assistantText`, thinking, tool argument or
|
|
49
|
+
result, transcript, secret or absolute path is stored. A consumed result is
|
|
50
|
+
recorded as its SHA-256, byte length and `truncated` flag only.
|
|
51
|
+
|
|
52
|
+
### Events and rules
|
|
53
|
+
|
|
54
|
+
Each event has `eventId`, `at`, `source` (`controller`, `bridge`, `hook`,
|
|
55
|
+
`worker`) and one `type`:
|
|
56
|
+
|
|
57
|
+
`task_declared`, `instance_connected`, `instance_ended`, `attempt_started`,
|
|
58
|
+
`turn_started`, `turn_observed`, `turn_terminal`, `abort_unconfirmed`,
|
|
59
|
+
`result_consumed`, `question_opened`, `question_resolved`, `session_closed`,
|
|
60
|
+
`decision`.
|
|
61
|
+
|
|
62
|
+
The reducer is pure: `apply(ledger, event)` returns the next ledger and one
|
|
63
|
+
outcome, `applied`, `duplicate`, `ignored_stale` or `rejected` with a code.
|
|
64
|
+
|
|
65
|
+
1. A known `eventId` is a `duplicate` and changes nothing.
|
|
66
|
+
2. Terminal runtime states are sticky. The same terminal state again is
|
|
67
|
+
`ignored_stale`; a different one is `rejected` (`terminal_conflict`). A
|
|
68
|
+
running observation of a terminal turn is `ignored_stale`.
|
|
69
|
+
3. `instance_ended` turns every non-terminal turn of that instance into
|
|
70
|
+
`unresolved`, cancels its open questions, sets open cleanup to `unknown` and
|
|
71
|
+
moves running tasks to `blocked`. Later events for an ended instance are
|
|
72
|
+
`rejected` (`instance_ended`). An old ID seen again after a restart is not a
|
|
73
|
+
resume.
|
|
74
|
+
4. `attempt_started` is allowed only for `pending` or `blocked` tasks; each retry
|
|
75
|
+
is a new attempt and earlier attempts stay unchanged. Nothing retries
|
|
76
|
+
automatically.
|
|
77
|
+
5. A completed terminal moves the task to `awaiting_review`; failed, aborted,
|
|
78
|
+
`abort_unconfirmed` and `unresolved` move it to `blocked`. `question_opened`
|
|
79
|
+
sets the turn to `awaiting_input`; its resolution sets it back to `running`.
|
|
80
|
+
6. `decision` needs source `controller`, `work = awaiting_review`, and a latest
|
|
81
|
+
turn that is `completed` with a consumed result. Otherwise `rejected`
|
|
82
|
+
(`not_controller`, `not_reviewable`, `result_not_consumed`).
|
|
83
|
+
7. `session_closed` is `rejected` (`result_not_consumed`) while a completed turn
|
|
84
|
+
of that session has not been consumed, so cleanup cannot drop a result first.
|
|
85
|
+
|
|
86
|
+
### Validation and projection
|
|
87
|
+
|
|
88
|
+
`validateLedger` walks the whole object against a key allowlist and rejects
|
|
89
|
+
strings longer than 200 characters, line breaks, absolute or home-relative
|
|
90
|
+
paths, `..` segments and unknown keys. `renderTaskMarkdown` produces `task.md`
|
|
91
|
+
deterministically from the same ledger, marked as generated with its revision.
|
|
92
|
+
|
|
93
|
+
### Store (`eval/bridge/ledger-store.ts`)
|
|
94
|
+
|
|
95
|
+
One directory holds `run.json`, `task.md` and `run.json.lock`. Every mutation is
|
|
96
|
+
serialized: take the lock with exclusive create (bounded retry, then
|
|
97
|
+
`ledger_locked`), read, reduce, validate, write a temporary file, fsync, rename,
|
|
98
|
+
render `task.md` the same way, release. `expectedRevision` turns a stale
|
|
99
|
+
read-modify-write into `revision_conflict`. Atomic rename alone would not
|
|
100
|
+
prevent lost updates; the lock does. A stale lock is never broken automatically.
|
|
101
|
+
|
|
102
|
+
## Event bridge (`eval/bridge/bridge.ts`)
|
|
103
|
+
|
|
104
|
+
`BridgedRegistry` extends `SessionRegistry` without changing it. It wraps the
|
|
105
|
+
adapter so that every settlement of a handle's `prompt()` or `abort()` schedules
|
|
106
|
+
a reconciliation after the registry's own handlers have run. Reconciliation
|
|
107
|
+
reads `getTurn` for each tracked running turn and emits `turn_terminal` exactly
|
|
108
|
+
once per `(instanceId, sessionId, turnId)` when the read model is terminal.
|
|
109
|
+
`close` captures the running turn first and emits it as `aborted` via `close`,
|
|
110
|
+
because close removes turn data. `shutdown` emits `instance_ended`.
|
|
111
|
+
|
|
112
|
+
`close` can delete turn data before a scheduled reconciliation reads it. The
|
|
113
|
+
bridge never fills that gap from adapter outcomes. If no settlement at all was
|
|
114
|
+
seen for the prompt, close was the only remaining terminal path, so the turn is
|
|
115
|
+
reported as `aborted` via `close`. Otherwise the bridge emits `turn_unobserved`:
|
|
116
|
+
close removed the turn before its terminal state could be read. (Amended after
|
|
117
|
+
the independent review: the first version reported the adapter outcome here and
|
|
118
|
+
could contradict the registry after an `abort_timeout`.)
|
|
119
|
+
|
|
120
|
+
Bridge events contain only IDs, states, timestamps and codes. Sinks: an in-memory
|
|
121
|
+
subscriber and a spool directory writer (one file per event, written atomically,
|
|
122
|
+
mode 0600, directory 0700).
|
|
123
|
+
|
|
124
|
+
## Structured questions (`eval/bridge/questions.ts`)
|
|
125
|
+
|
|
126
|
+
`QuestionBroker` correlates a question to instance, session, turn and attempt,
|
|
127
|
+
with a fresh `requestId`, a recipient, a kind with a validatable answer shape
|
|
128
|
+
(`input` with a byte limit, `select` from fixed options, `confirm` boolean), a
|
|
129
|
+
deadline, and at most one open question per session and four per instance.
|
|
130
|
+
`answer` returns `accepted`, `unknown_request`, `wrong_instance`,
|
|
131
|
+
`already_resolved`, `expired` or `invalid_answer`. Abort, close, terminal
|
|
132
|
+
transition and deadline resolve a waiting question exactly once. The question
|
|
133
|
+
text lives in memory only and is handed out by `get`; it is never persisted.
|
|
134
|
+
An answer is plain data returned to the waiting tool call. It cannot change the
|
|
135
|
+
session's profile, tools or workspace.
|
|
136
|
+
|
|
137
|
+
The worker side is an explicit tool, `ask_controller`, proposed only for
|
|
138
|
+
evaluation. It does not exist in the product. It is a Pi custom tool whose
|
|
139
|
+
`execute` awaits the broker and honours the run's abort signal (the SDK does not
|
|
140
|
+
race it). A prompt on the same session is not an answer path: the session stays
|
|
141
|
+
`running` while the tool waits, so `pi_session_prompt` returns
|
|
142
|
+
`session_running`. Answers travel only through the broker.
|
|
143
|
+
|
|
144
|
+
## Host adapter
|
|
145
|
+
|
|
146
|
+
The asyncRewake hook (`eval/bridge/hook-waiter.ts`) starts after
|
|
147
|
+
`pi_session_prompt` or after an answer, waits for the next spool event of that
|
|
148
|
+
turn, and exits 2 with a short, content-free wake message, or exits at its own
|
|
149
|
+
budget. The PostToolUse ledger hook (`eval/bridge/hook-ledger.ts`) projects
|
|
150
|
+
Pi tool results into `run.json` without an LLM, storing only hashes of results.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Inventory: what exists today (evidence level L0)
|
|
2
|
+
|
|
3
|
+
Read on 2026-10-21 at main `0922d98`, Pi SDK 1.3.0 (installed packages and their
|
|
4
|
+
`docs/`), MCP SDK 2.3.1, Claude Code CLI 2.1.303 (VS Code extension 2.1.304),
|
|
5
|
+
Codex 0.162.1. Line references are to that source.
|
|
6
|
+
|
|
7
|
+
## Pi Session MCP
|
|
8
|
+
|
|
9
|
+
- **One terminal transition per turn.** `SessionRegistry.completeTurn` and
|
|
10
|
+
`failTurn` (`src/session-registry.ts`) set `terminal` once; later calls return
|
|
11
|
+
early. They run when the adapter's `prompt()` promise settles, when an abort
|
|
12
|
+
settles, and in `close()`, which marks a running turn `aborted` and then
|
|
13
|
+
deletes all turn data of the session. Nothing outside the registry is told
|
|
14
|
+
about the transition: there is no listener, no notification and no wait.
|
|
15
|
+
- **Answer source.** `SdkHandle.prompt` (`src/sdk-pi-adapter.ts`) subscribes to
|
|
16
|
+
SDK events only for activity stamps and to remember the last assistant
|
|
17
|
+
`message_end`. The outcome comes from `session.prompt()` settling.
|
|
18
|
+
- **Extension UI.** Extensions are bound with `bindExtensions({ mode: "print",
|
|
19
|
+
onError })` and no `uiContext`, so the SDK's no-op UI applies:
|
|
20
|
+
`select`/`input`/`editor` return `undefined`, `confirm` returns `false`,
|
|
21
|
+
`hasUI` is false. `source: "rpc"` on `prompt()` labels input for extension
|
|
22
|
+
hooks; it creates no RPC transport and no UI bridge.
|
|
23
|
+
- **MCP surface.** The server declares `capabilities: { tools: {} }` only; eight
|
|
24
|
+
tools; no notifications, resources, elicitation or tasks.
|
|
25
|
+
- **Isolation between connections.** Each client process starts its own server
|
|
26
|
+
process with its own in-memory registry (skill, *Limits to remember*).
|
|
27
|
+
- **Retention.** At most 20 turns per session; close removes turn data; closed
|
|
28
|
+
tombstones carry no turn data.
|
|
29
|
+
|
|
30
|
+
## Pi SDK 1.3.0
|
|
31
|
+
|
|
32
|
+
- `AgentSession.prompt()` resolves after the whole run: automatic retries with
|
|
33
|
+
backoff (default on, 3 retries, 2 s base), threshold or overflow compaction
|
|
34
|
+
and continue, queued steering and follow-up messages, extension
|
|
35
|
+
`agent_before_settle` continuation, and the `agent_settled` emission. Provider
|
|
36
|
+
errors do not reject; the run ends with an assistant message whose
|
|
37
|
+
`stopReason` is `error`.
|
|
38
|
+
- `agent_end` can occur several times per `prompt()` (retry, compaction,
|
|
39
|
+
follow-up). It carries `willRetry` for automatic retry only.
|
|
40
|
+
- `agent_settled { aborted }` is emitted exactly once per started run, also after
|
|
41
|
+
an error or abort, before `prompt()` resolves. `aborted` reflects only an
|
|
42
|
+
`abort()` request.
|
|
43
|
+
- Consequence: the registry's existing terminal transition already is the
|
|
44
|
+
settled end. Listening to `agent_settled` as well would be a second source for
|
|
45
|
+
the same fact. `agent_end` and `message_end` are not completion signals.
|
|
46
|
+
- `bindExtensions({ uiContext, mode, ... })` accepts a host UI. The
|
|
47
|
+
`ExtensionUIContext` interface has about 30 required members (dialogs,
|
|
48
|
+
widgets, theme, editor factories); `select`, `confirm` and `input` accept
|
|
49
|
+
`{ signal, timeout }`, `editor` does not.
|
|
50
|
+
- Custom tools (`customTools`, `defineTool`, root exports) get the run's abort
|
|
51
|
+
signal in `execute`. The loop does not race it: a tool that ignores the signal
|
|
52
|
+
blocks the run and `abort()`.
|
|
53
|
+
- RPC extension UI (`extension_ui_request`/`extension_ui_response` with a UUID
|
|
54
|
+
`id`, agent-side timeout that resolves to the default, unknown IDs ignored) is
|
|
55
|
+
part of `runRpcMode`, which owns process stdio. An embedder gets only the
|
|
56
|
+
types, not the transport.
|
|
57
|
+
|
|
58
|
+
## Clients
|
|
59
|
+
|
|
60
|
+
- **Claude Code hooks** ([hooks](https://code.claude.com/docs/en/hooks)): `async:
|
|
61
|
+
true` output arrives on the next turn; an idle session waits for the next user
|
|
62
|
+
interaction. Exception: an `asyncRewake` hook that exits 2 wakes Claude even
|
|
63
|
+
when idle; its stderr (or stdout) is shown as a system reminder. `timeout` is
|
|
64
|
+
enforced on `asyncRewake` hooks. In `claude -p`, async hooks still running at
|
|
65
|
+
teardown are cancelled. `--bare` skips hooks.
|
|
66
|
+
- **Claude Code MCP** ([mcp](https://code.claude.com/docs/en/mcp)): elicitation
|
|
67
|
+
(form and URL) is shown to the user or answered by an `Elicitation` hook; it
|
|
68
|
+
does not reach the model. List-changed and progress notifications do not
|
|
69
|
+
start a turn. Channels (`notifications/claude/channel`) push into a session
|
|
70
|
+
but are a gated research preview (`--channels`, development servers need
|
|
71
|
+
`--dangerously-load-development-channels`, ignored with `-p`; protocol
|
|
72
|
+
2026-07-28 servers cannot deliver channel messages).
|
|
73
|
+
- **MCP specification** 2026-07-28: server-to-client requests use the
|
|
74
|
+
multi-round-trip pattern only, as an `InputRequiredResult` of `tools/call`,
|
|
75
|
+
`prompts/get` or `resources/read`. An unsolicited elicitation is not possible.
|
|
76
|
+
Tasks became the `io.modelcontextprotocol/tasks` extension. MCP TypeScript SDK
|
|
77
|
+
2.3.1 implements elicitation in both protocol eras but has no task runtime.
|
|
78
|
+
- **Other wake paths** documented by Claude Code: cross-session messaging (an
|
|
79
|
+
inbox socket exported to hooks and Bash; an idle receiver starts a turn),
|
|
80
|
+
background Bash and Monitor output, background subagent completion,
|
|
81
|
+
`ScheduleWakeup`. None of them was tested here.
|
|
82
|
+
- **Codex 0.162.1**: `notify` is outbound only; a finished background hook does
|
|
83
|
+
not start a turn. No documented external wake.
|
|
84
|
+
- **Native task tools.** The Claude Code session that ran this evaluation offered
|
|
85
|
+
no task-list tool, so native task management could not be assessed on it.
|
|
86
|
+
|
|
87
|
+
## Controller skill and existing evidence
|
|
88
|
+
|
|
89
|
+
- The skill already requires an internal ledger row per task (alias, profile,
|
|
90
|
+
session, turn, start, budget, status, terminal text) and consume-once.
|
|
91
|
+
- #91 rejected a bounded wait after the M1 A/B: 1–3 running polls per turn,
|
|
92
|
+
quality kept, no consistent uncached difference. That A/B compared skill
|
|
93
|
+
guidance with the older skill; it did not test push, rewake, a supervisor or a
|
|
94
|
+
file ledger.
|
|
95
|
+
- #89 q4 (cumulative controller input with a Claude Code controller) is still
|
|
96
|
+
unmeasured.
|
|
97
|
+
|
|
98
|
+
## OMO Boulder (oh-my-openagent, branch `dev`, head `b3ce568`)
|
|
99
|
+
|
|
100
|
+
Read through a summarizing fetcher, not byte-verified.
|
|
101
|
+
|
|
102
|
+
- `.omo/boulder.json` (schema 2) records the active plan, work items, session
|
|
103
|
+
IDs with origin (`direct`, `appended`) and per-task subagent sessions.
|
|
104
|
+
Progress is recomputed from plan-file checkboxes each time.
|
|
105
|
+
- Writes are plain `writeFileSync` without temporary file, lock, revision or
|
|
106
|
+
compare-and-swap; last writer wins; a corrupt file reads as missing.
|
|
107
|
+
- Continuation: an OpenCode `session.idle` hook re-prompts **the same** session
|
|
108
|
+
while unchecked plan items remain, with cooldown, failure cap and a blocked
|
|
109
|
+
marker against loops. It does not notify an external controller.
|
|
110
|
+
- Transferable: progress derived from a source of truth rather than stored;
|
|
111
|
+
explicit blocked state; loop guards. Not transferable: in-process idle hooks
|
|
112
|
+
and same-session re-prompting; the unlocked file. A Boulder-like file is not
|
|
113
|
+
a monitoring or notification system.
|