humanish 0.106.0 → 0.107.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 (459) hide show
  1. package/AGENTS.md +4 -2
  2. package/ARCHITECTURE.md +17 -16
  3. package/CHANGELOG.md +24 -0
  4. package/CONTEXT.md +42 -39
  5. package/CONTRIBUTING.md +8 -6
  6. package/README.md +8 -3
  7. package/dist/actors/codex/app-server-client.js +2 -1
  8. package/dist/actors/codex/app-server-trace.d.ts +0 -1
  9. package/dist/actors/codex/app-server-trace.js +1 -3
  10. package/dist/actors/codex/app-server.js +2 -1
  11. package/dist/actors/codex/protocol-compat.d.ts +27 -0
  12. package/dist/actors/codex/protocol-compat.js +357 -0
  13. package/dist/actors/codex/protocol-contract.d.ts +61 -0
  14. package/dist/actors/codex/protocol-contract.js +471 -0
  15. package/dist/actors/codex/qualified-versions.d.ts +31 -4
  16. package/dist/actors/codex/qualified-versions.js +51 -6
  17. package/dist/actors/codex/restricted-executable.d.ts +24 -0
  18. package/dist/actors/codex/restricted-executable.js +97 -22
  19. package/dist/actors/codex/restricted-launch.d.ts +7 -1
  20. package/dist/actors/codex/restricted-launch.js +42 -3
  21. package/dist/actors/codex/restricted-notifications.d.ts +101 -0
  22. package/dist/actors/codex/restricted-notifications.js +277 -0
  23. package/dist/actors/codex/restricted-participant.d.ts +30 -0
  24. package/dist/actors/codex/restricted-participant.js +60 -2
  25. package/dist/actors/codex/restricted-policy.d.ts +9 -1
  26. package/dist/actors/codex/restricted-session.d.ts +14 -1
  27. package/dist/actors/codex/restricted-session.js +50 -17
  28. package/dist/actors/codex/restricted-transport.d.ts +29 -0
  29. package/dist/actors/codex/restricted-transport.js +139 -27
  30. package/dist/actors/codex/restricted-turn.d.ts +19 -4
  31. package/dist/actors/codex/restricted-turn.js +43 -30
  32. package/dist/actors/computer-use/actor.d.ts +1 -1
  33. package/dist/actors/computer-use/actor.js +4 -4
  34. package/dist/actors/computer-use/loop/backstop.js +1 -1
  35. package/dist/actors/computer-use/loop/ending.d.ts +2 -2
  36. package/dist/actors/computer-use/loop/ending.js +2 -2
  37. package/dist/actors/computer-use/loop/spend.d.ts +1 -1
  38. package/dist/actors/computer-use/loop/spend.js +3 -3
  39. package/dist/actors/computer-use/loop/trace.js +2 -2
  40. package/dist/actors/computer-use/loop/types.d.ts +14 -5
  41. package/dist/actors/computer-use/loop.js +4 -4
  42. package/dist/actors/computer-use/openai-provider.d.ts +1 -1
  43. package/dist/actors/computer-use/openai-provider.js +2 -2
  44. package/dist/actors/contract.d.ts +10 -8
  45. package/dist/actors/contract.js +7 -1
  46. package/dist/actors/local-agent/cli.js +1 -1
  47. package/dist/actors/scripted-browser/actor.d.ts +2 -2
  48. package/dist/actors/scripted-browser/journey.js +15 -4
  49. package/dist/actors/scripted-browser/steps.js +18 -0
  50. package/dist/actors/scripted-browser/types.d.ts +11 -1
  51. package/dist/actors/stop-conditions.js +1 -3
  52. package/dist/analysis/automatic-completion.d.ts +13 -8
  53. package/dist/analysis/automatic-completion.js +14 -8
  54. package/dist/analysis/automatic-config.d.ts +1 -1
  55. package/dist/analysis/automatic-config.js +2 -2
  56. package/dist/analysis/automatic.d.ts +10 -4
  57. package/dist/analysis/automatic.js +17 -13
  58. package/dist/analysis/diagnostics.d.ts +23 -0
  59. package/dist/analysis/diagnostics.js +112 -0
  60. package/dist/analysis/evidence-sources.js +2 -2
  61. package/dist/analysis/evidence.js +6 -6
  62. package/dist/analysis/execute.d.ts +7 -1
  63. package/dist/analysis/execute.js +39 -12
  64. package/dist/analysis/job.d.ts +8 -5
  65. package/dist/analysis/job.js +15 -14
  66. package/dist/analysis/load.d.ts +1 -1
  67. package/dist/analysis/load.js +5 -5
  68. package/dist/analysis/provider.d.ts +9 -1
  69. package/dist/analysis/restricted-codex.d.ts +2 -0
  70. package/dist/analysis/restricted-codex.js +10 -1
  71. package/dist/analysis/service.d.ts +2 -0
  72. package/dist/analysis/service.js +31 -12
  73. package/dist/analysis/sharing.d.ts +2 -2
  74. package/dist/analysis/sharing.js +5 -5
  75. package/dist/analysis/store-executions.d.ts +5 -5
  76. package/dist/analysis/store-executions.js +12 -12
  77. package/dist/analysis/store.d.ts +4 -4
  78. package/dist/analysis/store.js +13 -13
  79. package/dist/cli/commands/analysis-signals.d.ts +2 -1
  80. package/dist/cli/commands/analysis-signals.js +4 -1
  81. package/dist/cli/commands/analyze.js +4 -2
  82. package/dist/cli/commands/comms.js +8 -1
  83. package/dist/cli/commands/lab-route-computer-use.d.ts +0 -2
  84. package/dist/cli/commands/lab-route-computer-use.js +26 -14
  85. package/dist/cli/commands/lab-route-preview.d.ts +1 -3
  86. package/dist/cli/commands/lab-route-preview.js +3 -4
  87. package/dist/cli/commands/lab-route-run.d.ts +6 -4
  88. package/dist/cli/commands/lab-route-run.js +6 -2
  89. package/dist/cli/commands/lab-route-scripted.d.ts +0 -2
  90. package/dist/cli/commands/lab-route-scripted.js +0 -1
  91. package/dist/cli/commands/lab-route-shared-world.d.ts +0 -2
  92. package/dist/cli/commands/lab-route-shared-world.js +0 -1
  93. package/dist/cli/commands/lab-route-terminal.d.ts +0 -2
  94. package/dist/cli/commands/lab-route-terminal.js +0 -1
  95. package/dist/cli/commands/lab-run.js +76 -45
  96. package/dist/cli/commands/lab-scorer.d.ts +0 -2
  97. package/dist/cli/commands/lab.js +12 -6
  98. package/dist/cli/commands/observe.js +22 -0
  99. package/dist/cli/commands/run-signals.d.ts +30 -0
  100. package/dist/cli/commands/run-signals.js +146 -0
  101. package/dist/cli/commands/runs.js +10 -8
  102. package/dist/cli/commands/watch.js +12 -10
  103. package/dist/cli/doctor.d.ts +3 -0
  104. package/dist/cli/doctor.js +10 -2
  105. package/dist/cli/io.d.ts +5 -4
  106. package/dist/cli/io.js +12 -8
  107. package/dist/cli/program.js +3 -3
  108. package/dist/cli/renamed-options.d.ts +11 -0
  109. package/dist/cli/renamed-options.js +18 -0
  110. package/dist/cli/telemetry.d.ts +2 -2
  111. package/dist/cli/telemetry.js +1 -1
  112. package/dist/comms/capture-surface.d.ts +1 -1
  113. package/dist/comms/catch-host.d.ts +1 -1
  114. package/dist/comms/connections.js +4 -4
  115. package/dist/comms/external-evidence.d.ts +27 -0
  116. package/dist/comms/external-evidence.js +93 -0
  117. package/dist/comms/lease-store.js +7 -7
  118. package/dist/comms/types.js +1 -1
  119. package/dist/evidence/browser-hygiene.d.ts +1 -1
  120. package/dist/evidence/browser-hygiene.js +1 -1
  121. package/dist/evidence/redaction.js +1 -1
  122. package/dist/evidence/secret-scrub.d.ts +9 -0
  123. package/dist/evidence/secret-scrub.js +96 -0
  124. package/dist/feedback/draft.js +7 -9
  125. package/dist/feedback/export-bundle.js +4 -4
  126. package/dist/feedback/export.js +9 -9
  127. package/dist/feedback/feedback.d.ts +1 -1
  128. package/dist/index.d.ts +3 -6
  129. package/dist/index.js +3 -6
  130. package/dist/keys/key-resolution.d.ts +3 -1
  131. package/dist/keys/key-resolution.js +18 -16
  132. package/dist/lab/adapter-extension.d.ts +28 -6
  133. package/dist/lab/adapter-extension.js +65 -126
  134. package/dist/lab/adapter-scorer-loader.d.ts +25 -5
  135. package/dist/lab/adapter-scorer-loader.js +24 -0
  136. package/dist/lab/composition-rules.d.ts +2 -0
  137. package/dist/lab/composition-rules.js +35 -26
  138. package/dist/lab/config.js +28 -26
  139. package/dist/lab/device-presets.d.ts +2 -2
  140. package/dist/lab/discover.js +1 -3
  141. package/dist/lab/doctor.d.ts +44 -9
  142. package/dist/lab/doctor.js +149 -41
  143. package/dist/lab/init-plan.js +1 -3
  144. package/dist/lab/keys.js +1 -1
  145. package/dist/lab/lab-deps.d.ts +85 -0
  146. package/dist/lab/lab-deps.js +4 -0
  147. package/dist/lab/parse/actors.js +8 -7
  148. package/dist/lab/parse/comms.js +3 -2
  149. package/dist/lab/parse/execution.js +3 -2
  150. package/dist/lab/parse/subject-state.js +2 -1
  151. package/dist/lab/parse/subject.js +2 -1
  152. package/dist/lab/parse/values.d.ts +0 -1
  153. package/dist/lab/parse/values.js +0 -3
  154. package/dist/lab/persona-resolve.d.ts +3 -3
  155. package/dist/lab/persona-resolve.js +4 -4
  156. package/dist/lab/persona.js +1 -3
  157. package/dist/lab/plan-base.d.ts +6 -2
  158. package/dist/lab/plan-base.js +22 -7
  159. package/dist/lab/plan-participants.d.ts +5 -5
  160. package/dist/lab/plan-participants.js +2 -2
  161. package/dist/lab/plan-types.d.ts +33 -7
  162. package/dist/lab/plan.d.ts +3 -11
  163. package/dist/lab/plan.js +18 -42
  164. package/dist/lab/preflight-result.js +0 -2
  165. package/dist/lab/preflight.d.ts +0 -3
  166. package/dist/lab/preflight.js +1 -1
  167. package/dist/lab/requirements.d.ts +20 -0
  168. package/dist/lab/requirements.js +54 -0
  169. package/dist/lab/route-inputs.d.ts +23 -12
  170. package/dist/lab/route-inputs.js +48 -51
  171. package/dist/lab/routing.d.ts +19 -24
  172. package/dist/lab/routing.js +14 -47
  173. package/dist/lab/run-lab-events.d.ts +6 -11
  174. package/dist/lab/run-lab-events.js +3 -11
  175. package/dist/lab/run-lab-homes.d.ts +64 -0
  176. package/dist/lab/run-lab-homes.js +3 -0
  177. package/dist/lab/run-lab-options.d.ts +12 -66
  178. package/dist/lab/run-lab-options.js +45 -275
  179. package/dist/lab/summary.d.ts +9 -4
  180. package/dist/lab/summary.js +15 -8
  181. package/dist/lab/types.d.ts +132 -132
  182. package/dist/lab/validation.d.ts +15 -15
  183. package/dist/lab/validation.js +28 -28
  184. package/dist/lab/warnings.js +20 -19
  185. package/dist/observer/artifact.d.ts +1 -1
  186. package/dist/observer/artifact.js +3 -3
  187. package/dist/observer/data.js +2 -2
  188. package/dist/observer/render.js +2 -2
  189. package/dist/observer/run-routes.d.ts +1 -1
  190. package/dist/observer/run-routes.js +5 -5
  191. package/dist/observer/serve.d.ts +17 -0
  192. package/dist/observer/serve.js +34 -3
  193. package/dist/observer-app.html +1 -1
  194. package/dist/routes/computer-use/bundle-parts.d.ts +1 -1
  195. package/dist/routes/computer-use/bundle-parts.js +10 -3
  196. package/dist/routes/computer-use/bundle.d.ts +4 -11
  197. package/dist/routes/computer-use/bundle.js +9 -15
  198. package/dist/routes/computer-use/diagnostics.d.ts +1 -1
  199. package/dist/routes/computer-use/diagnostics.js +1 -1
  200. package/dist/routes/computer-use/e2b-desktop/comms.d.ts +10 -10
  201. package/dist/routes/computer-use/e2b-desktop/comms.js +11 -14
  202. package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +2 -2
  203. package/dist/routes/computer-use/e2b-desktop/desktop.js +4 -7
  204. package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +13 -13
  205. package/dist/routes/computer-use/e2b-desktop/fidelity.js +11 -11
  206. package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +3 -3
  207. package/dist/routes/computer-use/e2b-desktop/prepare.js +33 -36
  208. package/dist/routes/computer-use/e2b-desktop/start.d.ts +1 -1
  209. package/dist/routes/computer-use/e2b-desktop/start.js +24 -23
  210. package/dist/routes/computer-use/e2b-desktop/state.d.ts +5 -4
  211. package/dist/routes/computer-use/e2b-desktop/state.js +5 -3
  212. package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +1 -1
  213. package/dist/routes/computer-use/e2b-desktop/teardown.js +29 -17
  214. package/dist/routes/computer-use/external-comms.d.ts +4 -4
  215. package/dist/routes/computer-use/external-comms.js +19 -43
  216. package/dist/routes/computer-use/fanout-bundle.d.ts +3 -3
  217. package/dist/routes/computer-use/fanout-bundle.js +25 -29
  218. package/dist/routes/computer-use/{fanout-lanes.js → fanout-records.js} +25 -19
  219. package/dist/routes/computer-use/in-process-desktop.d.ts +3 -10
  220. package/dist/routes/computer-use/in-process-desktop.js +3 -9
  221. package/dist/routes/computer-use/live-flush.d.ts +7 -5
  222. package/dist/routes/computer-use/live-flush.js +19 -27
  223. package/dist/routes/computer-use/{run-lanes.js → live-phase.js} +14 -13
  224. package/dist/routes/computer-use/local-tree-pack.d.ts +3 -3
  225. package/dist/routes/computer-use/local-tree-pack.js +4 -5
  226. package/dist/routes/computer-use/local-vm.d.ts +11 -8
  227. package/dist/routes/computer-use/local-vm.js +39 -66
  228. package/dist/routes/computer-use/participant-desktop.d.ts +8 -23
  229. package/dist/routes/computer-use/participant-desktop.js +5 -25
  230. package/dist/routes/computer-use/{lanes.d.ts → participant-execution.d.ts} +10 -10
  231. package/dist/routes/computer-use/{lanes.js → participant-execution.js} +35 -22
  232. package/dist/routes/computer-use/participant-facts.d.ts +7 -1
  233. package/dist/routes/computer-use/participant-facts.js +12 -1
  234. package/dist/routes/computer-use/participant-model.d.ts +19 -11
  235. package/dist/routes/computer-use/participant-model.js +58 -33
  236. package/dist/routes/computer-use/participant-prompt.d.ts +3 -3
  237. package/dist/routes/computer-use/participant-prompt.js +4 -4
  238. package/dist/routes/computer-use/participant-runs.d.ts +6 -6
  239. package/dist/routes/computer-use/participant-runs.js +8 -8
  240. package/dist/routes/computer-use/plan.d.ts +21 -29
  241. package/dist/routes/computer-use/plan.js +59 -65
  242. package/dist/routes/computer-use/preflight.d.ts +6 -11
  243. package/dist/routes/computer-use/preflight.js +26 -18
  244. package/dist/routes/computer-use/rerun-selection.js +10 -6
  245. package/dist/routes/computer-use/result.d.ts +1 -1
  246. package/dist/routes/computer-use/result.js +40 -30
  247. package/dist/routes/computer-use/route.d.ts +3 -4
  248. package/dist/routes/computer-use/route.js +21 -19
  249. package/dist/routes/computer-use/self-report.d.ts +2 -2
  250. package/dist/routes/computer-use/self-report.js +4 -4
  251. package/dist/routes/computer-use/setup.d.ts +8 -17
  252. package/dist/routes/computer-use/setup.js +98 -86
  253. package/dist/routes/computer-use/single-bundle.d.ts +8 -11
  254. package/dist/routes/computer-use/single-bundle.js +20 -25
  255. package/dist/routes/computer-use/subject-projection.d.ts +5 -7
  256. package/dist/routes/computer-use/subject-projection.js +20 -19
  257. package/dist/routes/computer-use/types.d.ts +169 -211
  258. package/dist/routes/computer-use/types.js +13 -6
  259. package/dist/routes/preview.js +0 -1
  260. package/dist/routes/scripted/bundle.d.ts +3 -6
  261. package/dist/routes/scripted/bundle.js +11 -16
  262. package/dist/routes/scripted/plan.d.ts +5 -7
  263. package/dist/routes/scripted/plan.js +6 -4
  264. package/dist/routes/scripted/result.d.ts +4 -1
  265. package/dist/routes/scripted/result.js +10 -6
  266. package/dist/routes/scripted/route.js +10 -11
  267. package/dist/routes/scripted/scenario.d.ts +1 -1
  268. package/dist/routes/scripted/scenario.js +1 -1
  269. package/dist/routes/scripted/setup.d.ts +3 -2
  270. package/dist/routes/scripted/setup.js +22 -21
  271. package/dist/routes/scripted/subject.d.ts +8 -3
  272. package/dist/routes/scripted/subject.js +11 -6
  273. package/dist/routes/scripted/surface-records.js +1 -1
  274. package/dist/routes/scripted/surface-sessions.d.ts +2 -2
  275. package/dist/routes/scripted/surface-sessions.js +4 -4
  276. package/dist/routes/scripted/types.d.ts +19 -36
  277. package/dist/routes/scripted/types.js +1 -2
  278. package/dist/routes/shared-world/{seat-records.js → bundle-records.js} +8 -8
  279. package/dist/routes/shared-world/bundle.d.ts +2 -2
  280. package/dist/routes/shared-world/bundle.js +22 -26
  281. package/dist/routes/shared-world/checkpoints.d.ts +4 -4
  282. package/dist/routes/shared-world/checkpoints.js +4 -4
  283. package/dist/routes/shared-world/comms.d.ts +5 -4
  284. package/dist/routes/shared-world/comms.js +28 -41
  285. package/dist/routes/shared-world/external-public.d.ts +5 -5
  286. package/dist/routes/shared-world/external-public.js +19 -20
  287. package/dist/routes/shared-world/handoff.d.ts +4 -4
  288. package/dist/routes/shared-world/handoff.js +50 -50
  289. package/dist/routes/shared-world/lobby-code.d.ts +5 -5
  290. package/dist/routes/shared-world/lobby-code.js +13 -13
  291. package/dist/routes/shared-world/{seats.d.ts → participant-specs.d.ts} +8 -6
  292. package/dist/routes/shared-world/{seats.js → participant-specs.js} +46 -51
  293. package/dist/routes/shared-world/plan.d.ts +2 -6
  294. package/dist/routes/shared-world/plan.js +1 -2
  295. package/dist/routes/shared-world/provenance.d.ts +4 -4
  296. package/dist/routes/shared-world/provenance.js +4 -4
  297. package/dist/routes/shared-world/provisioned.d.ts +3 -2
  298. package/dist/routes/shared-world/provisioned.js +48 -41
  299. package/dist/routes/shared-world/result.js +31 -19
  300. package/dist/routes/shared-world/route.js +37 -41
  301. package/dist/routes/shared-world/setup.d.ts +5 -4
  302. package/dist/routes/shared-world/setup.js +12 -14
  303. package/dist/routes/shared-world/types.d.ts +53 -126
  304. package/dist/routes/shared-world/types.js +2 -2
  305. package/dist/routes/terminal/adapter.d.ts +8 -8
  306. package/dist/routes/terminal/adapter.js +28 -125
  307. package/dist/routes/terminal/bundle.d.ts +7 -12
  308. package/dist/routes/terminal/bundle.js +24 -34
  309. package/dist/routes/terminal/credentials.d.ts +2 -2
  310. package/dist/routes/terminal/credentials.js +16 -16
  311. package/dist/routes/terminal/dry-run.d.ts +1 -1
  312. package/dist/routes/terminal/dry-run.js +9 -11
  313. package/dist/routes/terminal/encoding.d.ts +1 -1
  314. package/dist/routes/terminal/encoding.js +2 -2
  315. package/dist/routes/terminal/ledger.d.ts +6 -6
  316. package/dist/routes/terminal/ledger.js +9 -9
  317. package/dist/routes/terminal/live-finish.d.ts +1 -2
  318. package/dist/routes/terminal/live-finish.js +21 -20
  319. package/dist/routes/terminal/live-sandbox.d.ts +4 -2
  320. package/dist/routes/terminal/live-sandbox.js +25 -21
  321. package/dist/routes/terminal/participant-text.d.ts +23 -0
  322. package/dist/routes/terminal/participant-text.js +165 -0
  323. package/dist/routes/terminal/plan.d.ts +2 -6
  324. package/dist/routes/terminal/plan.js +13 -9
  325. package/dist/routes/terminal/recorder.d.ts +6 -1
  326. package/dist/routes/terminal/recorder.js +12 -4
  327. package/dist/routes/terminal/result.js +4 -4
  328. package/dist/routes/terminal/route.js +26 -26
  329. package/dist/routes/terminal/runtime.d.ts +3 -2
  330. package/dist/routes/terminal/runtime.js +3 -3
  331. package/dist/routes/terminal/sandbox.d.ts +5 -3
  332. package/dist/routes/terminal/sandbox.js +13 -16
  333. package/dist/routes/terminal/session.js +16 -14
  334. package/dist/routes/terminal/token-usage.js +5 -5
  335. package/dist/routes/terminal/trace.d.ts +5 -8
  336. package/dist/routes/terminal/trace.js +9 -64
  337. package/dist/routes/terminal/types.d.ts +85 -93
  338. package/dist/routes/terminal/types.js +9 -4
  339. package/dist/run/active-runs.d.ts +13 -0
  340. package/dist/run/active-runs.js +12 -0
  341. package/dist/run/bundle-shape.d.ts +2 -1
  342. package/dist/run/bundle-shape.js +4 -4
  343. package/dist/run/bundle.d.ts +63 -56
  344. package/dist/run/bundle.js +9 -8
  345. package/dist/run/cost-summary.js +3 -2
  346. package/dist/run/costs.d.ts +6 -6
  347. package/dist/run/costs.js +10 -10
  348. package/dist/run/detail.d.ts +5 -5
  349. package/dist/run/detail.js +6 -6
  350. package/dist/run/dry-run.js +5 -12
  351. package/dist/run/{study-files.d.ts → evidence-files.d.ts} +4 -4
  352. package/dist/run/{study-files.js → evidence-files.js} +5 -5
  353. package/dist/run/feedback-shape.js +1 -1
  354. package/dist/run/judge.d.ts +16 -4
  355. package/dist/run/judge.js +24 -7
  356. package/dist/run/locate.d.ts +2 -0
  357. package/dist/run/locate.js +3 -1
  358. package/dist/run/outcomes.d.ts +3 -3
  359. package/dist/run/outcomes.js +3 -3
  360. package/dist/run/participant-records.d.ts +2 -2
  361. package/dist/run/participant-records.js +2 -2
  362. package/dist/run/paths.js +1 -1
  363. package/dist/run/pricing.d.ts +19 -9
  364. package/dist/run/pricing.js +30 -18
  365. package/dist/run/projection.d.ts +13 -13
  366. package/dist/run/projection.js +8 -8
  367. package/dist/run/reclaim.d.ts +7 -1
  368. package/dist/run/reclaim.js +24 -4
  369. package/dist/run/results.d.ts +1 -1
  370. package/dist/run/run-index.d.ts +1 -1
  371. package/dist/run/run-index.js +11 -11
  372. package/dist/run/run.d.ts +4 -2
  373. package/dist/run/run.js +9 -5
  374. package/dist/run/sandbox-receipts.d.ts +4 -4
  375. package/dist/run/sandbox-receipts.js +4 -4
  376. package/dist/run/shared-world-evidence.d.ts +47 -47
  377. package/dist/run/shared-world-shape.d.ts +3 -3
  378. package/dist/run/shared-world-shape.js +11 -11
  379. package/dist/run/stats.d.ts +5 -5
  380. package/dist/run/stats.js +8 -8
  381. package/dist/run/status.d.ts +16 -6
  382. package/dist/run/status.js +31 -8
  383. package/dist/run/streams.d.ts +26 -19
  384. package/dist/run/terminal-contract.d.ts +5 -5
  385. package/dist/run/terminal-contract.js +4 -4
  386. package/dist/run/transient-comms-secrets.d.ts +5 -0
  387. package/dist/run/transient-comms-secrets.js +12 -0
  388. package/dist/run-lab.d.ts +36 -34
  389. package/dist/run-lab.js +41 -37
  390. package/dist/subject/desktop-cli.d.ts +1 -1
  391. package/dist/subject/desktop-cli.js +1 -1
  392. package/dist/subject/local-tree-archive.d.ts +1 -1
  393. package/dist/subject/local-tree-archive.js +4 -4
  394. package/dist/subject/local-tree.d.ts +2 -2
  395. package/dist/subject/local-tree.js +1 -1
  396. package/dist/subject/node-bootstrap.d.ts +1 -1
  397. package/dist/subject/node-bootstrap.js +4 -4
  398. package/dist/subject/runtime.js +5 -5
  399. package/dist/subject/serve.js +1 -1
  400. package/dist/subject/steps.d.ts +4 -4
  401. package/dist/subject/steps.js +5 -5
  402. package/dist/substrates/desktop-session.d.ts +2 -0
  403. package/dist/substrates/e2b/cdp-probe.d.ts +2 -2
  404. package/dist/substrates/e2b/cdp-probe.js +1 -1
  405. package/dist/substrates/e2b/desktop-browser.d.ts +3 -3
  406. package/dist/substrates/e2b/desktop-browser.js +4 -4
  407. package/dist/substrates/e2b/desktop-cdp.d.ts +7 -7
  408. package/dist/substrates/e2b/desktop-cdp.js +4 -4
  409. package/dist/substrates/e2b/desktop-geometry.d.ts +4 -4
  410. package/dist/substrates/e2b/desktop-geometry.js +3 -3
  411. package/dist/substrates/e2b/desktop-media.js +2 -2
  412. package/dist/substrates/e2b/sandbox.d.ts +2 -0
  413. package/dist/substrates/e2b/sandbox.js +22 -8
  414. package/dist/substrates/e2b/sdk.d.ts +12 -1
  415. package/dist/substrates/e2b/sdk.js +30 -9
  416. package/dist/substrates/local/runtime-host.d.ts +2 -0
  417. package/dist/substrates/local/runtime-host.js +6 -0
  418. package/dist/tui/actions.d.ts +7 -5
  419. package/dist/tui/actions.js +18 -9
  420. package/dist/tui-app.js +42 -42
  421. package/dist/verify/actor.d.ts +10 -10
  422. package/dist/verify/actor.js +15 -15
  423. package/dist/verify/artifacts.d.ts +1 -1
  424. package/dist/verify/artifacts.js +3 -3
  425. package/dist/verify/costs.d.ts +2 -2
  426. package/dist/verify/costs.js +2 -2
  427. package/dist/verify/liveness.d.ts +1 -1
  428. package/dist/verify/liveness.js +4 -1
  429. package/dist/verify/rerun.d.ts +1 -1
  430. package/dist/verify/rerun.js +1 -1
  431. package/dist/verify/shared-world.js +2 -2
  432. package/dist/verify/verify.js +6 -6
  433. package/docs/README.md +1 -1
  434. package/docs/architecture/actor-contract.md +60 -22
  435. package/docs/architecture/desktop-sessions.md +9 -9
  436. package/docs/architecture/external-public-shared-world.md +5 -0
  437. package/docs/architecture/observer.md +4 -4
  438. package/docs/architecture/restricted-codex-analysis.md +40 -4
  439. package/docs/architecture/state-driven-executor.md +4 -5
  440. package/docs/architecture/task-protocol-support.md +3 -5
  441. package/docs/architecture/{terminal-product-lane.md → terminal-product-route.md} +24 -16
  442. package/docs/contracts/run-bundle.md +10 -8
  443. package/docs/contracts/schemas.md +109 -53
  444. package/docs/contracts/study-analysis.md +24 -0
  445. package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +2 -1
  446. package/docs/product/automatic-analysis.md +1 -0
  447. package/docs/ramp/README.md +2 -1
  448. package/package.json +4 -4
  449. package/skills/humanish/SKILL.md +3 -2
  450. package/skills/humanish/agents/openai.yaml +1 -1
  451. package/dist/deprecated.d.ts +0 -90
  452. package/dist/deprecated.js +0 -106
  453. package/dist/lab/bag-overrides.d.ts +0 -18
  454. package/dist/lab/bag-overrides.js +0 -121
  455. package/dist/routes/computer-use/legacy-lane-spec.d.ts +0 -62
  456. package/dist/routes/computer-use/legacy-lane-spec.js +0 -39
  457. /package/dist/routes/computer-use/{fanout-lanes.d.ts → fanout-records.d.ts} +0 -0
  458. /package/dist/routes/computer-use/{run-lanes.d.ts → live-phase.d.ts} +0 -0
  459. /package/dist/routes/shared-world/{seat-records.d.ts → bundle-records.d.ts} +0 -0
@@ -3,8 +3,7 @@ import type { SubjectPhaseEvent } from "../../subject/steps.js";
3
3
  import type { DesktopBrowserEvidence } from "../../substrates/e2b/desktop-browser.js";
4
4
  import type { ActorPersonaRef } from "../../actors/contract.js";
5
5
  import type { CuaLoopResult } from "../../actors/computer-use/loop.js";
6
- import { type RunLabProvenance } from "../../run/status.js";
7
- import { type RunBundle, type RunFeedbackCandidate, type RunProviderResource } from "../../run/bundle.js";
6
+ import { type BundleRun, type RunBundle, type RunFeedbackCandidate, type RunProviderResource } from "../../run/bundle.js";
8
7
  import { type RunDesktopGeometry, type RunStream } from "../../run/streams.js";
9
8
  import { type Verdict } from "../../run/judge.js";
10
9
  import { type DesktopUsage } from "../../run/cost-summary.js";
@@ -17,8 +16,8 @@ export declare function buildSingleParticipantBundle(args: {
17
16
  /** The run's verdict, from the judge. */
18
17
  verdict: Verdict;
19
18
  realEmail?: boolean;
20
- /** Lab provenance for the bundle's own `lab` field (#455). */
21
- lab?: RunLabProvenance;
19
+ /** The run this bundle belongs to; the bundle head reads its id, mode, start and lab. */
20
+ run: BundleRun;
22
21
  actorId: string;
23
22
  appUrl: string;
24
23
  /** The participant's plan id, saved as the stream's laneId ("lane-01" when absent). */
@@ -26,7 +25,6 @@ export declare function buildSingleParticipantBundle(args: {
26
25
  actorType?: string;
27
26
  surface?: string;
28
27
  caseGroup?: string;
29
- createdAt: string;
30
28
  dryRun: boolean;
31
29
  labId: string;
32
30
  labTitle?: string;
@@ -44,7 +42,6 @@ export declare function buildSingleParticipantBundle(args: {
44
42
  /** Device-preset touch metadata echoed on the measured stream viewport (a prompt signal on
45
43
  * this route, never a rendered claim); the measured width/height/DPR stay authoritative. */
46
44
  isMobile?: boolean;
47
- runId: string;
48
45
  screenshots: string[];
49
46
  /** Relative run-dir path of the digest-only comms-thread evidence artifact (humanish.comms-thread.v1),
50
47
  * when a comms lab captured mail; registered as a "log" stream artifact. */
@@ -59,10 +56,10 @@ export declare function buildSingleParticipantBundle(args: {
59
56
  session?: CuaLoopResult;
60
57
  sessionError?: string;
61
58
  /**
62
- * The lane's own credibility read of a goal_satisfied session (#476). The actor's status is
63
- * evidence of what it CLAIMED; whether the harness counts the claim is decided by the lane
59
+ * The route's own credibility read of a goal_satisfied session (#476). The actor's status is
60
+ * evidence of what it CLAIMED; whether the harness counts the claim is decided by the route
64
61
  * (zero engagement, a final message that describes a blocker). The review has to say the same
65
- * thing the lane's exit code says, or the durable bundle reports a participant reaching the
62
+ * thing the participant's exit code says, or the durable bundle reports a participant reaching the
66
63
  * goal on a run the harness refused to count.
67
64
  */
68
65
  credibility?: {
@@ -80,7 +77,7 @@ export declare function buildSingleParticipantBundle(args: {
80
77
  * declared honestly as caller-provisioned/unpinned with no E2B. Absent: a plain app-url entry.
81
78
  */
82
79
  entryKind?: "local-app";
83
- /** The custom E2B desktop template (image) this lane launched on, when configured (provenance). */
80
+ /** The custom E2B desktop template (image) this participant launched on, when configured (provenance). */
84
81
  desktopTemplate?: string;
85
82
  /** The configured browser choice and the command that opened, when explicitly configured. */
86
83
  desktopBrowser?: DesktopBrowserEvidence;
@@ -90,7 +87,7 @@ export declare function buildSingleParticipantBundle(args: {
90
87
  /** Completed subject-phase records (clone/upload/extract/install/build/ready/state groups)
91
88
  * to fold into bundle.events, so run.json carries real phase timing after the fact. */
92
89
  phaseEvents?: SubjectPhaseEvent[];
93
- /** Host-side E2B desktop billed span for this lane, in minutes (from ParticipantRunOutcome
90
+ /** Host-side E2B desktop billed span for this participant, in minutes (from ParticipantRunOutcome
94
91
  * desktopDurationMs). Absent when no sandbox ran (in-process/dry-run) → no desktop cost line. */
95
92
  desktopMinutes?: number;
96
93
  desktopUsage?: DesktopUsage;
@@ -1,6 +1,5 @@
1
1
  import { participantAssignment } from "../../lab/participant-assignment.js";
2
2
  import { redactText } from "../../evidence/redaction.js";
3
- import {} from "../../run/status.js";
4
3
  import { REVIEW_SCHEMA, bundleArtifacts, bundleHead, } from "../../run/bundle.js";
5
4
  import {} from "../../run/streams.js";
6
5
  import { aggregateTaskFunnels, tallyParticipantOutcomes, withCuaReviewProvenance, } from "../../run/outcomes.js";
@@ -94,8 +93,8 @@ function singleSimulation(args, view) {
94
93
  : args.sessionError !== undefined
95
94
  ? `Computer-use lab failed before a terminal session verdict: ${args.sessionError}`
96
95
  : `Contract participant for the computer-use actor (${args.actorId}) against ${publicAppUrl}.`,
97
- startedAt: args.createdAt,
98
- updatedAt: args.createdAt,
96
+ startedAt: args.run.createdAt,
97
+ updatedAt: args.run.createdAt,
99
98
  });
100
99
  }
101
100
  function singleStream(args, view) {
@@ -111,7 +110,7 @@ function singleStream(args, view) {
111
110
  label: `CUA browser — ${args.labId}`,
112
111
  status,
113
112
  transport: "snapshot",
114
- updatedAt: args.createdAt,
113
+ updatedAt: args.run.createdAt,
115
114
  embed: lastScreenshot
116
115
  ? { kind: "screenshot", url: lastScreenshot, title: `CUA desktop (${screenshotMode})` }
117
116
  : { kind: "placeholder", title: "CUA desktop" },
@@ -162,7 +161,7 @@ function singleEvents(args, view) {
162
161
  const events = [
163
162
  {
164
163
  id: "event-000-created",
165
- at: args.createdAt,
164
+ at: args.run.createdAt,
166
165
  level: "info",
167
166
  type: "cua-lab.run.created",
168
167
  message: `Created computer-use lab run for ${args.labId} (actor ${args.actorId}).`,
@@ -170,7 +169,7 @@ function singleEvents(args, view) {
170
169
  args.subjectProvenance
171
170
  ? participantEvent(SINGLE, {
172
171
  id: "event-001-subject",
173
- at: args.createdAt,
172
+ at: args.run.createdAt,
174
173
  level: "info",
175
174
  type: "cua-lab.subject.provenance",
176
175
  // HONEST WORDING: claim "cloned/packed and served" only when it actually happened.
@@ -178,7 +177,7 @@ function singleEvents(args, view) {
178
177
  })
179
178
  : participantEvent(SINGLE, {
180
179
  id: "event-001-subject",
181
- at: args.createdAt,
180
+ at: args.run.createdAt,
182
181
  level: "info",
183
182
  type: "cua-lab.subject.declared",
184
183
  // Invariant 5: declare what the subject WAS, including the ABSENCE of a pin. A
@@ -195,7 +194,7 @@ function singleEvents(args, view) {
195
194
  args.session
196
195
  ? participantEvent(SINGLE, {
197
196
  id: "event-002-session",
198
- at: args.createdAt,
197
+ at: args.run.createdAt,
199
198
  level: args.session.status === "passed" ? "info" : "warn",
200
199
  type: `cua-lab.session.${args.session.completionReason}`,
201
200
  message: `${args.session.status}: ${args.session.reason}`,
@@ -203,7 +202,7 @@ function singleEvents(args, view) {
203
202
  : args.inProgress === true
204
203
  ? participantEvent(SINGLE, {
205
204
  id: "event-002-running",
206
- at: args.createdAt,
205
+ at: args.run.createdAt,
207
206
  level: "info",
208
207
  type: "cua-lab.session.running",
209
208
  message: "Live computer-use session is running; terminal evidence has not been written yet.",
@@ -211,14 +210,14 @@ function singleEvents(args, view) {
211
210
  : args.sessionError !== undefined
212
211
  ? participantEvent(SINGLE, {
213
212
  id: "event-002-session",
214
- at: args.createdAt,
213
+ at: args.run.createdAt,
215
214
  level: "error",
216
215
  type: "cua-lab.session.error",
217
216
  message: args.sessionError,
218
217
  })
219
218
  : participantEvent(SINGLE, {
220
219
  id: "event-002-contract",
221
- at: args.createdAt,
220
+ at: args.run.createdAt,
222
221
  level: "info",
223
222
  type: "cua-lab.contract.ready",
224
223
  message: "Dry-run contract bundle ready; switch scenario.mode to live for a real desktop session.",
@@ -242,7 +241,7 @@ function singleEvents(args, view) {
242
241
  for (const warning of desktopGeometry?.warnings ?? []) {
243
242
  record({
244
243
  id: `event-${String(phaseEventSeq++).padStart(3, "0")}-geometry-warning`,
245
- at: args.createdAt,
244
+ at: args.run.createdAt,
246
245
  level: "warn",
247
246
  type: "cua-lab.geometry.warning",
248
247
  message: warning,
@@ -254,12 +253,12 @@ function singleReview(args, view, stream) {
254
253
  const { reason } = view;
255
254
  // A funnel with a denominator of one is still the funnel — and its absence stays honest: no
256
255
  // declared protocol (or a dry run) means no `tasks` field, never an empty one.
257
- const singleStudyTasks = args.inProgress !== true && args.session?.trace.taskFunnel !== undefined
256
+ const singleRunTasks = args.inProgress !== true && args.session?.trace.taskFunnel !== undefined
258
257
  ? aggregateTaskFunnels([args.session.trace.taskFunnel])
259
258
  : undefined;
260
- // What happened to the participant, as the LANE judged it — the same rule the fan-out roll-up
259
+ // What happened to the participant, as the route judged it — the same rule the fan-out roll-up
261
260
  // applies (participantStatusForOutcome). Before #476 this read the actor's own status, so a
262
- // run the lane refused as "not a credible pass" was written up as verdict pass, 1/1 reached
261
+ // run the route refused as "not a credible pass" was written up as verdict pass, 1/1 reached
263
262
  // the goal, and every projection of the bundle (Observer tally, `runs`, the status index)
264
263
  // repeated it. Found on a real drawDB run whose participant wrote "Blocked after partial
265
264
  // completion".
@@ -274,14 +273,14 @@ function singleReview(args, view, stream) {
274
273
  const review = withCuaReviewProvenance({
275
274
  schema: REVIEW_SCHEMA,
276
275
  verdict: args.verdict,
277
- // One lane is still a study with a denominator of one, and saying so keeps a single-lane
278
- // result from being read as though it generalized.
276
+ // One participant is still a study with a denominator of one, and saying so keeps a
277
+ // single-participant result from being read as though it generalized.
279
278
  ...(participantStatus !== undefined && args.inProgress !== true
280
279
  ? {
281
280
  participants: tallyParticipantOutcomes([participantStatus], [args.credibility?.reportedFriction === true]),
282
281
  }
283
282
  : {}),
284
- ...(singleStudyTasks === undefined ? {} : { tasks: singleStudyTasks }),
283
+ ...(singleRunTasks === undefined ? {} : { tasks: singleRunTasks }),
285
284
  summary: credibilityNote === undefined ? reason : `${credibilityNote} ${reason}`,
286
285
  gaps: args.session || args.sessionError !== undefined
287
286
  ? []
@@ -305,15 +304,11 @@ export function buildSingleParticipantBundle(args) {
305
304
  const events = singleEvents(args, view);
306
305
  const review = singleReview(args, view, stream);
307
306
  return {
308
- ...bundleHead({
307
+ ...bundleHead(args.run, {
309
308
  ...(args.realEmail && !args.dryRun
310
309
  ? { publication: { restrictions: ["real-communications"] } }
311
310
  : {}),
312
- runId: args.runId,
313
- mode: args.dryRun ? "dry-run" : "live",
314
311
  participants: 1,
315
- createdAt: args.createdAt,
316
- ...(args.lab === undefined ? {} : { lab: args.lab }),
317
312
  source: args.source,
318
313
  }),
319
314
  persona: {
@@ -331,7 +326,7 @@ export function buildSingleParticipantBundle(args) {
331
326
  },
332
327
  lifecycle: [
333
328
  {
334
- at: args.createdAt,
329
+ at: args.run.createdAt,
335
330
  event: "cua-lab.run.created",
336
331
  message: `Created computer-use lab run with one participant in a desktop browser (actor ${args.actorId}).`,
337
332
  },
@@ -356,7 +351,7 @@ export function buildSingleParticipantBundle(args) {
356
351
  feedbackCandidates: args.dryRun || args.inProgress === true
357
352
  ? []
358
353
  : participantFeedbackCandidates({
359
- runId: args.runId,
354
+ runId: args.run.runId,
360
355
  scenarioId: `cua-${args.labId}`,
361
356
  adapterId: args.labId,
362
357
  goal: redactText(args.mission),
@@ -2,16 +2,14 @@ import type { ComputerUsePlan } from "../../lab/plan-types.js";
2
2
  import type { LabSubjectState } from "../../lab/types.js";
3
3
  import { type RunSubjectProvenance, type RunSubjectStateStepRecord } from "../../run/bundle.js";
4
4
  import { type LocalTreeArchive } from "../../subject/local-tree-archive.js";
5
- import { type CuaSubjectRoute } from "./plan.js";
6
5
  import { type DesktopParticipantRun, type CuaSubjectProjection, type CuaSubjectProvenanceArg, type ParticipantRunOutcome } from "./types.js";
7
6
  /**
8
- * Each lane's subject projection. A lane's outcome adds the subject commit it resolved and the
7
+ * Each participant's subject projection. A participant's outcome adds the subject commit it resolved and the
9
8
  * state steps it executed; without outcomes (dry run, or a run still in progress) the declared
10
9
  * state is projected as not yet run.
11
10
  */
12
11
  export declare function projectParticipantSubjects(args: {
13
12
  plan: ComputerUsePlan;
14
- subjectRoute: CuaSubjectRoute;
15
13
  publicRepo?: string;
16
14
  localTreeArchive?: LocalTreeArchive;
17
15
  runs: readonly DesktopParticipantRun[];
@@ -35,10 +33,10 @@ export declare function resolveSubjectState(args: {
35
33
  * default branch that builder already handles). */
36
34
  export declare function subjectProvenanceArg(subject: CuaSubjectProjection, publicRepo: string | undefined, subjectEnvNames: string[]): CuaSubjectProvenanceArg | undefined;
37
35
  /**
38
- * The run-level subject for the top level and the bundle. Local-tree lanes all pack from the same
39
- * once-per-run archive, so every lane already carries the identical archiveSha256/commit/dirty and
40
- * the first lane's projection is the aggregate. Clone lanes each resolve their own commit; the
41
- * aggregate carries it only when every lane agrees, and warns when they diverge.
36
+ * The run-level subject for the top level and the bundle. Local-tree participants all pack from the
37
+ * same once-per-run archive, so every participant already carries the identical archiveSha256/commit/dirty and
38
+ * the first participant's projection is the aggregate. Clone participants each resolve their own
39
+ * commit; the aggregate carries it only when every participant agrees, and warns when they diverge.
42
40
  */
43
41
  export declare function aggregateCuaSubject(args: {
44
42
  subjects: readonly CuaSubjectProjection[];
@@ -1,32 +1,33 @@
1
- // Each lane's subject projection and the subject-state marker, from the declared subject and what
2
- // the lanes ran; the run-level subject aggregated from them; and the provenance argument the
1
+ // Each participant's subject projection and the subject-state marker, from the declared subject
2
+ // and what the participants ran; the run-level subject aggregated from them; and the provenance argument the
3
3
  // bundle builders take.
4
4
  import { commandDigestOf } from "../../subject/state.js";
5
5
  import { cuaDeclaredState } from "./plan.js";
6
6
  import {} from "../../run/bundle.js";
7
7
  import {} from "../../subject/local-tree-archive.js";
8
- import {} from "./plan.js";
9
- import {} from "./types.js";
8
+ import { participantSubjectEnv, } from "./types.js";
10
9
  /**
11
- * Each lane's subject projection. A lane's outcome adds the subject commit it resolved and the
10
+ * Each participant's subject projection. A participant's outcome adds the subject commit it resolved and the
12
11
  * state steps it executed; without outcomes (dry run, or a run still in progress) the declared
13
12
  * state is projected as not yet run.
14
13
  */
15
14
  export function projectParticipantSubjects(args) {
16
- const { subjectRoute, publicRepo, localTreeArchive } = args;
15
+ const { publicRepo, localTreeArchive } = args;
16
+ const { subject } = args.plan.runner;
17
+ const subjectEnvNames = [...participantSubjectEnv(subject)];
18
+ // Only a provisioned subject declares state; cuaDeclaredState is undefined for the others.
17
19
  const declaredState = cuaDeclaredState(args.plan);
18
20
  return args.runs.map((_spec, index) => {
19
21
  const outcome = args.outcomes?.[index];
20
22
  const subjectState = resolveSubjectState({
21
- declared: subjectRoute.provisionedRoute ? declaredState : undefined,
23
+ declared: declaredState,
22
24
  dryRun: args.dryRun,
23
25
  executed: outcome?.stateStepRecords ?? [],
24
26
  });
25
27
  return participantSubjectProjection({
26
- cloneRoute: subjectRoute.cloneRoute,
27
- localTreeRoute: subjectRoute.localTreeRoute,
28
+ kind: subject.kind,
28
29
  ...(publicRepo === undefined ? {} : { publicRepo }),
29
- subjectEnvNames: subjectRoute.subjectEnvNames,
30
+ subjectEnvNames,
30
31
  ...(outcome?.subjectCommit === undefined ? {} : { subjectCommit: outcome.subjectCommit }),
31
32
  ...(localTreeArchive === undefined ? {} : { localTreeArchive }),
32
33
  subjectState,
@@ -73,12 +74,12 @@ export function resolveSubjectState(args) {
73
74
  ...(external.length > 0 ? { externalEnvNames: external } : {}),
74
75
  };
75
76
  }
76
- /** Build the per-lane subject projection (invariant 5). Local-tree lanes all share ONE
77
- * host-packed archive, so every lane's projection carries the identical archiveSha256/
78
- * commit/dirty (no per-lane divergence is possible, unlike the clone route's per-lane
77
+ /** Build the per-participant subject projection (invariant 5). Local-tree participants all share
78
+ * ONE host-packed archive, so every participant's projection carries the identical archiveSha256/
79
+ * commit/dirty (no divergence is possible, unlike the clone route's per-participant
79
80
  * in-sandbox commit). */
80
81
  function participantSubjectProjection(args) {
81
- if (args.cloneRoute && args.publicRepo) {
82
+ if (args.kind === "clone" && args.publicRepo) {
82
83
  return {
83
84
  source: "clone",
84
85
  repo: args.publicRepo,
@@ -87,7 +88,7 @@ function participantSubjectProjection(args) {
87
88
  state: args.subjectState,
88
89
  };
89
90
  }
90
- if (args.localTreeRoute) {
91
+ if (args.kind === "local-tree") {
91
92
  const archive = args.localTreeArchive;
92
93
  return {
93
94
  source: "local-tree",
@@ -127,10 +128,10 @@ export function subjectProvenanceArg(subject, publicRepo, subjectEnvNames) {
127
128
  return undefined;
128
129
  }
129
130
  /**
130
- * The run-level subject for the top level and the bundle. Local-tree lanes all pack from the same
131
- * once-per-run archive, so every lane already carries the identical archiveSha256/commit/dirty and
132
- * the first lane's projection is the aggregate. Clone lanes each resolve their own commit; the
133
- * aggregate carries it only when every lane agrees, and warns when they diverge.
131
+ * The run-level subject for the top level and the bundle. Local-tree participants all pack from the
132
+ * same once-per-run archive, so every participant already carries the identical archiveSha256/commit/dirty and
133
+ * the first participant's projection is the aggregate. Clone participants each resolve their own
134
+ * commit; the aggregate carries it only when every participant agrees, and warns when they diverge.
134
135
  */
135
136
  export function aggregateCuaSubject(args) {
136
137
  const { subjects, outcomes, participantCount, dryRun } = args;