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.
Files changed (843) hide show
  1. package/.pi-session-mcp-cli/client-adapters/command.js +33 -0
  2. package/.pi-session-mcp-cli/client-adapters/mcp-verifier.js +198 -0
  3. package/.pi-session-mcp-cli/client-adapters/types.js +1 -0
  4. package/.pi-session-mcp-cli/config.js +29 -3
  5. package/.pi-session-mcp-cli/container-runtime.js +18 -0
  6. package/.pi-session-mcp-cli/doctor.js +370 -4
  7. package/.pi-session-mcp-cli/execution-modes.js +83 -0
  8. package/.pi-session-mcp-cli/execution-profile.js +1 -0
  9. package/.pi-session-mcp-cli/override-lock.js +4 -4
  10. package/.pi-session-mcp-cli/session-tools.js +45 -0
  11. package/.pi-session-mcp-cli/setup-platform.js +64 -36
  12. package/.pi-session-mcp-cli/setup-process.js +455 -0
  13. package/.pi-session-mcp-cli/skill-library.js +8 -4
  14. package/.pi-session-mcp-cli/turn-events.js +97 -0
  15. package/.pi-session-mcp-cli/writer-boundary.js +321 -0
  16. package/.pi-session-mcp-cli/writer-fence.js +50 -0
  17. package/.pi-session-mcp-cli/writer-lease.js +140 -0
  18. package/.pi-session-mcp-cli/writer-lifecycle.js +567 -0
  19. package/.pi-session-mcp-cli/writer-state.js +199 -0
  20. package/.pi-session-mcp-cli/writer-wrapper.js +14 -0
  21. package/CHANGELOG.md +527 -0
  22. package/README.md +8 -2
  23. package/dist/capabilities.d.ts +9 -1
  24. package/dist/capabilities.js +8 -3
  25. package/dist/child-stdio-transport.d.ts +21 -0
  26. package/dist/child-stdio-transport.js +88 -0
  27. package/dist/client-adapters/claude-code.js +3 -2
  28. package/dist/client-adapters/command.d.ts +8 -0
  29. package/dist/client-adapters/command.js +9 -1
  30. package/dist/client-adapters/mcp-verifier.d.ts +7 -0
  31. package/dist/client-adapters/mcp-verifier.js +21 -4
  32. package/dist/client-adapters/types.d.ts +5 -1
  33. package/dist/client-adapters/writer-registration.d.ts +16 -0
  34. package/dist/client-adapters/writer-registration.js +156 -0
  35. package/dist/config.d.ts +12 -1
  36. package/dist/config.js +29 -3
  37. package/dist/container-runtime.d.ts +2 -0
  38. package/dist/container-runtime.js +18 -0
  39. package/dist/doctor.d.ts +36 -2
  40. package/dist/doctor.js +370 -4
  41. package/dist/event-spool.d.ts +70 -0
  42. package/dist/event-spool.js +180 -0
  43. package/dist/execution-modes.d.ts +60 -0
  44. package/dist/execution-modes.js +83 -0
  45. package/dist/execution-profile.d.ts +2 -0
  46. package/dist/execution-profile.js +1 -0
  47. package/dist/main.js +63 -8
  48. package/dist/override-lock.d.ts +2 -0
  49. package/dist/override-lock.js +4 -4
  50. package/dist/pi-adapter.d.ts +31 -1
  51. package/dist/pi-adapter.js +12 -0
  52. package/dist/process-diagnostics.d.ts +1 -1
  53. package/dist/process-diagnostics.js +2 -1
  54. package/dist/refusal-server.d.ts +6 -0
  55. package/dist/refusal-server.js +46 -0
  56. package/dist/sdk-pi-adapter.js +16 -9
  57. package/dist/server.d.ts +3 -2
  58. package/dist/server.js +27 -53
  59. package/dist/session-registry.d.ts +32 -2
  60. package/dist/session-registry.js +61 -11
  61. package/dist/session-tools.d.ts +14 -5
  62. package/dist/session-tools.js +13 -9
  63. package/dist/setup-cli.d.ts +14 -0
  64. package/dist/setup-cli.js +132 -0
  65. package/dist/setup-command-guardian.js +9 -3
  66. package/dist/setup-hooks.d.ts +158 -0
  67. package/dist/setup-hooks.js +657 -0
  68. package/dist/setup-main.d.ts +1 -1
  69. package/dist/setup-main.js +18 -2
  70. package/dist/setup-modes.d.ts +18 -0
  71. package/dist/setup-modes.js +131 -0
  72. package/dist/setup-ownership.d.ts +1 -0
  73. package/dist/setup-ownership.js +11 -3
  74. package/dist/setup-platform.d.ts +9 -1
  75. package/dist/setup-platform.js +64 -36
  76. package/dist/setup-process.d.ts +23 -1
  77. package/dist/setup-process.js +88 -10
  78. package/dist/setup-writers.d.ts +42 -0
  79. package/dist/setup-writers.js +510 -0
  80. package/dist/setup.d.ts +4 -1
  81. package/dist/setup.js +23 -10
  82. package/dist/skill-library.d.ts +2 -0
  83. package/dist/skill-library.js +8 -4
  84. package/dist/tool-schemas.d.ts +339 -0
  85. package/dist/tool-schemas.js +49 -0
  86. package/dist/turn-events.d.ts +45 -0
  87. package/dist/turn-events.js +97 -0
  88. package/dist/wake-hook.d.ts +180 -0
  89. package/dist/wake-hook.js +638 -0
  90. package/dist/wake-main.d.ts +8 -0
  91. package/dist/wake-main.js +111 -0
  92. package/dist/writer-acceptance.d.ts +10 -0
  93. package/dist/writer-acceptance.js +192 -0
  94. package/dist/writer-boundary.d.ts +52 -0
  95. package/dist/writer-boundary.js +321 -0
  96. package/dist/writer-credentials.d.ts +29 -0
  97. package/dist/writer-credentials.js +85 -0
  98. package/dist/writer-fence.d.ts +12 -0
  99. package/dist/writer-fence.js +50 -0
  100. package/dist/writer-guard.d.ts +13 -0
  101. package/dist/writer-guard.js +54 -0
  102. package/dist/writer-launch.d.ts +29 -0
  103. package/dist/writer-launch.js +232 -0
  104. package/dist/writer-lease.d.ts +28 -0
  105. package/dist/writer-lease.js +140 -0
  106. package/dist/writer-lifecycle.d.ts +96 -0
  107. package/dist/writer-lifecycle.js +567 -0
  108. package/dist/writer-relay.d.ts +33 -0
  109. package/dist/writer-relay.js +359 -0
  110. package/dist/writer-state.d.ts +111 -0
  111. package/dist/writer-state.js +199 -0
  112. package/dist/writer-wrapper.d.ts +3 -0
  113. package/dist/writer-wrapper.js +14 -0
  114. package/docs/acceptance.md +1694 -1
  115. package/docs/adr/0003-post-mvp-maintenance.md +2 -2
  116. package/docs/adr/0006-pi-extension-allowlist.md +3 -1
  117. package/docs/adr/0008-coding-profile-isolation.md +295 -0
  118. package/docs/adr/0009-execution-modes.md +131 -0
  119. package/docs/adr/0010-read-only-extension-tools.md +68 -0
  120. package/docs/adr/0011-turn-events-and-controller-wake.md +173 -0
  121. package/docs/adr/0012-leased-writer-pool.md +357 -0
  122. package/docs/architecture.md +96 -8
  123. package/docs/client-setup-design.md +12 -8
  124. package/docs/client-setup.md +84 -2
  125. package/docs/doctor-design.md +48 -0
  126. package/docs/evaluation/2026-10-17-live-screening.md +121 -0
  127. package/docs/evaluation/2026-10-17-node-runtime-followup.md +33 -0
  128. package/docs/evaluation/2026-10-17-profile-evaluation-evidence.md +155 -0
  129. package/docs/evaluation/2026-10-17-test-coverage.md +127 -0
  130. package/docs/evaluation/README.md +123 -0
  131. package/docs/evaluation/client-reconnect-2026-10-17/README.md +41 -0
  132. package/docs/evaluation/client-reconnect-2026-10-17/checks.json +38 -0
  133. package/docs/evaluation/client-reconnect-2026-10-17/integrity.json +30 -0
  134. package/docs/evaluation/client-reconnect-2026-10-17/reconnect.json +57 -0
  135. package/docs/evaluation/client-reconnect-2026-10-17/registration-verification.json +389 -0
  136. package/docs/evaluation/client-reconnect-2026-10-17/review.json +10 -0
  137. package/docs/evaluation/controller-ledger-hooks-2026-10-26/README.md +115 -0
  138. package/docs/evaluation/evidence-2026-10-17/budget.proposed.json +13 -0
  139. package/docs/evaluation/evidence-2026-10-17/changed-files.txt +82 -0
  140. package/docs/evaluation/evidence-2026-10-17/checks.json +103 -0
  141. package/docs/evaluation/evidence-2026-10-17/comparison.json +247 -0
  142. package/docs/evaluation/evidence-2026-10-17/development-collection-failure.json +15 -0
  143. package/docs/evaluation/evidence-2026-10-17/full-attempt-default.json +19 -0
  144. package/docs/evaluation/evidence-2026-10-17/full-tests.json +17 -0
  145. package/docs/evaluation/evidence-2026-10-17/inventory.json +239 -0
  146. package/docs/evaluation/evidence-2026-10-17/manifest.json +359 -0
  147. package/docs/evaluation/evidence-2026-10-17/offline.json +1020 -0
  148. package/docs/evaluation/evidence-2026-10-17/ui-reference/T3-1280.png +0 -0
  149. package/docs/evaluation/evidence-2026-10-17/ui-reference/T3-375.png +0 -0
  150. package/docs/evaluation/evidence-2026-10-17/ui-reference/result.json +141 -0
  151. package/docs/evaluation/extension-ablation-2026-10-20/README.md +414 -0
  152. package/docs/evaluation/extension-ablation-2026-10-20/setup.md +140 -0
  153. package/docs/evaluation/extension-ablation-repeat-2026-10-21/README.md +142 -0
  154. package/docs/evaluation/extension-ablation-repeat-2026-10-21/setup.md +69 -0
  155. package/docs/evaluation/extension-audit-2026-10-17/README.md +149 -0
  156. package/docs/evaluation/extension-audit-2026-10-17/checks.json +38 -0
  157. package/docs/evaluation/extension-audit-2026-10-17/cursor-static-evidence.json +93 -0
  158. package/docs/evaluation/extension-audit-2026-10-17/installed-artifact-comparison.json +85 -0
  159. package/docs/evaluation/extension-audit-2026-10-17/installed-packages.json +100 -0
  160. package/docs/evaluation/extension-audit-2026-10-17/integrity.json +108 -0
  161. package/docs/evaluation/extension-audit-2026-10-17/navigation-cursor-registry.json +290 -0
  162. package/docs/evaluation/extension-audit-2026-10-17/navigation-static-evidence.json +185 -0
  163. package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-bindings.json +25 -0
  164. package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-cleanup.json +12 -0
  165. package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-probe.mjs +63 -0
  166. package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-reproduction.json +91 -0
  167. package/docs/evaluation/extension-audit-2026-10-17/openwiki-headless-result.json +83 -0
  168. package/docs/evaluation/extension-audit-2026-10-17/permission-cache-artifact-verification.json +24 -0
  169. package/docs/evaluation/extension-audit-2026-10-17/permission-cache-evidence.json +133 -0
  170. package/docs/evaluation/extension-audit-2026-10-17/permission-cache-report.md +64 -0
  171. package/docs/evaluation/extension-audit-2026-10-17/publication-export.json +10 -0
  172. package/docs/evaluation/extension-audit-2026-10-17/resolver-gates.json +51 -0
  173. package/docs/evaluation/extension-audit-2026-10-17/review.json +28 -0
  174. package/docs/evaluation/extension-audit-2026-10-17/run-openwiki-headless-probe.mjs +29 -0
  175. package/docs/evaluation/extension-audit-2026-10-17/summary.json +123 -0
  176. package/docs/evaluation/extension-audit-2026-10-17/web-openwiki-artifacts.json +29 -0
  177. package/docs/evaluation/extension-audit-2026-10-17/web-openwiki-evidence.json +116 -0
  178. package/docs/evaluation/extension-audit-2026-10-17/web-openwiki-report.md +113 -0
  179. package/docs/evaluation/extension-functions-2026-10-17/README.md +33 -0
  180. package/docs/evaluation/extension-functions-2026-10-17/bridges/README.md +39 -0
  181. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-03dc1dad-9959-40df-b51c-7820991bf7e3.json +79 -0
  182. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-0c43651e-8c7d-4c7c-aa9b-5b5761141e3b.json +54 -0
  183. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-51247b13-87c1-4ec6-886b-82d922b0585a.json +89 -0
  184. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-5337f6bf-503f-4c45-aac0-43b142385a87.json +47 -0
  185. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-60285194-b1d1-4335-b616-6614941585df.json +46 -0
  186. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-6d2fbaa9-a720-4582-9be1-a95f4764786d.json +69 -0
  187. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-6fbb576c-d87d-478d-9c05-4b5ef3563598.json +125 -0
  188. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-730926d1-ef20-4b2d-ab74-7e542f1065e9.json +48 -0
  189. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-a1baa47a-5bbe-4a16-ade8-a350599eb911.json +48 -0
  190. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-bc1d69c7-784f-4ddb-9335-0d905330d568.json +91 -0
  191. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-d582757d-2859-4683-8310-ec158bf6d551.json +99 -0
  192. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts/extension-functions-bridges-e6533a23-4933-4d6e-a250-b1b27f010d18.json +60 -0
  193. package/docs/evaluation/extension-functions-2026-10-17/bridges/attempts.json +138 -0
  194. package/docs/evaluation/extension-functions-2026-10-17/bridges/guard.mjs +74 -0
  195. package/docs/evaluation/extension-functions-2026-10-17/bridges/integrity.json +86 -0
  196. package/docs/evaluation/extension-functions-2026-10-17/bridges/openwiki-final.json +125 -0
  197. package/docs/evaluation/extension-functions-2026-10-17/bridges/run.mjs +36 -0
  198. package/docs/evaluation/extension-functions-2026-10-17/bridges/web-final.json +99 -0
  199. package/docs/evaluation/extension-functions-2026-10-17/bridges/worker.mjs +102 -0
  200. package/docs/evaluation/extension-functions-2026-10-17/cache/README.md +21 -0
  201. 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
  202. 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
  203. 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
  204. 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
  205. 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
  206. 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
  207. 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
  208. 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
  209. 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
  210. 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
  211. 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
  212. package/docs/evaluation/extension-functions-2026-10-17/cache/integrity.json +165 -0
  213. package/docs/evaluation/extension-functions-2026-10-17/cache/probe.mjs +161 -0
  214. package/docs/evaluation/extension-functions-2026-10-17/cache/receipt-archive.json +150 -0
  215. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-3feeffc5-97bf-4079-8505-8119fab7956a.json +54 -0
  216. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-42e5eace-ad87-480a-94d9-448c1dd167b8.json +49 -0
  217. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-50f39f1c-8b48-442b-8d15-1f9c8f63bd81.json +49 -0
  218. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/commands-headless-8482b2b0-f600-488b-9f36-905e0125177a.json +54 -0
  219. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-128ffdce-6fd5-431b-8019-32b40ba4174d.json +42 -0
  220. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-3b572182-a737-471f-b9cb-b01d5da1752a.json +42 -0
  221. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-6c225370-2f47-4a0a-80d5-87d12f6c6fdc.json +37 -0
  222. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-codex-bypass-b48399db-cbed-43de-9071-ac27c34e3757.json +37 -0
  223. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-3a8f52b6-c8d6-4d1c-844c-782a6624a29e.json +45 -0
  224. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-6fcdbc20-b14b-4b80-a4da-bf24078da8d2.json +50 -0
  225. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-a8d6f628-40e1-437e-b192-f7232a051a44.json +50 -0
  226. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/payload-openai-c3c39463-a2d6-4ff8-b985-8f6d1fb1aa02.json +45 -0
  227. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-a23c264f-151d-4ff0-aab4-bdbb2f6560d8.json +53 -0
  228. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-d8178bd3-6530-4915-9cf1-056a975bfbcd.json +53 -0
  229. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-e3985119-e101-459e-91cd-21a0905287ba.json +48 -0
  230. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/stats-synthetic-e7a40382-2d27-4db5-a133-dbe346a5dc60.json +48 -0
  231. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-223d7adc-2dbc-4017-b1ec-0c38294320e2.json +41 -0
  232. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-347a8548-d2e0-4846-a08e-b0399f8fd3b4.json +41 -0
  233. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-49b45e2b-e2d2-456f-b73f-e6bc938b6378.json +46 -0
  234. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-unknown-aaf432f2-bb91-41a7-b951-2d4316389632.json +46 -0
  235. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-204ab3e8-f1fe-4894-8fb0-08299deb4c21.json +41 -0
  236. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-9388d2df-fa15-479c-a4ef-2a774c366c0f.json +46 -0
  237. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-e0bb4742-214a-4b3f-88d2-44de54394e2f.json +46 -0
  238. package/docs/evaluation/extension-functions-2026-10-17/cache/receipts/warming-disabled-zero-f77e1e2d-742a-490f-9955-1dfb19f59c9c.json +41 -0
  239. package/docs/evaluation/extension-functions-2026-10-17/cache/runner.mjs +36 -0
  240. package/docs/evaluation/extension-functions-2026-10-17/cursor/README.md +20 -0
  241. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-10-753Z-2bb4fff5-48cc-4f6b-ae1b-5cc1a07f610b.json +54 -0
  242. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-26-537Z-5adc4fb1-0008-4ef9-a106-aa372dabf061.json +56 -0
  243. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-32-362Z-30949c31-73a3-4dae-af81-68deded51543.json +56 -0
  244. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-38-494Z-8eec81b8-5576-48cb-b2fa-c279269db058.json +56 -0
  245. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-36-45-546Z-991647e5-7ea4-43c4-a90d-868e4ac38d83.json +56 -0
  246. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-37-02-277Z-2296fb35-e5cb-4bf1-9e83-7370bcb46bfe.json +56 -0
  247. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-37-28-390Z-e9c3d106-b4c9-4146-ae83-a2799c907fe5.json +56 -0
  248. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-37-37-371Z-8545c893-a8e3-4dc6-973b-81dfd97d798b.json +56 -0
  249. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-38-41-612Z-c57c4778-261d-4397-8a36-df9cc23ca629.json +58 -0
  250. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-38-51-661Z-0eb898de-7471-4f17-a308-5ef5d86421ff.json +58 -0
  251. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-38-55-412Z-8169d843-a9e7-48f4-88b1-3a90e1592df1.json +58 -0
  252. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-39-15-274Z-a5610333-e428-4cc6-9f5a-9206748ee512.json +58 -0
  253. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-39-39-506Z-d4c80a7b-76b4-4d11-bf0f-552d11b131b2.json +136 -0
  254. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-39-53-515Z-db409f47-8ee5-4354-b7f9-a258eb7e17d0.json +136 -0
  255. package/docs/evaluation/extension-functions-2026-10-17/cursor/evidence-2026-10-17T13-42-04-909Z-01d70cb3-6897-46ca-b8aa-1c69d5b5c7fc.json +148 -0
  256. package/docs/evaluation/extension-functions-2026-10-17/cursor/integrity.json +205 -0
  257. package/docs/evaluation/extension-functions-2026-10-17/cursor/probe.mjs +151 -0
  258. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipt-archive.json +186 -0
  259. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-104e378f-8f82-4ae9-bffc-7f1d52e00e74.json +15 -0
  260. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-182a8009-c52a-4760-9768-9cba15fceb9c.json +14 -0
  261. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-1f07360d-046f-4f0c-b40f-6b57a027220c.json +65 -0
  262. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-256cb86e-40ae-4fec-a2d2-9b7f66cc4be8.json +14 -0
  263. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-2667d991-3133-44c3-b883-c401b3c14cb1.json +14 -0
  264. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-394fc425-ed51-408f-ab09-6d26aee0d48f.json +14 -0
  265. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-531d3f1d-c326-4914-b768-3d32103513b9.json +14 -0
  266. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-5c7d0d62-8290-494f-8729-5d60bc626ad7.json +14 -0
  267. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-64af1d94-ea73-481f-b827-dbf6755d8591.json +66 -0
  268. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-65fce696-864c-4247-960e-59f6d671cbf9.json +15 -0
  269. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-66acde31-19c7-4d3e-9814-ddeb2cffd373.json +14 -0
  270. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-79d220d0-fc0b-4cad-85cc-40b9e904fb97.json +14 -0
  271. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-a58f0281-71bc-4757-9d6f-e281f813135e.json +65 -0
  272. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-c2b61e4b-fd33-4969-ab29-118957ca5fbb.json +15 -0
  273. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/activation-and-resources-f61b5020-2c05-40ad-9cb8-590b22790186.json +15 -0
  274. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-0ee0df5a-299f-451c-96e3-5abcf8bfa999.json +45 -0
  275. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-169e5146-09a2-4231-8017-ebd8d4b75f0a.json +14 -0
  276. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-19d479f2-7162-463e-90de-2d89a13e59a3.json +15 -0
  277. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-1bd882bb-2403-4269-8335-90f9803f57b7.json +14 -0
  278. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-2ab9d418-68b2-4679-bf42-f31b6945ea5a.json +15 -0
  279. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-3a6aa7d7-b956-4fe5-9555-a2c63408c067.json +45 -0
  280. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-6333425f-0b46-4ced-a272-3d48895ee853.json +15 -0
  281. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-6eccb170-ff45-40e2-afc5-dfc0f77c229f.json +14 -0
  282. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-7f330c57-9c3f-4879-a1d0-67c4c5c36050.json +14 -0
  283. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-8d9de272-165c-4bb8-a147-d1b306388472.json +14 -0
  284. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-c1ffa69f-25fa-4f45-a691-af3bc422c089.json +14 -0
  285. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-c24ad0c8-5e7e-4d71-9b22-3e2708ce1626.json +14 -0
  286. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-c5a3140e-a28e-4264-9ee6-51b1310b3123.json +14 -0
  287. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-cdbb3dde-2441-46ae-9111-f2a299d45807.json +46 -0
  288. package/docs/evaluation/extension-functions-2026-10-17/cursor/receipts/bridge-disabled-d68f774c-d1f0-4620-b334-301a20edffc3.json +15 -0
  289. package/docs/evaluation/extension-functions-2026-10-17/cursor/runner.mjs +147 -0
  290. package/docs/evaluation/extension-functions-2026-10-17/integrity.json +618 -0
  291. package/docs/evaluation/extension-functions-2026-10-17/navigation/README.md +22 -0
  292. package/docs/evaluation/extension-functions-2026-10-17/navigation/SHA256SUMS.txt +8 -0
  293. package/docs/evaluation/extension-functions-2026-10-17/navigation/attempt.json +13 -0
  294. 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
  295. 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
  296. 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
  297. 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
  298. 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
  299. 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
  300. 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
  301. 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
  302. 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
  303. 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
  304. 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
  305. 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
  306. 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
  307. 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
  308. 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
  309. 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
  310. 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
  311. 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
  312. 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
  313. 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
  314. 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
  315. 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
  316. 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
  317. 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
  318. 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
  319. 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
  320. 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
  321. 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
  322. 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
  323. package/docs/evaluation/extension-functions-2026-10-17/navigation/child-guard.mjs +30 -0
  324. package/docs/evaluation/extension-functions-2026-10-17/navigation/final-result.json +42 -0
  325. package/docs/evaluation/extension-functions-2026-10-17/navigation/function-probe.mjs +521 -0
  326. package/docs/evaluation/extension-functions-2026-10-17/navigation/function-runner.mjs +201 -0
  327. package/docs/evaluation/extension-functions-2026-10-17/navigation/integrity.json +153 -0
  328. package/docs/evaluation/extension-functions-2026-10-17/navigation/receipt-archive.json +160 -0
  329. package/docs/evaluation/extension-functions-2026-10-17/review.json +27 -0
  330. package/docs/evaluation/extension-functions-2026-10-17/summary.json +102 -0
  331. package/docs/evaluation/extension-functions-2026-10-17/verification.json +103 -0
  332. package/docs/evaluation/isolation-acceptance-2026-10-18/README.md +106 -0
  333. package/docs/evaluation/isolation-acceptance-2026-10-18/auth-warmup.mjs +33 -0
  334. package/docs/evaluation/isolation-acceptance-2026-10-18/contained-agent-ro.json +433 -0
  335. package/docs/evaluation/isolation-acceptance-2026-10-18/contained.json +439 -0
  336. package/docs/evaluation/isolation-acceptance-2026-10-18/control.json +403 -0
  337. package/docs/evaluation/isolation-acceptance-2026-10-18/live.json +75 -0
  338. package/docs/evaluation/isolation-acceptance-2026-10-18/wrapper.sh +37 -0
  339. package/docs/evaluation/ledger-event-bridge-2026-10-21/README.md +360 -0
  340. package/docs/evaluation/ledger-event-bridge-2026-10-21/design.md +150 -0
  341. package/docs/evaluation/ledger-event-bridge-2026-10-21/inventory.md +113 -0
  342. package/docs/evaluation/ledger-event-bridge-2026-10-21/live/README.md +117 -0
  343. package/docs/evaluation/ledger-event-bridge-2026-10-21/live/dry-run/dry-01-L1-A.json +202 -0
  344. package/docs/evaluation/ledger-event-bridge-2026-10-21/live/dry-run/dry-02-L1-C.json +259 -0
  345. package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/01-L1-A.json +169 -0
  346. package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/02-L1-A.json +202 -0
  347. package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/03-L1-C.json +256 -0
  348. package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run/approval.json +31 -0
  349. package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run-2/01-L1-C.json +256 -0
  350. package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run-2/02-L1-A.json +201 -0
  351. package/docs/evaluation/ledger-event-bridge-2026-10-21/live/run-2/approval.json +16 -0
  352. package/docs/evaluation/ledger-event-bridge-2026-10-21/live-plan.md +87 -0
  353. package/docs/evaluation/ledger-event-bridge-2026-10-21/pre-registration.md +117 -0
  354. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S1.json +361 -0
  355. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S2.json +544 -0
  356. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S3.json +470 -0
  357. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S4.json +271 -0
  358. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S5.json +271 -0
  359. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/S6.json +266 -0
  360. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/X6.json +29 -0
  361. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-1/summary.json +269 -0
  362. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S1.json +391 -0
  363. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S2.json +600 -0
  364. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S3.json +519 -0
  365. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S4.json +281 -0
  366. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S5.json +294 -0
  367. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S6.json +280 -0
  368. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/S8.json +280 -0
  369. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/X6.json +32 -0
  370. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-2/summary.json +307 -0
  371. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S1.json +391 -0
  372. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S2.json +600 -0
  373. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S3.json +519 -0
  374. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S4.json +281 -0
  375. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S5.json +294 -0
  376. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S6.json +280 -0
  377. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/S8.json +280 -0
  378. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/X6.json +32 -0
  379. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-3/summary.json +307 -0
  380. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S1.json +409 -0
  381. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S2.json +634 -0
  382. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S3.json +537 -0
  383. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S4.json +281 -0
  384. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S5.json +294 -0
  385. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S6.json +280 -0
  386. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/S8.json +280 -0
  387. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/X6.json +32 -0
  388. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-4/summary.json +307 -0
  389. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S1.json +409 -0
  390. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S2.json +634 -0
  391. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S3.json +537 -0
  392. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S4.json +281 -0
  393. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S5.json +294 -0
  394. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S6.json +280 -0
  395. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/S8.json +280 -0
  396. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/X6.json +32 -0
  397. package/docs/evaluation/ledger-event-bridge-2026-10-21/probe/attempt-5/summary.json +307 -0
  398. package/docs/evaluation/live-rescreen-2026-10-17/README.md +114 -0
  399. package/docs/evaluation/live-rescreen-2026-10-17/approval.json +18 -0
  400. package/docs/evaluation/live-rescreen-2026-10-17/approved-budget.json +13 -0
  401. package/docs/evaluation/live-rescreen-2026-10-17/approved-manifest.json +315 -0
  402. package/docs/evaluation/live-rescreen-2026-10-17/audit-rescreen.mjs +78 -0
  403. package/docs/evaluation/live-rescreen-2026-10-17/audit.json +152 -0
  404. package/docs/evaluation/live-rescreen-2026-10-17/backend-independent-checks.json +38 -0
  405. package/docs/evaluation/live-rescreen-2026-10-17/checks.json +54 -0
  406. package/docs/evaluation/live-rescreen-2026-10-17/execution.json +19 -0
  407. package/docs/evaluation/live-rescreen-2026-10-17/integrity.json +138 -0
  408. package/docs/evaluation/live-rescreen-2026-10-17/planning-ledger.json +26 -0
  409. package/docs/evaluation/live-rescreen-2026-10-17/review.json +16 -0
  410. package/docs/evaluation/live-rescreen-2026-10-17/runs/comparison.json +177 -0
  411. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-1.claim +1 -0
  412. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-1.diagnostic.json +1 -0
  413. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-1.json +97 -0
  414. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.claim +1 -0
  415. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.json +104 -0
  416. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.patch +11 -0
  417. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.snapshot/contract.mjs +4 -0
  418. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-2.snapshot/package.json +1 -0
  419. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-3.claim +1 -0
  420. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-3.json +89 -0
  421. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.claim +1 -0
  422. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.json +104 -0
  423. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.patch +11 -0
  424. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.snapshot/contract.mjs +4 -0
  425. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-4.snapshot/package.json +1 -0
  426. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-5.claim +1 -0
  427. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-5.diagnostic.json +1 -0
  428. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-5.json +117 -0
  429. package/docs/evaluation/live-rescreen-2026-10-17/runs/rescreen-6.json +53 -0
  430. package/docs/evaluation/live-rescreen-2026-10-17/runtime-observation.json +11 -0
  431. package/docs/evaluation/live-screening-2026-10-17/approval.json +13 -0
  432. package/docs/evaluation/live-screening-2026-10-17/approved-budget.json +13 -0
  433. package/docs/evaluation/live-screening-2026-10-17/approved-manifest.json +359 -0
  434. package/docs/evaluation/live-screening-2026-10-17/audit.json +143 -0
  435. package/docs/evaluation/live-screening-2026-10-17/integrity.json +148 -0
  436. package/docs/evaluation/live-screening-2026-10-17/inventory.json +239 -0
  437. package/docs/evaluation/live-screening-2026-10-17/runs/comparison.json +247 -0
  438. package/docs/evaluation/live-screening-2026-10-17/runs/screen-1.claim +1 -0
  439. package/docs/evaluation/live-screening-2026-10-17/runs/screen-1.diagnostic.json +1 -0
  440. package/docs/evaluation/live-screening-2026-10-17/runs/screen-1.json +98 -0
  441. package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.claim +1 -0
  442. package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.json +104 -0
  443. package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.patch +11 -0
  444. package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.snapshot/contract.mjs +4 -0
  445. package/docs/evaluation/live-screening-2026-10-17/runs/screen-2.snapshot/package.json +1 -0
  446. package/docs/evaluation/live-screening-2026-10-17/runs/screen-3.claim +1 -0
  447. package/docs/evaluation/live-screening-2026-10-17/runs/screen-3.diagnostic.json +1 -0
  448. package/docs/evaluation/live-screening-2026-10-17/runs/screen-3.json +97 -0
  449. package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.claim +1 -0
  450. package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.json +104 -0
  451. package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.patch +11 -0
  452. package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.snapshot/contract.mjs +4 -0
  453. package/docs/evaluation/live-screening-2026-10-17/runs/screen-4.snapshot/package.json +1 -0
  454. package/docs/evaluation/live-screening-2026-10-17/runs/screen-5.claim +1 -0
  455. package/docs/evaluation/live-screening-2026-10-17/runs/screen-5.diagnostic.json +1 -0
  456. package/docs/evaluation/live-screening-2026-10-17/runs/screen-5.json +97 -0
  457. package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.claim +1 -0
  458. package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.json +104 -0
  459. package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.patch +11 -0
  460. package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.snapshot/contract.mjs +4 -0
  461. package/docs/evaluation/live-screening-2026-10-17/runs/screen-6.snapshot/package.json +1 -0
  462. package/docs/evaluation/live-screening-2026-10-17/runs/screen-7.claim +1 -0
  463. package/docs/evaluation/live-screening-2026-10-17/runs/screen-7.json +108 -0
  464. package/docs/evaluation/live-screening-2026-10-17/runs/screen-8.claim +1 -0
  465. package/docs/evaluation/live-screening-2026-10-17/runs/screen-8.diagnostic.json +1 -0
  466. package/docs/evaluation/live-screening-2026-10-17/runs/screen-8.json +116 -0
  467. package/docs/evaluation/m1-ab-proposal-2026-10-18/README.md +124 -0
  468. package/docs/evaluation/m1-ab-proposal-2026-10-18/ab-proposal.json +135 -0
  469. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/README.md +25 -0
  470. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/approved-budget.json +13 -0
  471. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/approved-decision.json +79 -0
  472. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/approved-manifest.json +271 -0
  473. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-1/token-live-result.json +546 -0
  474. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/README.md +22 -0
  475. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/approved-budget.json +13 -0
  476. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/approved-decision.json +80 -0
  477. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/approved-manifest.json +271 -0
  478. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-2/token-live-result.json +1663 -0
  479. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/README.md +23 -0
  480. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/approved-budget.json +13 -0
  481. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/approved-decision.json +71 -0
  482. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/approved-manifest.json +271 -0
  483. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-3/token-live-result.json +1748 -0
  484. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/README.md +25 -0
  485. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/approved-budget.json +13 -0
  486. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/approved-decision.json +71 -0
  487. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/approved-manifest.json +271 -0
  488. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-A/token-live-result.json +3019 -0
  489. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/approved-budget.json +13 -0
  490. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/approved-decision.json +71 -0
  491. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/approved-manifest.json +271 -0
  492. package/docs/evaluation/m1-ab-proposal-2026-10-18/probe/attempt-4/arm-B/token-live-result.json +2859 -0
  493. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/README.md +67 -0
  494. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/approved-budget.json +13 -0
  495. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/approved-decision.json +71 -0
  496. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/approved-manifest.json +271 -0
  497. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r1-pair1-A/token-live-result.json +3019 -0
  498. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/approved-budget.json +13 -0
  499. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/approved-decision.json +71 -0
  500. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/approved-manifest.json +271 -0
  501. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r2-pair1-B/token-live-result.json +2981 -0
  502. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/approved-budget.json +13 -0
  503. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/approved-decision.json +71 -0
  504. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/approved-manifest.json +271 -0
  505. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r3-pair2-B/token-live-result.json +2887 -0
  506. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/approved-budget.json +13 -0
  507. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/approved-decision.json +71 -0
  508. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/approved-manifest.json +271 -0
  509. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r4-pair2-A/token-live-result.json +3189 -0
  510. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/approved-budget.json +13 -0
  511. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/approved-decision.json +71 -0
  512. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/approved-manifest.json +271 -0
  513. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r5-pair3-B/token-live-result.json +2929 -0
  514. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/approved-budget.json +13 -0
  515. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/approved-decision.json +71 -0
  516. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/approved-manifest.json +271 -0
  517. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r6-pair3-A/token-live-result.json +3085 -0
  518. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/approved-budget.json +13 -0
  519. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/approved-decision.json +71 -0
  520. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/approved-manifest.json +271 -0
  521. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r7-pair4-A/token-live-result.json +3019 -0
  522. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/approved-budget.json +13 -0
  523. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/approved-decision.json +71 -0
  524. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/approved-manifest.json +271 -0
  525. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/r8-pair4-B/token-live-result.json +2925 -0
  526. package/docs/evaluation/m1-ab-proposal-2026-10-18/results/summary-rows.json +338 -0
  527. package/docs/evaluation/node24-followup-2026-10-17/README.md +55 -0
  528. package/docs/evaluation/node24-followup-2026-10-17/client-migration-review.json +20 -0
  529. package/docs/evaluation/node24-followup-2026-10-17/client-registration-migration.json +31 -0
  530. package/docs/evaluation/node24-followup-2026-10-17/client-registration-verification.json +389 -0
  531. package/docs/evaluation/node24-followup-2026-10-17/closure-checks.json +33 -0
  532. package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-probe.mjs +259 -0
  533. package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-report.md +39 -0
  534. package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result-attempt-2.json +49 -0
  535. package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result-attempt-3.json +76 -0
  536. package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result-attempt-4.json +108 -0
  537. package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-result.json +12 -0
  538. package/docs/evaluation/node24-followup-2026-10-17/cursor-headless-run.mjs +96 -0
  539. package/docs/evaluation/node24-followup-2026-10-17/download.json +16 -0
  540. package/docs/evaluation/node24-followup-2026-10-17/extension-summary.json +97 -0
  541. package/docs/evaluation/node24-followup-2026-10-17/final-review.json +15 -0
  542. package/docs/evaluation/node24-followup-2026-10-17/install.json +10 -0
  543. package/docs/evaluation/node24-followup-2026-10-17/integrity.json +204 -0
  544. package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-evidence.json +39 -0
  545. package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-probe.mjs +277 -0
  546. package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-report.md +35 -0
  547. 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
  548. 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
  549. 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
  550. 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
  551. 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
  552. 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
  553. 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
  554. 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
  555. 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
  556. 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
  557. 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
  558. 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
  559. 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
  560. 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
  561. package/docs/evaluation/node24-followup-2026-10-17/isolated-extensions-runner.mjs +172 -0
  562. package/docs/evaluation/node24-followup-2026-10-17/isolated-install.json +121 -0
  563. package/docs/evaluation/node24-followup-2026-10-17/isolated-package-lock.json +2321 -0
  564. package/docs/evaluation/node24-followup-2026-10-17/isolated-package.json +12 -0
  565. package/docs/evaluation/node24-followup-2026-10-17/launcher-review.json +17 -0
  566. package/docs/evaluation/node24-followup-2026-10-17/launcher-switch.json +28 -0
  567. package/docs/evaluation/node24-followup-2026-10-17/mcp-launcher-test.json +24 -0
  568. package/docs/evaluation/node24-followup-2026-10-17/migrate-client-node.mjs +129 -0
  569. package/docs/evaluation/node24-followup-2026-10-17/node-runtime-report.md +127 -0
  570. package/docs/evaluation/node24-followup-2026-10-17/node24-checks.json +44 -0
  571. package/docs/evaluation/node24-followup-2026-10-17/pi-launcher-test.json +13 -0
  572. package/docs/evaluation/node24-followup-2026-10-17/publication-export.json +11 -0
  573. package/docs/evaluation/node24-followup-2026-10-17/restore-launchers.mjs +26 -0
  574. package/docs/evaluation/node24-followup-2026-10-17/verify-client-node.mjs +36 -0
  575. package/docs/evaluation/permission-gates-2026-10-17/README.md +23 -0
  576. package/docs/evaluation/permission-gates-2026-10-17/attempts.json +53 -0
  577. package/docs/evaluation/permission-gates-2026-10-17/integrity.json +46 -0
  578. package/docs/evaluation/permission-gates-2026-10-17/permission-gate-probe.mjs +132 -0
  579. package/docs/evaluation/permission-gates-2026-10-17/permission-gate-worker.mjs +209 -0
  580. package/docs/evaluation/permission-gates-2026-10-17/permission-gates-result-final.json +53 -0
  581. package/docs/evaluation/permission-gates-2026-10-17/permission-gates-result-verified.json +54 -0
  582. package/docs/evaluation/permission-gates-2026-10-17/permission-gates-result.json +53 -0
  583. package/docs/evaluation/permission-gates-2026-10-17/review.json +19 -0
  584. package/docs/evaluation/permission-gates-2026-10-17/superseded-initial-receipt.json +40 -0
  585. package/docs/evaluation/pi-lens-registration-2026-10-19/README.md +90 -0
  586. package/docs/evaluation/pi-lens-registration-2026-10-19/probe.mjs +126 -0
  587. package/docs/evaluation/pi-lens-registration-2026-10-19/result.json +1 -0
  588. package/docs/evaluation/plan-continuation-2026-10-17/README.md +107 -0
  589. package/docs/evaluation/plan-continuation-2026-10-17/budget.proposed.json +13 -0
  590. package/docs/evaluation/plan-continuation-2026-10-17/checks.json +1048 -0
  591. package/docs/evaluation/plan-continuation-2026-10-17/integrity.json +58 -0
  592. package/docs/evaluation/plan-continuation-2026-10-17/inventory.json +239 -0
  593. package/docs/evaluation/plan-continuation-2026-10-17/manifest.proposed.json +315 -0
  594. package/docs/evaluation/plan-continuation-2026-10-17/next-stage-ledger.json +19 -0
  595. package/docs/evaluation/plan-continuation-2026-10-17/prepare-rescreen.mjs +30 -0
  596. package/docs/evaluation/plan-continuation-2026-10-17/prior-integrity.json +25 -0
  597. package/docs/evaluation/plan-continuation-2026-10-17/proposal-validation.json +14 -0
  598. package/docs/evaluation/plan-continuation-2026-10-17/receipt-contract-update.patch +40 -0
  599. package/docs/evaluation/plan-continuation-2026-10-17/review.json +8 -0
  600. package/docs/evaluation/plan-continuation-2026-10-17/source-delta.json +14 -0
  601. package/docs/evaluation/profile-evaluation.md +297 -0
  602. package/docs/evaluation/publication-2026-10-17/README.md +88 -0
  603. package/docs/evaluation/publication-2026-10-17/checks.json +117 -0
  604. package/docs/evaluation/publication-2026-10-17/integrity.json +21 -0
  605. package/docs/evaluation/publication-2026-10-17/publication-scan.json +63 -0
  606. package/docs/evaluation/publication-2026-10-17/review.json +21 -0
  607. package/docs/evaluation/s5-decision-inputs-2026-10-18/README.md +16 -0
  608. package/docs/evaluation/s5-decision-inputs-2026-10-18/bounded-wait.md +78 -0
  609. package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/README.md +151 -0
  610. package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-1/claude-projection.json +126 -0
  611. package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-2/claude-projection.json +1895 -0
  612. package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-3/claude-projection.json +1895 -0
  613. package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-4/claude-projection.json +1797 -0
  614. package/docs/evaluation/s5-decision-inputs-2026-10-18/claude-projection/attempt-5/claude-projection.json +1797 -0
  615. package/docs/evaluation/s5-decision-inputs-2026-10-18/worker-usage.md +63 -0
  616. package/docs/evaluation/s7-live-acceptance-2026-10-24/README.md +212 -0
  617. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/binding.json +20 -0
  618. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-ev-off.json +43 -0
  619. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-ev-spool.json +43 -0
  620. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-l3.json +39 -0
  621. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/config-pre.json +31 -0
  622. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e-teardown-setup-remove.json +1 -0
  623. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-clean-10s.json +15 -0
  624. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-clean.json +15 -0
  625. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-digest-ev-e1.json +8 -0
  626. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-leaks.json +131 -0
  627. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-oracle.json +74 -0
  628. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-run.json +33 -0
  629. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-setup-1-dryrun.json +1 -0
  630. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-setup-2-apply.json +1 -0
  631. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e1-setup-3-verify.json +1 -0
  632. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-clean-10s.json +15 -0
  633. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-clean.json +15 -0
  634. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-digest-ev-e2l.json +8 -0
  635. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-digest-ev-e2s.json +8 -0
  636. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-leaks.json +205 -0
  637. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-oracle.json +110 -0
  638. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e2-run.json +33 -0
  639. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-clean-10s.json +15 -0
  640. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-clean.json +15 -0
  641. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-digest-ev-e3.json +8 -0
  642. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-leaks.json +215 -0
  643. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-oracle.json +79 -0
  644. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e3b-run.json +33 -0
  645. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-clean-10s.json +15 -0
  646. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-clean.json +15 -0
  647. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-digest-ev-e4a.json +8 -0
  648. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-digest-ev-e4b.json +8 -0
  649. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-late-a.json +16 -0
  650. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-late-b.json +16 -0
  651. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-leaks.json +167 -0
  652. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-oracle.json +70 -0
  653. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e4-run.json +37 -0
  654. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-clean-10s.json +15 -0
  655. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-clean.json +15 -0
  656. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-digest-ev-e5.json +8 -0
  657. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-leaks.json +82 -0
  658. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-oracle.json +60 -0
  659. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-run.json +33 -0
  660. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e5-server-env-names.txt +14 -0
  661. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-clean-10s.json +15 -0
  662. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-clean.json +15 -0
  663. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-digest-ev-e1.json +8 -0
  664. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-leaks.json +156 -0
  665. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-run.json +37 -0
  666. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-setup-apply.json +1 -0
  667. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/e6b-teardown-remove.json +1 -0
  668. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/final-e-clean.json +15 -0
  669. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/kit.sha256 +23 -0
  670. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-packed-off.json +1185 -0
  671. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-packed-spool.json +1334 -0
  672. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-wt-off.json +1185 -0
  673. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l2-wt-spool.json +1334 -0
  674. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-clean-10s.json +15 -0
  675. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-clean.json +15 -0
  676. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-digest-cc-analysis.json +8 -0
  677. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-leaks.json +80 -0
  678. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-oracle.json +61 -0
  679. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv1-run.json +33 -0
  680. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-clean-10s.json +15 -0
  681. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-clean.json +15 -0
  682. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-leaks.json +80 -0
  683. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-oracle-stage1.json +34 -0
  684. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-oracle-stage2.json +35 -0
  685. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-run.json +33 -0
  686. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-snapshot-stage1.txt +4 -0
  687. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv2-snapshot-stage2.txt +5 -0
  688. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-clean-10s.json +15 -0
  689. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-clean.json +15 -0
  690. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-digest-cc-abort.json +8 -0
  691. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-leaks.json +82 -0
  692. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-oracle-flow.json +61 -0
  693. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-oracle-late.json +16 -0
  694. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cc-inv3-run.json +33 -0
  695. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-controller-skill-remove.json +1 -0
  696. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-controller-skill-setup.json +1 -0
  697. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-clean-10s.json +15 -0
  698. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-clean.json +15 -0
  699. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-digest-cx-analysis.json +8 -0
  700. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-leaks.json +93 -0
  701. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-oracle.json +61 -0
  702. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv1-run.json +33 -0
  703. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-clean-10s.json +15 -0
  704. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-clean.json +15 -0
  705. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-leaks.json +93 -0
  706. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-oracle-stage1.json +34 -0
  707. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-oracle-stage2.json +35 -0
  708. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-run.json +33 -0
  709. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-snapshot-stage1.txt +4 -0
  710. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv2-snapshot-stage2.txt +5 -0
  711. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-clean-10s.json +15 -0
  712. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-clean.json +15 -0
  713. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-digest-cx-abort.json +8 -0
  714. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-leaks.json +95 -0
  715. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-oracle-flow.json +61 -0
  716. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-oracle-late.json +16 -0
  717. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/l3-cx-inv3-run.json +33 -0
  718. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-clean-10s.json +15 -0
  719. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-clean.json +15 -0
  720. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-digest-pre-analysis.json +8 -0
  721. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-digest-pre-code.json +8 -0
  722. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-leaks.json +86 -0
  723. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-oracle.json +39 -0
  724. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0-run.json +33 -0
  725. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-clean-10s.json +15 -0
  726. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-clean.json +15 -0
  727. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-digest-pre-analysis.json +8 -0
  728. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-digest-pre-code.json +8 -0
  729. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-leaks.json +47 -0
  730. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-oracle.json +39 -0
  731. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/p0a-harness-fail-run.json +33 -0
  732. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-after-cc.json +6 -0
  733. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-after-cx.json +6 -0
  734. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-after-e.json +6 -0
  735. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/regdigest-before.json +6 -0
  736. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-control-apply.json +1 -0
  737. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-control-dryrun.json +1 -0
  738. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-provision-apply-attempt1.json +1 -0
  739. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-provision-apply-attempt2.json +1 -0
  740. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-provision-dryrun.json +1 -0
  741. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w1-writer-verify.json +1 -0
  742. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2-leaks.json +130 -0
  743. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2-oracle.txt +14 -0
  744. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2-run.json +33 -0
  745. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2b-oracle.txt +16 -0
  746. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2c-oracle.txt +8 -0
  747. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2d-oracle.txt +6 -0
  748. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2r-leaks.json +130 -0
  749. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2r-oracle.txt +3 -0
  750. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w2r-run.json +33 -0
  751. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3-collect.json +1 -0
  752. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3-finish.json +1 -0
  753. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3r-collect.json +1 -0
  754. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w3r-finish.json +1 -0
  755. package/docs/evaluation/s7-live-acceptance-2026-10-24/evidence/w4-remove.json +1 -0
  756. package/docs/evaluation/subagent-probe-2026-10-26/README.md +132 -0
  757. package/docs/evaluation/subagent-probe-2026-10-26/results/K7.json +463 -0
  758. package/docs/evaluation/subagent-probe-2026-10-26/results/summary.json +50 -0
  759. package/docs/evaluation/test-coverage-2026-10-17.json +483 -0
  760. package/docs/evaluation/test-coverage-review-2026-10-17.json +22 -0
  761. package/docs/evaluation/test-coverage-verification-2026-10-17.json +31 -0
  762. package/docs/evaluation/token-footprint-2026-10-17/README.md +297 -0
  763. package/docs/evaluation/token-footprint-2026-10-17/baseline.json +25871 -0
  764. package/docs/evaluation/token-footprint-2026-10-17/calibration-2/README.md +24 -0
  765. package/docs/evaluation/token-footprint-2026-10-17/calibration-2/baseline.json +30346 -0
  766. package/docs/evaluation/token-footprint-2026-10-17/calibration-2/client-projection.json +2538 -0
  767. package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-approval/budget.json +13 -0
  768. package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-approval/decision.json +69 -0
  769. package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-approval/manifest.json +271 -0
  770. package/docs/evaluation/token-footprint-2026-10-17/calibration-2/live-package.json +785 -0
  771. package/docs/evaluation/token-footprint-2026-10-17/calibration-2/measurement.json +37956 -0
  772. package/docs/evaluation/token-footprint-2026-10-17/calibration-2/summary.json +119 -0
  773. package/docs/evaluation/token-footprint-2026-10-17/checks-final.json +273 -0
  774. package/docs/evaluation/token-footprint-2026-10-17/checks.json +190 -0
  775. package/docs/evaluation/token-footprint-2026-10-17/client-attempts/README.md +25 -0
  776. package/docs/evaluation/token-footprint-2026-10-17/client-attempts/attempt-4.json +2274 -0
  777. package/docs/evaluation/token-footprint-2026-10-17/client-attempts/pilot-1.json +77 -0
  778. package/docs/evaluation/token-footprint-2026-10-17/client-attempts/pilot-2.json +81 -0
  779. package/docs/evaluation/token-footprint-2026-10-17/client-attempts/pilot-3.json +121 -0
  780. package/docs/evaluation/token-footprint-2026-10-17/current-calibration/baseline.json +30346 -0
  781. package/docs/evaluation/token-footprint-2026-10-17/current-calibration/measurement.json +37956 -0
  782. package/docs/evaluation/token-footprint-2026-10-17/current-calibration/summary.json +119 -0
  783. package/docs/evaluation/token-footprint-2026-10-17/current-client-projection.json +2538 -0
  784. package/docs/evaluation/token-footprint-2026-10-17/follow-up.md +76 -0
  785. package/docs/evaluation/token-footprint-2026-10-17/integrity.json +171 -0
  786. package/docs/evaluation/token-footprint-2026-10-17/live-approval/README.md +36 -0
  787. package/docs/evaluation/token-footprint-2026-10-17/live-approval/budget.json +13 -0
  788. package/docs/evaluation/token-footprint-2026-10-17/live-approval/decision.json +69 -0
  789. package/docs/evaluation/token-footprint-2026-10-17/live-approval/manifest.json +271 -0
  790. package/docs/evaluation/token-footprint-2026-10-17/live-package.json +795 -0
  791. package/docs/evaluation/token-footprint-2026-10-17/live-proposal.json +427 -0
  792. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/README.md +75 -0
  793. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/approved-budget.json +13 -0
  794. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/approved-decision.json +69 -0
  795. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/approved-manifest.json +271 -0
  796. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-1/token-live-result.json +837 -0
  797. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/approved-budget.json +13 -0
  798. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/approved-decision.json +69 -0
  799. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/approved-manifest.json +271 -0
  800. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-2/token-live-result.json +985 -0
  801. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/approved-budget.json +13 -0
  802. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/approved-decision.json +69 -0
  803. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/approved-manifest.json +271 -0
  804. package/docs/evaluation/token-footprint-2026-10-17/m1-pilot/attempt-3/token-live-result.json +3055 -0
  805. package/docs/evaluation/token-footprint-2026-10-17/measurement.json +32476 -0
  806. package/docs/evaluation/token-footprint-2026-10-17/prior-calibration/README.md +20 -0
  807. package/docs/evaluation/token-footprint-2026-10-17/prior-calibration/integrity.json +40 -0
  808. package/docs/evaluation/token-footprint-2026-10-17/summary.json +119 -0
  809. package/docs/evaluation/tool-definitions-2026-10-18/README.md +204 -0
  810. package/docs/evaluation/tool-definitions-2026-10-18/codex-projection/after/client-projection.json +2853 -0
  811. package/docs/evaluation/tool-definitions-2026-10-18/codex-projection/before/client-projection.json +2853 -0
  812. package/docs/evaluation/tool-definitions-2026-10-18/compare-validation.mjs +64 -0
  813. package/docs/evaluation/tool-definitions-2026-10-18/diff-validation.mjs +13 -0
  814. package/docs/evaluation/tool-definitions-2026-10-18/measure-wire.mjs +31 -0
  815. package/docs/evaluation/worker-system-prompt-2026-10-26/README.md +95 -0
  816. package/docs/evaluation/worker-system-prompt-2026-10-26/probe.mjs +155 -0
  817. package/docs/execution-modes.md +388 -0
  818. package/docs/installation.md +246 -12
  819. package/docs/isolation-setup.md +258 -0
  820. package/docs/macos-setup-design.md +2 -2
  821. package/docs/pi-extensions-design.md +71 -16
  822. package/docs/releasing.md +12 -6
  823. package/docs/reviews/2026-10-18-adr-0008-decision-brief.md +53 -0
  824. package/docs/roadmap.md +320 -9
  825. package/docs/session-mcp.md +5 -1
  826. package/docs/skills.md +23 -0
  827. package/docs/sprints/2026-10-15-s4-decision.md +73 -4
  828. package/docs/sprints/2026-10-17-token-footprint.md +130 -0
  829. package/docs/sprints/2026-10-18-s5-maintenance-orchestration.md +202 -0
  830. package/docs/sprints/2026-10-21-s6-ledger-event-bridge.md +120 -0
  831. package/docs/sprints/2026-10-24-s7-stabilization-live-acceptance.md +173 -0
  832. package/docs/sprints/2026-10-24-s8-writer-migration.md +235 -0
  833. package/docs/sprints/2026-10-26-s10-orchestration-reliability.md +250 -0
  834. package/docs/sprints/2026-10-26-s11-orchestration-gaps.md +173 -0
  835. package/docs/threat-model.md +37 -6
  836. package/docs/tool-contracts.md +91 -9
  837. package/package.json +17 -11
  838. package/scripts/isolation-acceptance.mjs +709 -0
  839. package/scripts/isolation-probe.cjs +213 -0
  840. package/skills/pi-session-implementation/SKILL.md +13 -3
  841. package/skills/pi-session-orchestration/SKILL.md +50 -13
  842. package/skills/pi-session-orchestration/references/start-errors.md +12 -0
  843. package/skills/pi-session-review/SKILL.md +13 -5
@@ -0,0 +1,232 @@
1
+ import { spawn } from "node:child_process";
2
+ import { readFile } from "node:fs/promises";
3
+ import { homedir } from "node:os";
4
+ import { dirname, join, resolve } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { isEntryPoint } from "./entry-point.js";
7
+ import { serveRefusal } from "./refusal-server.js";
8
+ import { acquireWriterLease, adoptInheritedLease, WriterLeaseError } from "./writer-lease.js";
9
+ import { ensureWriterAbsent, writerContainerName } from "./writer-fence.js";
10
+ import { createProcessRunner } from "./setup-process.js";
11
+ import { ensureWriterEventsDirectory, podmanInfo, serveArgs } from "./writer-boundary.js";
12
+ import { expiresWithin, REFRESH_INTERVAL_MS, REFRESH_THRESHOLD_MINUTES, refreshHostCredential, selectedOAuthProviders, selectBoundaryCredentials, writeBoundaryCredentials } from "./writer-credentials.js";
13
+ import { currentAcceptanceFingerprint, readWriterState, WRITER_NAME_PATTERN, writerEventDeliveryEnabled, writerPaths } from "./writer-state.js";
14
+ export { currentAcceptanceFingerprint } from "./writer-state.js";
15
+ export { renderWrapper, wrapperDigest } from "./writer-wrapper.js";
16
+ export const LAUNCHER_CLEANUP_BOUND_MS = 40_000;
17
+ function launchFailure(stage) {
18
+ process.stderr.write(JSON.stringify({ level: "error", event: "writer_launch_failed", stage, code: "writer_launch_failed" }) + "\n");
19
+ }
20
+ function eventsFailure() {
21
+ process.stderr.write(JSON.stringify({ level: "error", event: "writer_launch_failed", stage: "events", code: "events_directory_unavailable" }) + "\n");
22
+ }
23
+ export async function launchEntry(argv, deps) {
24
+ try {
25
+ return await launch(argv, deps);
26
+ }
27
+ catch {
28
+ launchFailure("entry");
29
+ return 1;
30
+ }
31
+ }
32
+ export async function launch(argv, deps) {
33
+ const name = argv[0];
34
+ if (!name || !WRITER_NAME_PATTERN.test(name)) {
35
+ await serveRefusal("writer_not_ready");
36
+ return 0;
37
+ }
38
+ const inherited = deps.env.PI_WRITER_LEASE_FD;
39
+ if (inherited !== undefined && (!Number.isSafeInteger(Number(inherited)) || Number(inherited) < 0 || String(Number(inherited)) !== inherited)) {
40
+ await serveRefusal("writer_not_ready");
41
+ return 0;
42
+ }
43
+ let lease;
44
+ try {
45
+ lease = inherited === undefined
46
+ ? await (deps.lease?.acquire ?? acquireWriterLease)(deps.home, name, { waitMs: 0 })
47
+ : await (deps.lease?.adopt ?? adoptInheritedLease)(deps.home, name, Number(inherited));
48
+ }
49
+ catch (error) {
50
+ await serveRefusal(error instanceof WriterLeaseError && error.code === "writer_busy" ? "writer_busy" : "writer_not_ready");
51
+ return 0;
52
+ }
53
+ try {
54
+ return await launchLeased(argv, deps, name, lease);
55
+ }
56
+ finally {
57
+ await lease.release();
58
+ }
59
+ }
60
+ async function launchLeased(argv, deps, name, lease) {
61
+ const refuse = async (code) => { await serveRefusal(code); return 0; };
62
+ const info = await podmanInfo(deps.runner);
63
+ if (!info.usable || !info.version)
64
+ return refuse("container_runtime_unavailable");
65
+ const paths = writerPaths(deps.home, name);
66
+ let state;
67
+ try {
68
+ state = await readWriterState(deps.home, name);
69
+ if (!state)
70
+ return refuse("writer_not_ready");
71
+ if (argv.length === 1) {
72
+ if (state.phase !== "ready" || state.acceptance?.fingerprint !== await currentAcceptanceFingerprint(paths.wrapper, state, info.version))
73
+ return refuse("writer_not_ready");
74
+ }
75
+ }
76
+ catch {
77
+ return refuse("writer_not_ready");
78
+ }
79
+ const ensureAbsent = () => (deps.ensureAbsent ?? ensureWriterAbsent)(deps.runner, paths, name, { leaseFd: lease.fd });
80
+ try {
81
+ await ensureAbsent();
82
+ }
83
+ catch {
84
+ return refuse("writer_fenced");
85
+ }
86
+ let eventsDir;
87
+ if (state.launch !== "relay" && await writerEventDeliveryEnabled(paths.config)) {
88
+ try {
89
+ eventsDir = await ensureWriterEventsDirectory(deps.home, name, (deps.uid ?? (() => process.getuid()))());
90
+ }
91
+ catch {
92
+ eventsFailure();
93
+ return refuse("writer_not_ready");
94
+ }
95
+ }
96
+ const providers = state.providers;
97
+ const names = providers.map(({ provider }) => provider);
98
+ const readHost = async () => {
99
+ try {
100
+ return JSON.parse(await readFile(join(deps.home, ".pi", "agent", "auth.json"), "utf8"));
101
+ }
102
+ catch {
103
+ return undefined;
104
+ }
105
+ };
106
+ const refresh = async () => {
107
+ const host = await readHost();
108
+ if (expiresWithin(host, names, REFRESH_THRESHOLD_MINUTES, deps.now())) {
109
+ const warmup = deps.warmupHostCredential ?? refreshHostCredential;
110
+ const authPath = join(deps.home, ".pi", "agent", "auth.json");
111
+ // In parallel, so the whole warm-up stays bounded at 20 s; Pi's locked store writes the file, never this launcher.
112
+ // A failed refresh is ignored: the copy below still runs.
113
+ await Promise.allSettled(selectedOAuthProviders(host, names).map((provider) => warmup({ authPath, provider, minOAuthValidityMs: REFRESH_THRESHOLD_MINUTES * 60_000, timeoutMs: 20_000 })));
114
+ }
115
+ await writeBoundaryCredentials(paths.agent, selectBoundaryCredentials(await readHost(), names));
116
+ };
117
+ const enabled = deps.env.PI_WRITER_NO_CREDENTIAL_REFRESH !== "1";
118
+ try {
119
+ if (enabled)
120
+ await refresh();
121
+ }
122
+ catch {
123
+ return refuse("writer_not_ready");
124
+ }
125
+ const command = argv.length > 1 ? argv.slice(1) : ["node", "/opt/pi-session-mcp/dist/main.js"];
126
+ let child;
127
+ try {
128
+ child = deps.spawnPodman(serveArgs(paths, state, command, deps.releaseRoot, eventsDir, { name }), [lease.fd]);
129
+ }
130
+ catch {
131
+ launchFailure("spawn");
132
+ await ensureAbsent();
133
+ return 1;
134
+ }
135
+ let outstanding;
136
+ let stopping = false;
137
+ const timer = enabled ? deps.setInterval(() => {
138
+ if (stopping || outstanding)
139
+ return;
140
+ outstanding = refresh().catch(() => {
141
+ process.stderr.write(JSON.stringify({ level: "warning", event: "writer_refresh_failed", code: "writer_refresh_failed" }) + "\n");
142
+ }).finally(() => { outstanding = undefined; });
143
+ }, REFRESH_INTERVAL_MS) : undefined;
144
+ let closed = false;
145
+ let exitCode = 1;
146
+ let spawnFailed = false;
147
+ let resolveClosed;
148
+ const childClosed = new Promise((resolve) => { resolveClosed = resolve; });
149
+ let cleanup;
150
+ let resolveExit;
151
+ let rejectExit;
152
+ const finished = new Promise((resolve, reject) => { resolveExit = resolve; rejectExit = reject; });
153
+ const stop = (signal) => {
154
+ if (cleanup)
155
+ return cleanup;
156
+ stopping = true;
157
+ if (timer !== undefined)
158
+ deps.clearInterval(timer);
159
+ cleanup = (async () => {
160
+ let timeout;
161
+ const bounded = new Promise((resolve) => { timeout = setTimeout(resolve, LAUNCHER_CLEANUP_BOUND_MS); });
162
+ try {
163
+ await outstanding;
164
+ await Promise.race([childClosed, bounded]);
165
+ if (!closed) {
166
+ await deps.runner.run("podman", ["rm", "-f", "-t", "0", writerContainerName(name)], AbortSignal.timeout(20_000), { inheritFds: [lease.fd] }).catch(() => undefined);
167
+ }
168
+ await ensureAbsent();
169
+ return exitCode;
170
+ }
171
+ finally {
172
+ clearTimeout(timeout);
173
+ process.off("SIGINT", interrupt);
174
+ process.off("SIGTERM", terminate);
175
+ process.off("SIGHUP", terminate);
176
+ process.stdin.off("end", endOfInput);
177
+ if (child.stdin) {
178
+ process.stdin.unpipe(child.stdin);
179
+ child.stdin.destroy();
180
+ process.stdin.pause();
181
+ }
182
+ // A wedged Podman client still retains its inherited lease, but must not pin this launcher.
183
+ if (!closed)
184
+ child.unref?.();
185
+ }
186
+ })();
187
+ void cleanup.then(resolveExit, rejectExit);
188
+ // Publish the shared cleanup promise before forwarding a signal can produce close.
189
+ if (signal && !closed)
190
+ child.kill(signal);
191
+ return cleanup;
192
+ };
193
+ const interrupt = () => { void stop("SIGINT"); };
194
+ const terminate = () => { void stop("SIGTERM"); };
195
+ // End of input is passed on through the pipe, not as a signal: a relayed server shuts down on EOF and a
196
+ // finite acceptance probe needs EOF to run at all. Cleanup starts and waits, bounded, for the child to close.
197
+ const endOfInput = () => { void stop(); };
198
+ process.on("SIGINT", interrupt);
199
+ process.on("SIGTERM", terminate);
200
+ process.on("SIGHUP", terminate);
201
+ process.stdin.once("end", endOfInput);
202
+ {
203
+ // Signal/EOF cleanup and child-exit cleanup share exactly one completion.
204
+ const complete = () => { void stop(); };
205
+ const onClose = (code, signal) => {
206
+ closed = true;
207
+ exitCode = spawnFailed ? 1 : code ?? (signal === "SIGINT" ? 130 : signal === "SIGTERM" ? 143 : 1);
208
+ resolveClosed();
209
+ complete();
210
+ };
211
+ child.once("error", () => { spawnFailed = true; launchFailure("spawn"); complete(); });
212
+ child.once("close", onClose);
213
+ // Attach before piping: EOF can arrive immediately, and must not steal MCP input.
214
+ if (child.stdin) {
215
+ // Podman can close its pipe before the host notices; cleanup still owns the fence.
216
+ child.stdin.once("error", terminate);
217
+ process.stdin.pipe(child.stdin);
218
+ }
219
+ if (process.stdin.readableEnded) {
220
+ child.stdin?.end();
221
+ endOfInput();
222
+ }
223
+ }
224
+ return finished;
225
+ }
226
+ if (isEntryPoint(import.meta.url, process.argv[1])) {
227
+ void launchEntry(process.argv.slice(2), {
228
+ home: homedir(), releaseRoot: resolve(dirname(fileURLToPath(import.meta.url)), ".."),
229
+ runner: createProcessRunner(), spawnPodman: (args, inheritFds) => spawn("podman", args, { stdio: ["pipe", "inherit", "inherit", ...inheritFds] }),
230
+ env: process.env, now: Date.now, setInterval, clearInterval,
231
+ }).then((code) => { process.exitCode = code; });
232
+ }
@@ -0,0 +1,28 @@
1
+ import { type StatfsReader } from "./setup-platform.js";
2
+ export declare const LEASE_DIRECTORY: readonly [".local", "state", "pi-session-mcp", "leases"];
3
+ export declare class WriterLeaseError extends Error {
4
+ readonly code: "writer_busy" | "writer_lease_unavailable";
5
+ constructor(code: "writer_busy" | "writer_lease_unavailable");
6
+ }
7
+ export interface WriterLease {
8
+ readonly fd: number;
9
+ release(): Promise<void>;
10
+ }
11
+ interface LeaseSeams {
12
+ readonly signal?: AbortSignal;
13
+ readonly flockCandidates?: readonly string[];
14
+ readonly isTrustedBinary?: (path: string) => boolean;
15
+ readonly readStatfs?: StatfsReader;
16
+ }
17
+ export declare function writerLeasePath(home: string, name: string): string;
18
+ export declare function acquireWriterLease(home: string, name: string, options: LeaseSeams & {
19
+ waitMs: number;
20
+ }): Promise<WriterLease>;
21
+ /**
22
+ * Adopts a descriptor a parent passed down while it holds the lease. A fresh open must find the
23
+ * lock busy before the descriptor is touched; if the holder released in between, the descriptor's
24
+ * own `flock -n` takes the lock instead, which still leaves exactly one exclusive holder. Adopt the
25
+ * same descriptor once: `release()` closes that descriptor number.
26
+ */
27
+ export declare function adoptInheritedLease(home: string, name: string, fd: number, options?: LeaseSeams): Promise<WriterLease>;
28
+ export {};
@@ -0,0 +1,140 @@
1
+ import { close, constants, fstat } from "node:fs";
2
+ import { chmod, lstat, mkdir, open } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { promisify } from "node:util";
5
+ import { flockBinary, lockWithFlock, OverrideLockError } from "./override-lock.js";
6
+ import { assertSupportedFilesystem } from "./setup-platform.js";
7
+ import { WRITER_NAME_PATTERN } from "./writer-state.js";
8
+ export const LEASE_DIRECTORY = [".local", "state", "pi-session-mcp", "leases"];
9
+ export class WriterLeaseError extends Error {
10
+ code;
11
+ constructor(code) {
12
+ super("Writer lease is not available");
13
+ this.code = code;
14
+ this.name = "WriterLeaseError";
15
+ }
16
+ }
17
+ export function writerLeasePath(home, name) {
18
+ if (!WRITER_NAME_PATTERN.test(name))
19
+ throw new WriterLeaseError("writer_lease_unavailable");
20
+ return join(home, ...LEASE_DIRECTORY, `${name}.lock`);
21
+ }
22
+ function checkFile(file) {
23
+ if (!file.isFile() || file.uid !== process.getuid() || (file.mode & 0o7777) !== 0o600) {
24
+ throw new WriterLeaseError("writer_lease_unavailable");
25
+ }
26
+ }
27
+ async function checkPath(path, descriptor) {
28
+ checkFile(descriptor);
29
+ const linked = await lstat(path);
30
+ checkFile(linked);
31
+ if (descriptor.dev !== linked.dev || descriptor.ino !== linked.ino)
32
+ throw new WriterLeaseError("writer_lease_unavailable");
33
+ }
34
+ async function prepare(home, name, options, create) {
35
+ if (process.platform !== "linux" || options.signal?.aborted)
36
+ throw new WriterLeaseError("writer_lease_unavailable");
37
+ const path = writerLeasePath(home, name);
38
+ const binary = flockBinary(options);
39
+ if (!binary)
40
+ throw new WriterLeaseError("writer_lease_unavailable");
41
+ const directory = join(home, ...LEASE_DIRECTORY);
42
+ // The umask may narrow the requested modes; a directory this call created gets its exact mode.
43
+ if (create && await mkdir(directory, { recursive: true, mode: 0o700 }) !== undefined)
44
+ await chmod(directory, 0o700);
45
+ const info = await lstat(directory);
46
+ if (!info.isDirectory() || info.uid !== process.getuid() || (info.mode & 0o7777) !== 0o700)
47
+ throw new WriterLeaseError("writer_lease_unavailable");
48
+ await assertSupportedFilesystem(directory, "linux", options.readStatfs);
49
+ return { path, binary };
50
+ }
51
+ /** Creates the file exclusively and sets its exact mode, or opens the existing one; never follows a link. */
52
+ async function openLeaseFile(path) {
53
+ try {
54
+ const created = await open(path, constants.O_NOFOLLOW | constants.O_CREAT | constants.O_EXCL | constants.O_RDWR, 0o600);
55
+ try {
56
+ await created.chmod(0o600);
57
+ }
58
+ catch (error) {
59
+ await created.close().catch(() => undefined);
60
+ throw error;
61
+ }
62
+ return created;
63
+ }
64
+ catch (error) {
65
+ if (error.code !== "EEXIST")
66
+ throw error;
67
+ return open(path, constants.O_NOFOLLOW | constants.O_RDWR);
68
+ }
69
+ }
70
+ function lease(fd, closeDescriptor) {
71
+ let released = false;
72
+ return {
73
+ fd,
74
+ async release() {
75
+ if (released)
76
+ return;
77
+ released = true;
78
+ // Never unlock explicitly: mutating children can still hold this open file description.
79
+ await closeDescriptor().catch(() => undefined);
80
+ },
81
+ };
82
+ }
83
+ export async function acquireWriterLease(home, name, options) {
84
+ let handle;
85
+ try {
86
+ if (!Number.isFinite(options.waitMs) || options.waitMs < 0)
87
+ throw new WriterLeaseError("writer_lease_unavailable");
88
+ const { path, binary } = await prepare(home, name, options, true);
89
+ handle = await openLeaseFile(path);
90
+ checkFile(await handle.stat());
91
+ await lockWithFlock(binary, handle.fd, options.waitMs, options.signal, options.waitMs === 0);
92
+ await checkPath(path, await handle.stat());
93
+ const held = handle;
94
+ return lease(held.fd, () => held.close());
95
+ }
96
+ catch (error) {
97
+ await handle?.close().catch(() => undefined);
98
+ throw new WriterLeaseError(error instanceof OverrideLockError && error.code === "override_lock_busy" ? "writer_busy" : "writer_lease_unavailable");
99
+ }
100
+ }
101
+ /**
102
+ * Adopts a descriptor a parent passed down while it holds the lease. A fresh open must find the
103
+ * lock busy before the descriptor is touched; if the holder released in between, the descriptor's
104
+ * own `flock -n` takes the lock instead, which still leaves exactly one exclusive holder. Adopt the
105
+ * same descriptor once: `release()` closes that descriptor number.
106
+ */
107
+ export async function adoptInheritedLease(home, name, fd, options = {}) {
108
+ let probe;
109
+ try {
110
+ if (!Number.isInteger(fd) || fd < 0)
111
+ throw new WriterLeaseError("writer_lease_unavailable");
112
+ const { path, binary } = await prepare(home, name, options, false);
113
+ await checkPath(path, await promisify(fstat)(fd));
114
+ probe = await open(path, constants.O_NOFOLLOW | constants.O_RDWR);
115
+ await checkPath(path, await probe.stat());
116
+ // A fresh open must be excluded BEFORE touching the inherited description; otherwise
117
+ // flock on an unlocked inherited fd would itself acquire a lock and falsely prove ownership.
118
+ let busy = false;
119
+ try {
120
+ await lockWithFlock(binary, probe.fd, 0, options.signal, true);
121
+ }
122
+ catch (error) {
123
+ if (!(error instanceof OverrideLockError) || error.code !== "override_lock_busy")
124
+ throw error;
125
+ busy = true;
126
+ }
127
+ if (!busy)
128
+ throw new WriterLeaseError("writer_lease_unavailable");
129
+ await lockWithFlock(binary, fd, 0, options.signal, true);
130
+ await checkPath(path, await promisify(fstat)(fd));
131
+ return lease(fd, () => promisify(close)(fd));
132
+ }
133
+ catch {
134
+ // Rejection does not take ownership of the caller's descriptor.
135
+ throw new WriterLeaseError("writer_lease_unavailable");
136
+ }
137
+ finally {
138
+ await probe?.close().catch(() => undefined);
139
+ }
140
+ }
@@ -0,0 +1,96 @@
1
+ import type { CommandRunner } from "./client-adapters/types.js";
2
+ import type { ContainerSettings } from "./execution-modes.js";
3
+ export interface WriterContext {
4
+ home: string;
5
+ releaseRoot: string;
6
+ nodePath: string;
7
+ runner: CommandRunner;
8
+ checkout: string;
9
+ alias: string;
10
+ leaseFd?: number;
11
+ }
12
+ export type WriterOutcome = {
13
+ code: string;
14
+ status: "ok" | "planned" | "unchanged" | "failed";
15
+ };
16
+ export declare function containedBuiltinSkills(rawConfig: unknown, overrideDirectory?: string): ReadonlySet<string>;
17
+ export declare function containedProfileRefused(rawConfig: unknown, profileName: string, availableBuiltinSkills: ReadonlySet<string>): boolean;
18
+ /**
19
+ * `overrideDirectory` is the operator's skill override directory of the host configuration. The boundary has none, so a
20
+ * `builtin:` skill resolves there only to the shipped skill: one without a shipped skill, or one the operator overrides,
21
+ * would fail to load or be replaced silently, and is refused instead (#135).
22
+ */
23
+ export declare function renderContainedConfig(alias: string, clonePath: string, rawConfig: unknown, selected: readonly string[], overrideDirectory?: string): {
24
+ events?: {
25
+ delivery: "off" | "spool";
26
+ } | undefined;
27
+ workspaces: Record<string, string>;
28
+ skillCatalog?: Record<string, string> | undefined;
29
+ executionProfiles: Record<string, {
30
+ default: boolean;
31
+ permissionProfile: "coding" | "read-only";
32
+ provider: string;
33
+ model: string;
34
+ thinkingLevel: "high" | "low" | "max" | "medium" | "minimal" | "off" | "xhigh";
35
+ mcpServers?: Readonly<Record<string, import("./mcp-config.js").McpServerConfig>> | undefined;
36
+ extensions?: string[] | undefined;
37
+ grantedExtensionTools?: string[] | undefined;
38
+ skills?: string[] | undefined;
39
+ }>;
40
+ };
41
+ /** The short branch name provisioning would record for `requested` (or its default base), normalized like the writer state. */
42
+ export declare function baseBranchName(ctx: WriterContext, requested?: string): Promise<string>;
43
+ type ProvisionInput = {
44
+ settings: ContainerSettings;
45
+ rawConfig: unknown;
46
+ overrideDirectory?: string;
47
+ };
48
+ /**
49
+ * Reconcile's check of a kept writer (#134): `undefined` while the writer matches the settings and configuration it
50
+ * would be provisioned from now; otherwise the finding, usually `writer_settings_changed`. A writer without
51
+ * provisioned state is only rendered, so the dry run shows a profile that provisioning would refuse. The image is
52
+ * resolved locally and never pulled: `podman_unavailable` when Podman cannot be asked, `image_unavailable` when it
53
+ * answers but cannot resolve the image.
54
+ */
55
+ export declare function writerSettingsDrift(ctx: WriterContext, input: ProvisionInput & {
56
+ index: number;
57
+ }): Promise<WriterOutcome | undefined>;
58
+ export declare function provisionWriter(ctx: WriterContext, input: {
59
+ index: number;
60
+ settings: ContainerSettings;
61
+ baseRef?: string;
62
+ rawConfig: unknown;
63
+ overrideDirectory?: string;
64
+ }): Promise<WriterOutcome>;
65
+ export declare function inspectWork(ctx: WriterContext, name: string): Promise<{
66
+ baseline: boolean;
67
+ digest: string;
68
+ branches: readonly {
69
+ name: string;
70
+ commit: string;
71
+ }[];
72
+ dirty: boolean;
73
+ }>;
74
+ export type CollectOutcome = WriterOutcome & {
75
+ refs: readonly string[];
76
+ refused: number;
77
+ findings: readonly {
78
+ code: "ref_name_refused";
79
+ }[];
80
+ };
81
+ export declare function collectWriter(ctx: WriterContext, name: string): Promise<CollectOutcome>;
82
+ export declare function recreateWriter(ctx: WriterContext, name: string, opts: {
83
+ discard: boolean;
84
+ baseRef?: string;
85
+ }): Promise<WriterOutcome>;
86
+ export declare function resetWriter(ctx: WriterContext, name: string, opts: {
87
+ discard: boolean;
88
+ baseRef?: string;
89
+ }): Promise<WriterOutcome>;
90
+ export declare function finishWriter(ctx: WriterContext, name: string, opts?: {
91
+ baseRef?: string;
92
+ }): Promise<WriterOutcome>;
93
+ export declare function removeWriter(ctx: WriterContext, name: string, opts: {
94
+ discard: boolean;
95
+ }): Promise<WriterOutcome>;
96
+ export {};