humanish 0.107.0 → 0.109.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 (671) hide show
  1. package/ARCHITECTURE.md +73 -69
  2. package/CHANGELOG.md +27 -0
  3. package/CONTEXT.md +51 -44
  4. package/README.md +148 -175
  5. package/SECURITY.md +16 -26
  6. package/TELEMETRY.md +8 -6
  7. package/dist/actors/affordance.d.ts +4 -4
  8. package/dist/actors/affordance.js +12 -12
  9. package/dist/actors/agent-session.d.ts +2 -2
  10. package/dist/actors/agent-session.js +7 -7
  11. package/dist/actors/codex/app-server-actor-trace.d.ts +1 -1
  12. package/dist/actors/codex/app-server-actor-trace.js +1 -1
  13. package/dist/actors/codex/app-server-trace.js +2 -1
  14. package/dist/actors/codex/app-server-ui.js +1 -1
  15. package/dist/actors/codex/codex-admission.d.ts +91 -0
  16. package/dist/actors/codex/codex-admission.js +150 -0
  17. package/dist/actors/codex/restricted-executable.d.ts +4 -4
  18. package/dist/actors/codex/restricted-executable.js +8 -8
  19. package/dist/actors/codex/restricted-launch.d.ts +2 -1
  20. package/dist/actors/codex/restricted-launch.js +1 -1
  21. package/dist/actors/codex/restricted-participant.js +20 -18
  22. package/dist/actors/codex/restricted-policy.d.ts +2 -2
  23. package/dist/actors/codex/restricted-policy.js +2 -2
  24. package/dist/actors/codex/restricted-session.d.ts +3 -3
  25. package/dist/actors/codex/restricted-session.js +10 -5
  26. package/dist/actors/computer-use/actor.d.ts +18 -18
  27. package/dist/actors/computer-use/actor.js +4 -4
  28. package/dist/actors/computer-use/admission-limit.d.ts +3 -3
  29. package/dist/actors/computer-use/admission-limit.js +4 -4
  30. package/dist/actors/computer-use/executor-error.d.ts +2 -2
  31. package/dist/actors/computer-use/executor-error.js +3 -3
  32. package/dist/actors/computer-use/loop/actions.d.ts +3 -3
  33. package/dist/actors/computer-use/loop/actions.js +15 -15
  34. package/dist/actors/computer-use/loop/backstop.d.ts +3 -3
  35. package/dist/actors/computer-use/loop/backstop.js +14 -12
  36. package/dist/actors/computer-use/loop/debrief.js +2 -2
  37. package/dist/actors/computer-use/loop/ending.d.ts +6 -6
  38. package/dist/actors/computer-use/loop/ending.js +18 -17
  39. package/dist/actors/computer-use/loop/observation.d.ts +2 -2
  40. package/dist/actors/computer-use/loop/observation.js +15 -14
  41. package/dist/actors/computer-use/loop/provider-call.d.ts +1 -1
  42. package/dist/actors/computer-use/loop/provider-call.js +12 -12
  43. package/dist/actors/computer-use/loop/session.d.ts +4 -4
  44. package/dist/actors/computer-use/loop/session.js +4 -4
  45. package/dist/actors/computer-use/loop/spend.d.ts +1 -1
  46. package/dist/actors/computer-use/loop/spend.js +1 -1
  47. package/dist/actors/computer-use/loop/trace.js +11 -9
  48. package/dist/actors/computer-use/loop/types.d.ts +47 -45
  49. package/dist/actors/computer-use/loop/usage.d.ts +2 -2
  50. package/dist/actors/computer-use/loop/usage.js +2 -2
  51. package/dist/actors/computer-use/loop.d.ts +6 -1
  52. package/dist/actors/computer-use/loop.js +26 -4
  53. package/dist/actors/computer-use/openai-context.d.ts +37 -0
  54. package/dist/actors/computer-use/openai-context.js +214 -0
  55. package/dist/actors/computer-use/openai-provider.d.ts +13 -10
  56. package/dist/actors/computer-use/openai-provider.js +52 -41
  57. package/dist/actors/computer-use/openai-requests.d.ts +36 -10
  58. package/dist/actors/computer-use/openai-requests.js +82 -15
  59. package/dist/actors/computer-use/openai-wire.d.ts +19 -7
  60. package/dist/actors/computer-use/openai-wire.js +36 -34
  61. package/dist/actors/computer-use/provider-error.d.ts +4 -4
  62. package/dist/actors/computer-use/provider-error.js +6 -6
  63. package/dist/actors/contract.d.ts +82 -47
  64. package/dist/actors/contract.js +30 -24
  65. package/dist/actors/local-agent/claude-session.d.ts +1 -1
  66. package/dist/actors/local-agent/claude-session.js +13 -12
  67. package/dist/actors/local-agent/cli.d.ts +9 -7
  68. package/dist/actors/local-agent/cli.js +24 -28
  69. package/dist/actors/local-agent/readiness.d.ts +2 -2
  70. package/dist/actors/local-agent/readiness.js +4 -4
  71. package/dist/actors/reasoning-effort.js +8 -8
  72. package/dist/actors/registry.d.ts +12 -12
  73. package/dist/actors/registry.js +21 -20
  74. package/dist/actors/scripted-browser/actor.d.ts +10 -10
  75. package/dist/actors/scripted-browser/actor.js +17 -17
  76. package/dist/actors/scripted-browser/browser-command.js +1 -1
  77. package/dist/actors/scripted-browser/steps.js +1 -1
  78. package/dist/actors/scripted-browser/types.d.ts +1 -1
  79. package/dist/actors/stop-conditions.d.ts +1 -1
  80. package/dist/analysis/automatic-completion.d.ts +7 -7
  81. package/dist/analysis/automatic-completion.js +1 -1
  82. package/dist/analysis/automatic-config.d.ts +6 -6
  83. package/dist/analysis/automatic-config.js +1 -1
  84. package/dist/analysis/codex-config.d.ts +6 -2
  85. package/dist/analysis/codex-config.js +22 -14
  86. package/dist/analysis/execute.d.ts +1 -1
  87. package/dist/analysis/execute.js +1 -1
  88. package/dist/analysis/service.js +5 -5
  89. package/dist/analysis/types.d.ts +6 -0
  90. package/dist/browser-control/client.js +16 -16
  91. package/dist/browser-control/dispatcher.js +4 -4
  92. package/dist/browser-control/protocol.js +14 -14
  93. package/dist/browser-control/recording-transfer.js +4 -4
  94. package/dist/browser-control/transport.js +7 -7
  95. package/dist/cli/commands/analysis-signals.d.ts +2 -2
  96. package/dist/cli/commands/analyze.js +19 -16
  97. package/dist/cli/commands/codex.js +9 -9
  98. package/dist/cli/commands/comms.js +48 -35
  99. package/dist/cli/commands/feedback.js +20 -21
  100. package/dist/cli/commands/migrate.d.ts +4 -0
  101. package/dist/cli/commands/migrate.js +65 -0
  102. package/dist/cli/commands/observe.d.ts +0 -1
  103. package/dist/cli/commands/observe.js +136 -112
  104. package/dist/cli/commands/run-command.d.ts +10 -0
  105. package/dist/cli/commands/run-command.js +85 -0
  106. package/dist/cli/commands/runs.js +136 -139
  107. package/dist/cli/commands/setup.d.ts +2 -2
  108. package/dist/cli/commands/setup.js +27 -24
  109. package/dist/cli/commands/study-format.d.ts +9 -0
  110. package/dist/cli/commands/{lab-format.js → study-format.js} +39 -27
  111. package/dist/cli/commands/{lab-route-computer-use.d.ts → study-route-computer-use.d.ts} +6 -6
  112. package/dist/cli/commands/{lab-route-computer-use.js → study-route-computer-use.js} +17 -18
  113. package/dist/cli/commands/{lab-route-open.d.ts → study-route-open.d.ts} +4 -4
  114. package/dist/cli/commands/{lab-route-open.js → study-route-open.js} +2 -2
  115. package/dist/cli/commands/{lab-route-preview.d.ts → study-route-preview.d.ts} +7 -7
  116. package/dist/cli/commands/{lab-route-preview.js → study-route-preview.js} +7 -6
  117. package/dist/cli/commands/study-route-run.d.ts +19 -0
  118. package/dist/cli/commands/{lab-route-run.js → study-route-run.js} +6 -6
  119. package/dist/cli/commands/study-route-scripted.d.ts +17 -0
  120. package/dist/cli/commands/{lab-route-scripted.js → study-route-scripted.js} +4 -4
  121. package/dist/cli/commands/{lab-route-shared-world.d.ts → study-route-shared-world.d.ts} +5 -5
  122. package/dist/cli/commands/{lab-route-shared-world.js → study-route-shared-world.js} +10 -10
  123. package/dist/cli/commands/study-route-terminal.d.ts +17 -0
  124. package/dist/cli/commands/{lab-route-terminal.js → study-route-terminal.js} +4 -4
  125. package/dist/cli/commands/study-run.d.ts +9 -0
  126. package/dist/cli/commands/{lab-run.js → study-run.js} +44 -45
  127. package/dist/cli/commands/{lab-scorer.d.ts → study-scorer.d.ts} +7 -7
  128. package/dist/cli/commands/{lab-scorer.js → study-scorer.js} +2 -2
  129. package/dist/cli/commands/study.d.ts +3 -0
  130. package/dist/cli/commands/study.js +146 -0
  131. package/dist/cli/commands/tui.d.ts +4 -4
  132. package/dist/cli/commands/tui.js +31 -31
  133. package/dist/cli/commands/watch.js +71 -121
  134. package/dist/cli/deprecations.d.ts +6 -0
  135. package/dist/cli/deprecations.js +18 -0
  136. package/dist/cli/doctor.d.ts +18 -8
  137. package/dist/cli/doctor.js +114 -59
  138. package/dist/cli/first-run-path.d.ts +15 -13
  139. package/dist/cli/first-run-path.js +35 -33
  140. package/dist/cli/io.d.ts +44 -9
  141. package/dist/cli/io.js +98 -23
  142. package/dist/cli/observer-follow.d.ts +3 -3
  143. package/dist/cli/observer-follow.js +6 -7
  144. package/dist/cli/orientation.d.ts +10 -7
  145. package/dist/cli/orientation.js +89 -47
  146. package/dist/cli/product-sentence.d.ts +6 -0
  147. package/dist/cli/product-sentence.js +6 -0
  148. package/dist/cli/program.d.ts +6 -1
  149. package/dist/cli/program.js +111 -43
  150. package/dist/cli/telemetry.d.ts +16 -16
  151. package/dist/cli/telemetry.js +46 -44
  152. package/dist/cli.js +1 -1
  153. package/dist/comms/capture-surface.d.ts +13 -12
  154. package/dist/comms/capture-surface.js +23 -22
  155. package/dist/comms/catch-host.d.ts +7 -7
  156. package/dist/comms/catch-host.js +17 -17
  157. package/dist/comms/connections.d.ts +1 -1
  158. package/dist/comms/connections.js +2 -2
  159. package/dist/comms/email-catch.d.ts +3 -3
  160. package/dist/comms/email-catch.js +8 -8
  161. package/dist/comms/external-evidence.d.ts +5 -5
  162. package/dist/comms/external-evidence.js +5 -4
  163. package/dist/comms/extract.js +2 -2
  164. package/dist/comms/fake-inbox.d.ts +3 -3
  165. package/dist/comms/fake-inbox.js +3 -3
  166. package/dist/comms/receiving-render.d.ts +1 -1
  167. package/dist/comms/receiving-render.js +2 -2
  168. package/dist/comms/receiving-runtime.d.ts +4 -4
  169. package/dist/comms/sandbox-catch-script.d.ts +6 -6
  170. package/dist/comms/sandbox-catch-script.js +6 -6
  171. package/dist/comms/sandbox-catch.d.ts +38 -39
  172. package/dist/comms/sandbox-catch.js +36 -37
  173. package/dist/comms/setup.d.ts +2 -2
  174. package/dist/comms/setup.js +56 -25
  175. package/dist/comms/thread-evidence.d.ts +1 -1
  176. package/dist/comms/thread-evidence.js +6 -6
  177. package/dist/comms/types.d.ts +6 -6
  178. package/dist/comms/types.js +3 -3
  179. package/dist/evidence/frame-signature.d.ts +1 -1
  180. package/dist/evidence/frame-signature.js +4 -4
  181. package/dist/evidence/redaction.d.ts +3 -3
  182. package/dist/evidence/redaction.js +4 -4
  183. package/dist/feedback/draft.js +38 -80
  184. package/dist/feedback/export-bundle.js +1 -1
  185. package/dist/feedback/export.d.ts +5 -1
  186. package/dist/feedback/export.js +10 -10
  187. package/dist/feedback/feedback.d.ts +2 -2
  188. package/dist/feedback/feedback.js +21 -3
  189. package/dist/feedback/proof.d.ts +1 -1
  190. package/dist/feedback/proof.js +2 -2
  191. package/dist/guest/bootstrap.js +6 -6
  192. package/dist/guest/browser-tools.js +8 -8
  193. package/dist/guest/chromium-text.js +19 -19
  194. package/dist/guest/desktop-executor.d.ts +2 -2
  195. package/dist/guest/desktop-executor.js +20 -20
  196. package/dist/guest/desktop-keys.js +4 -4
  197. package/dist/guest/desktop-media.d.ts +2 -2
  198. package/dist/guest/desktop-media.js +16 -16
  199. package/dist/guest/desktop-native.d.ts +1 -1
  200. package/dist/guest/desktop-native.js +10 -10
  201. package/dist/guest/runtime-desktop.js +2 -2
  202. package/dist/guest/runtime-processes.d.ts +2 -2
  203. package/dist/guest/runtime-processes.js +2 -2
  204. package/dist/guest/runtime.js +6 -6
  205. package/dist/index.d.ts +14 -14
  206. package/dist/index.js +8 -8
  207. package/dist/keys/key-resolution.d.ts +5 -5
  208. package/dist/keys/key-resolution.js +23 -23
  209. package/dist/observer/artifact.d.ts +2 -2
  210. package/dist/observer/artifact.js +7 -7
  211. package/dist/observer/data.d.ts +6 -6
  212. package/dist/observer/data.js +5 -4
  213. package/dist/observer/exposure.d.ts +1 -1
  214. package/dist/observer/exposure.js +11 -11
  215. package/dist/observer/http.js +1 -1
  216. package/dist/observer/library.d.ts +3 -1
  217. package/dist/observer/library.js +8 -3
  218. package/dist/observer/listen.js +5 -4
  219. package/dist/observer/render.d.ts +1 -1
  220. package/dist/observer/render.js +17 -6
  221. package/dist/observer/run-routes.d.ts +4 -3
  222. package/dist/observer/run-routes.js +38 -13
  223. package/dist/observer/serve.d.ts +1 -1
  224. package/dist/observer/serve.js +7 -3
  225. package/dist/observer/tunnel.js +1 -1
  226. package/dist/observer-app.html +4 -4
  227. package/dist/routes/computer-use/bundle-parts.d.ts +9 -9
  228. package/dist/routes/computer-use/bundle-parts.js +18 -17
  229. package/dist/routes/computer-use/bundle.d.ts +2 -2
  230. package/dist/routes/computer-use/bundle.js +10 -9
  231. package/dist/routes/computer-use/e2b-desktop/comms.d.ts +6 -6
  232. package/dist/routes/computer-use/e2b-desktop/comms.js +18 -17
  233. package/dist/routes/computer-use/e2b-desktop/desktop.js +4 -4
  234. package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +5 -4
  235. package/dist/routes/computer-use/e2b-desktop/fidelity.js +11 -10
  236. package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +1 -1
  237. package/dist/routes/computer-use/e2b-desktop/prepare.js +10 -10
  238. package/dist/routes/computer-use/e2b-desktop/start.js +7 -7
  239. package/dist/routes/computer-use/e2b-desktop/state.d.ts +2 -2
  240. package/dist/routes/computer-use/e2b-desktop/teardown.js +2 -2
  241. package/dist/routes/computer-use/external-comms.d.ts +4 -4
  242. package/dist/routes/computer-use/external-comms.js +1 -1
  243. package/dist/routes/computer-use/fanout-bundle.js +27 -26
  244. package/dist/routes/computer-use/fanout-records.js +12 -13
  245. package/dist/routes/computer-use/live-flush.d.ts +4 -4
  246. package/dist/routes/computer-use/live-flush.js +6 -6
  247. package/dist/routes/computer-use/live-phase.d.ts +5 -4
  248. package/dist/routes/computer-use/live-phase.js +8 -8
  249. package/dist/routes/computer-use/local-tree-pack.d.ts +5 -5
  250. package/dist/routes/computer-use/local-tree-pack.js +1 -1
  251. package/dist/routes/computer-use/local-vm.d.ts +8 -8
  252. package/dist/routes/computer-use/local-vm.js +3 -3
  253. package/dist/routes/computer-use/participant-desktop.d.ts +7 -7
  254. package/dist/routes/computer-use/participant-desktop.js +5 -5
  255. package/dist/routes/computer-use/participant-execution.d.ts +4 -4
  256. package/dist/routes/computer-use/participant-execution.js +10 -10
  257. package/dist/routes/computer-use/participant-model.d.ts +6 -0
  258. package/dist/routes/computer-use/participant-model.js +33 -15
  259. package/dist/routes/computer-use/participant-prompt.d.ts +15 -15
  260. package/dist/routes/computer-use/participant-prompt.js +9 -9
  261. package/dist/routes/computer-use/participant-runs.d.ts +16 -16
  262. package/dist/routes/computer-use/participant-runs.js +26 -25
  263. package/dist/routes/computer-use/plan.d.ts +12 -12
  264. package/dist/routes/computer-use/plan.js +42 -42
  265. package/dist/routes/computer-use/preflight.d.ts +5 -5
  266. package/dist/routes/computer-use/preflight.js +25 -25
  267. package/dist/routes/computer-use/rerun-selection.d.ts +1 -1
  268. package/dist/routes/computer-use/rerun-selection.js +4 -3
  269. package/dist/routes/computer-use/result.d.ts +4 -4
  270. package/dist/routes/computer-use/result.js +22 -21
  271. package/dist/routes/computer-use/route.d.ts +12 -11
  272. package/dist/routes/computer-use/route.js +31 -30
  273. package/dist/routes/computer-use/self-report.d.ts +7 -7
  274. package/dist/routes/computer-use/self-report.js +32 -32
  275. package/dist/routes/computer-use/setup.d.ts +23 -23
  276. package/dist/routes/computer-use/setup.js +28 -29
  277. package/dist/routes/computer-use/single-bundle.d.ts +11 -11
  278. package/dist/routes/computer-use/single-bundle.js +40 -41
  279. package/dist/routes/computer-use/subject-projection.d.ts +4 -4
  280. package/dist/routes/computer-use/subject-projection.js +6 -6
  281. package/dist/routes/computer-use/types.d.ts +71 -73
  282. package/dist/routes/computer-use/types.js +12 -12
  283. package/dist/routes/preview.d.ts +13 -7
  284. package/dist/routes/preview.js +11 -7
  285. package/dist/routes/scripted/bundle.d.ts +7 -7
  286. package/dist/routes/scripted/bundle.js +20 -18
  287. package/dist/routes/scripted/plan.d.ts +8 -8
  288. package/dist/routes/scripted/plan.js +13 -13
  289. package/dist/routes/scripted/result.d.ts +3 -3
  290. package/dist/routes/scripted/result.js +13 -13
  291. package/dist/routes/scripted/route.d.ts +9 -9
  292. package/dist/routes/scripted/route.js +15 -16
  293. package/dist/routes/scripted/scenario.d.ts +1 -1
  294. package/dist/routes/scripted/scenario.js +5 -5
  295. package/dist/routes/scripted/setup.d.ts +6 -6
  296. package/dist/routes/scripted/setup.js +8 -8
  297. package/dist/routes/scripted/subject.d.ts +5 -5
  298. package/dist/routes/scripted/subject.js +4 -4
  299. package/dist/routes/scripted/surface-records.d.ts +1 -1
  300. package/dist/routes/scripted/surface-records.js +4 -4
  301. package/dist/routes/scripted/surface-sessions.d.ts +3 -3
  302. package/dist/routes/scripted/types.d.ts +18 -20
  303. package/dist/routes/scripted/types.js +2 -2
  304. package/dist/routes/shared-world/bundle-records.js +11 -10
  305. package/dist/routes/shared-world/bundle.d.ts +5 -5
  306. package/dist/routes/shared-world/bundle.js +46 -43
  307. package/dist/routes/shared-world/checkpoints.d.ts +4 -4
  308. package/dist/routes/shared-world/checkpoints.js +2 -2
  309. package/dist/routes/shared-world/comms.d.ts +14 -14
  310. package/dist/routes/shared-world/comms.js +19 -18
  311. package/dist/routes/shared-world/external-public.d.ts +4 -3
  312. package/dist/routes/shared-world/external-public.js +16 -12
  313. package/dist/routes/shared-world/handoff.d.ts +7 -6
  314. package/dist/routes/shared-world/handoff.js +65 -57
  315. package/dist/routes/shared-world/lobby-code.d.ts +2 -2
  316. package/dist/routes/shared-world/lobby-code.js +9 -9
  317. package/dist/routes/shared-world/participant-specs.d.ts +10 -9
  318. package/dist/routes/shared-world/participant-specs.js +38 -31
  319. package/dist/routes/shared-world/plan.d.ts +9 -9
  320. package/dist/routes/shared-world/plan.js +16 -16
  321. package/dist/routes/shared-world/provenance.d.ts +2 -2
  322. package/dist/routes/shared-world/provenance.js +2 -2
  323. package/dist/routes/shared-world/provisioned.d.ts +8 -8
  324. package/dist/routes/shared-world/provisioned.js +18 -17
  325. package/dist/routes/shared-world/result.d.ts +6 -6
  326. package/dist/routes/shared-world/result.js +29 -29
  327. package/dist/routes/shared-world/route.d.ts +11 -11
  328. package/dist/routes/shared-world/route.js +40 -39
  329. package/dist/routes/shared-world/setup.d.ts +16 -16
  330. package/dist/routes/shared-world/setup.js +23 -23
  331. package/dist/routes/shared-world/types.d.ts +55 -53
  332. package/dist/routes/shared-world/types.js +4 -4
  333. package/dist/routes/terminal/adapter.d.ts +5 -5
  334. package/dist/routes/terminal/adapter.js +9 -9
  335. package/dist/routes/terminal/bundle.d.ts +13 -13
  336. package/dist/routes/terminal/bundle.js +28 -27
  337. package/dist/routes/terminal/credentials.d.ts +8 -8
  338. package/dist/routes/terminal/credentials.js +12 -12
  339. package/dist/routes/terminal/dry-run.d.ts +4 -4
  340. package/dist/routes/terminal/dry-run.js +12 -12
  341. package/dist/routes/terminal/encoding.js +2 -2
  342. package/dist/routes/terminal/ledger.d.ts +5 -5
  343. package/dist/routes/terminal/ledger.js +14 -14
  344. package/dist/routes/terminal/lifetime.d.ts +1 -1
  345. package/dist/routes/terminal/lifetime.js +1 -1
  346. package/dist/routes/terminal/live-finish.d.ts +2 -2
  347. package/dist/routes/terminal/live-finish.js +10 -10
  348. package/dist/routes/terminal/live-sandbox.d.ts +2 -2
  349. package/dist/routes/terminal/live-sandbox.js +15 -15
  350. package/dist/routes/terminal/participant-text.js +2 -1
  351. package/dist/routes/terminal/persona.d.ts +2 -2
  352. package/dist/routes/terminal/persona.js +3 -3
  353. package/dist/routes/terminal/plan.d.ts +7 -7
  354. package/dist/routes/terminal/plan.js +15 -15
  355. package/dist/routes/terminal/recorder.js +2 -2
  356. package/dist/routes/terminal/result.d.ts +5 -5
  357. package/dist/routes/terminal/result.js +14 -14
  358. package/dist/routes/terminal/route.d.ts +9 -9
  359. package/dist/routes/terminal/route.js +19 -20
  360. package/dist/routes/terminal/sandbox.d.ts +1 -1
  361. package/dist/routes/terminal/sandbox.js +1 -1
  362. package/dist/routes/terminal/session.d.ts +5 -5
  363. package/dist/routes/terminal/session.js +14 -13
  364. package/dist/routes/terminal/token-usage.d.ts +1 -1
  365. package/dist/routes/terminal/token-usage.js +7 -8
  366. package/dist/routes/terminal/trace.d.ts +4 -4
  367. package/dist/routes/terminal/trace.js +2 -2
  368. package/dist/routes/terminal/types.d.ts +48 -50
  369. package/dist/routes/terminal/types.js +5 -5
  370. package/dist/run/bundle-shape.js +3 -3
  371. package/dist/run/bundle.d.ts +49 -49
  372. package/dist/run/bundle.js +3 -2
  373. package/dist/run/cost-summary.js +3 -3
  374. package/dist/run/costs.d.ts +23 -0
  375. package/dist/run/costs.js +79 -44
  376. package/dist/run/detail.d.ts +6 -6
  377. package/dist/run/detail.js +4 -4
  378. package/dist/run/dry-run-inputs.d.ts +1 -1
  379. package/dist/run/dry-run-inputs.js +2 -2
  380. package/dist/run/dry-run.js +20 -20
  381. package/dist/run/judge.d.ts +19 -13
  382. package/dist/run/judge.js +18 -8
  383. package/dist/run/outcomes.d.ts +1 -1
  384. package/dist/run/participant.d.ts +1 -1
  385. package/dist/run/paths.d.ts +1 -1
  386. package/dist/run/paths.js +1 -1
  387. package/dist/run/preflight-receipts.js +1 -1
  388. package/dist/run/pricing.d.ts +11 -6
  389. package/dist/run/pricing.js +22 -15
  390. package/dist/run/projection.d.ts +46 -46
  391. package/dist/run/projection.js +57 -57
  392. package/dist/run/reclaim.d.ts +1 -1
  393. package/dist/run/reclaim.js +3 -3
  394. package/dist/run/results.d.ts +5 -5
  395. package/dist/run/run-cost.d.ts +53 -0
  396. package/dist/run/run-cost.js +105 -0
  397. package/dist/run/run-index-analysis.d.ts +15 -0
  398. package/dist/run/run-index-analysis.js +77 -0
  399. package/dist/run/run-index.d.ts +19 -7
  400. package/dist/run/run-index.js +77 -64
  401. package/dist/run/run-not-found.d.ts +5 -0
  402. package/dist/run/run-not-found.js +15 -0
  403. package/dist/run/run.d.ts +6 -5
  404. package/dist/run/run.js +3 -3
  405. package/dist/run/sandbox-receipts.d.ts +2 -2
  406. package/dist/run/sandbox-receipts.js +3 -3
  407. package/dist/run/shared-world-evidence.d.ts +37 -36
  408. package/dist/run/shared-world-evidence.js +4 -4
  409. package/dist/run/shared-world-shape.d.ts +1 -1
  410. package/dist/run/shared-world-shape.js +7 -7
  411. package/dist/run/stats.d.ts +14 -8
  412. package/dist/run/stats.js +121 -63
  413. package/dist/run/status.d.ts +16 -29
  414. package/dist/run/status.js +10 -29
  415. package/dist/run/stored-runs.js +2 -1
  416. package/dist/run/stream-shape.js +1 -1
  417. package/dist/run/streams.d.ts +7 -7
  418. package/dist/run/study-provenance.d.ts +49 -0
  419. package/dist/run/study-provenance.js +66 -0
  420. package/dist/run/study-result.d.ts +11 -0
  421. package/dist/run/study-result.js +9 -0
  422. package/dist/run/text.d.ts +2 -0
  423. package/dist/run/text.js +4 -0
  424. package/dist/run-study.d.ts +112 -0
  425. package/dist/{run-lab.js → run-study.js} +52 -47
  426. package/dist/{lab → study}/adapter-extension.d.ts +15 -27
  427. package/dist/{lab → study}/adapter-extension.js +10 -45
  428. package/dist/{lab → study}/adapter-scorer-loader.d.ts +17 -17
  429. package/dist/{lab → study}/adapter-scorer-loader.js +34 -34
  430. package/dist/study/composition-rules.d.ts +7 -0
  431. package/dist/{lab → study}/composition-rules.js +53 -53
  432. package/dist/study/config.d.ts +15 -0
  433. package/dist/{lab → study}/config.js +98 -41
  434. package/dist/study/convert.d.ts +33 -0
  435. package/dist/study/convert.js +432 -0
  436. package/dist/{lab → study}/device-presets.d.ts +10 -10
  437. package/dist/{lab → study}/device-presets.js +11 -11
  438. package/dist/study/discover.d.ts +75 -0
  439. package/dist/{lab → study}/discover.js +134 -95
  440. package/dist/{lab → study}/doctor.d.ts +19 -12
  441. package/dist/{lab → study}/doctor.js +58 -20
  442. package/dist/study/field-paths.d.ts +12 -0
  443. package/dist/study/field-paths.js +126 -0
  444. package/dist/study/files.d.ts +26 -0
  445. package/dist/study/files.js +44 -0
  446. package/dist/{lab → study}/init-templates.d.ts +2 -2
  447. package/dist/study/init-templates.js +421 -0
  448. package/dist/{lab → study}/init.d.ts +2 -2
  449. package/dist/{lab → study}/init.js +46 -11
  450. package/dist/study/keys.d.ts +4 -0
  451. package/dist/{lab → study}/keys.js +46 -12
  452. package/dist/study/migrate.d.ts +48 -0
  453. package/dist/study/migrate.js +408 -0
  454. package/dist/study/owned-files.d.ts +38 -0
  455. package/dist/study/owned-files.js +182 -0
  456. package/dist/{lab → study}/parse/actors.d.ts +5 -5
  457. package/dist/{lab → study}/parse/actors.js +14 -14
  458. package/dist/study/parse/comms.d.ts +12 -0
  459. package/dist/{lab → study}/parse/comms.js +5 -5
  460. package/dist/study/parse/execution.d.ts +19 -0
  461. package/dist/{lab → study}/parse/execution.js +13 -13
  462. package/dist/study/parse/study-v3.d.ts +21 -0
  463. package/dist/study/parse/study-v3.js +259 -0
  464. package/dist/study/parse/subject-state.d.ts +30 -0
  465. package/dist/{lab → study}/parse/subject-state.js +19 -19
  466. package/dist/{lab → study}/parse/subject.d.ts +3 -3
  467. package/dist/{lab → study}/parse/subject.js +34 -34
  468. package/dist/{lab → study}/parse/values.d.ts +3 -3
  469. package/dist/{lab → study}/parse/values.js +3 -3
  470. package/dist/{lab → study}/persona-resolve.d.ts +8 -8
  471. package/dist/{lab → study}/persona-resolve.js +6 -6
  472. package/dist/{lab → study}/plan-base.d.ts +7 -7
  473. package/dist/{lab → study}/plan-base.js +1 -1
  474. package/dist/{lab → study}/plan-participants.d.ts +12 -12
  475. package/dist/{lab → study}/plan-participants.js +4 -4
  476. package/dist/{lab → study}/plan-types.d.ts +31 -31
  477. package/dist/{lab → study}/plan-types.js +2 -2
  478. package/dist/study/plan.d.ts +13 -0
  479. package/dist/study/plan.js +101 -0
  480. package/dist/study/preflight-probes.d.ts +3 -0
  481. package/dist/{lab → study}/preflight-probes.js +20 -19
  482. package/dist/study/preflight-result.d.ts +8 -0
  483. package/dist/{lab → study}/preflight-result.js +5 -4
  484. package/dist/study/preflight.d.ts +94 -0
  485. package/dist/{lab → study}/preflight.js +12 -12
  486. package/dist/{lab → study}/requirements.d.ts +3 -3
  487. package/dist/{lab → study}/requirements.js +1 -1
  488. package/dist/study/route-inputs.d.ts +28 -0
  489. package/dist/{lab → study}/route-inputs.js +1 -1
  490. package/dist/{lab → study}/routing.d.ts +39 -33
  491. package/dist/{lab → study}/routing.js +60 -29
  492. package/dist/{lab/run-lab-events.d.ts → study/run-study-events.d.ts} +10 -13
  493. package/dist/{lab/run-lab-events.js → study/run-study-events.js} +3 -9
  494. package/dist/{lab/run-lab-homes.d.ts → study/run-study-homes.d.ts} +21 -18
  495. package/dist/{lab/run-lab-homes.js → study/run-study-homes.js} +1 -1
  496. package/dist/study/run-study-options.d.ts +28 -0
  497. package/dist/{lab/run-lab-options.js → study/run-study-options.js} +29 -25
  498. package/dist/{lab/lab-deps.d.ts → study/study-deps.d.ts} +8 -13
  499. package/dist/{lab/lab-deps.js → study/study-deps.js} +2 -2
  500. package/dist/{lab → study}/summary.d.ts +16 -15
  501. package/dist/{lab → study}/summary.js +21 -21
  502. package/dist/{lab → study}/tasks.d.ts +18 -18
  503. package/dist/{lab → study}/tasks.js +14 -14
  504. package/dist/{lab → study}/types.d.ts +202 -196
  505. package/dist/{lab → study}/types.js +3 -1
  506. package/dist/{lab → study}/validation.d.ts +27 -27
  507. package/dist/{lab → study}/validation.js +53 -51
  508. package/dist/study/warnings.d.ts +12 -0
  509. package/dist/{lab → study}/warnings.js +62 -34
  510. package/dist/subject/clone.d.ts +7 -7
  511. package/dist/subject/clone.js +2 -2
  512. package/dist/subject/desktop-cli.d.ts +1 -1
  513. package/dist/subject/desktop-cli.js +2 -2
  514. package/dist/subject/local-tree-archive.d.ts +2 -2
  515. package/dist/subject/local-tree-archive.js +4 -4
  516. package/dist/subject/local-tree.d.ts +4 -4
  517. package/dist/subject/node-bootstrap.js +1 -1
  518. package/dist/subject/runtime.js +9 -10
  519. package/dist/subject/serve.d.ts +5 -5
  520. package/dist/subject/serve.js +3 -3
  521. package/dist/subject/state.d.ts +4 -4
  522. package/dist/subject/state.js +1 -1
  523. package/dist/subject/steps.d.ts +6 -6
  524. package/dist/subject/steps.js +5 -5
  525. package/dist/substrates/command-failure.d.ts +3 -3
  526. package/dist/substrates/command-failure.js +3 -3
  527. package/dist/substrates/desktop-session.js +2 -2
  528. package/dist/substrates/detached.d.ts +6 -6
  529. package/dist/substrates/detached.js +7 -7
  530. package/dist/substrates/e2b/cdp-probe.d.ts +9 -9
  531. package/dist/substrates/e2b/cdp-probe.js +14 -17
  532. package/dist/substrates/e2b/desktop-browser.d.ts +6 -6
  533. package/dist/substrates/e2b/desktop-browser.js +9 -9
  534. package/dist/substrates/e2b/desktop-cdp.d.ts +10 -10
  535. package/dist/substrates/e2b/desktop-cdp.js +9 -9
  536. package/dist/substrates/e2b/desktop-executor.d.ts +2 -2
  537. package/dist/substrates/e2b/desktop-executor.js +13 -13
  538. package/dist/substrates/e2b/desktop-geometry.d.ts +4 -4
  539. package/dist/substrates/e2b/desktop-geometry.js +8 -8
  540. package/dist/substrates/e2b/desktop-media.d.ts +4 -4
  541. package/dist/substrates/e2b/desktop-media.js +1 -1
  542. package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +3 -3
  543. package/dist/substrates/e2b/desktop-screenshot-cleanup.js +3 -3
  544. package/dist/substrates/e2b/lifetime.js +1 -1
  545. package/dist/substrates/e2b/sandbox.d.ts +4 -4
  546. package/dist/substrates/e2b/sandbox.js +2 -2
  547. package/dist/substrates/e2b/sdk.d.ts +12 -12
  548. package/dist/substrates/e2b/sdk.js +7 -7
  549. package/dist/substrates/local/runtime-config.d.ts +4 -4
  550. package/dist/substrates/local/runtime-config.js +4 -4
  551. package/dist/tui/actions.d.ts +1 -1
  552. package/dist/tui/actions.js +13 -13
  553. package/dist/tui/contract.d.ts +23 -23
  554. package/dist/tui/contract.js +11 -11
  555. package/dist/tui/launch.d.ts +7 -7
  556. package/dist/tui/launch.js +36 -31
  557. package/dist/tui/project.js +5 -5
  558. package/dist/tui-app.js +139 -139
  559. package/dist/verify/actor.d.ts +8 -8
  560. package/dist/verify/actor.js +36 -36
  561. package/dist/verify/artifacts.d.ts +2 -2
  562. package/dist/verify/artifacts.js +3 -3
  563. package/dist/verify/context-growth.d.ts +9 -0
  564. package/dist/verify/context-growth.js +62 -0
  565. package/dist/verify/costs.d.ts +6 -6
  566. package/dist/verify/costs.js +8 -8
  567. package/dist/verify/shared-world-concurrent.d.ts +2 -2
  568. package/dist/verify/shared-world-concurrent.js +79 -76
  569. package/dist/verify/shared-world.d.ts +2 -2
  570. package/dist/verify/shared-world.js +16 -16
  571. package/dist/verify/subject.d.ts +5 -5
  572. package/dist/verify/subject.js +19 -19
  573. package/dist/verify/verify.js +94 -44
  574. package/docs/README.md +25 -32
  575. package/docs/architecture/actor-contract.md +60 -91
  576. package/docs/architecture/browser-control.md +1 -1
  577. package/docs/architecture/desktop-sessions.md +7 -7
  578. package/docs/architecture/external-public-shared-world.md +68 -65
  579. package/docs/architecture/github-feedback-loop.md +2 -5
  580. package/docs/architecture/guest-desktop.md +2 -2
  581. package/docs/architecture/observer.md +34 -34
  582. package/docs/architecture/restricted-codex-analysis.md +34 -28
  583. package/docs/architecture/serve.md +34 -37
  584. package/docs/architecture/state-driven-executor.md +55 -58
  585. package/docs/architecture/task-protocol-support.md +6 -6
  586. package/docs/architecture/terminal-product-route.md +70 -110
  587. package/docs/contracts/README.md +24 -0
  588. package/docs/contracts/adapter-admission.md +3 -3
  589. package/docs/contracts/adapter-fixtures.md +4 -7
  590. package/docs/contracts/core.md +1 -3
  591. package/docs/contracts/errors.md +62 -0
  592. package/docs/contracts/feedback.md +8 -9
  593. package/docs/contracts/policy.md +7 -12
  594. package/docs/contracts/run-bundle.md +42 -44
  595. package/docs/contracts/schemas.md +446 -368
  596. package/docs/contracts/study-analysis.md +7 -4
  597. package/docs/contracts/study-costs.md +28 -9
  598. package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +1 -1
  599. package/docs/decisions/0002-observer-is-one-self-contained-file.md +2 -2
  600. package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +3 -3
  601. package/docs/principles/actor-fidelity.md +4 -4
  602. package/docs/principles/engineering.md +3 -3
  603. package/docs/principles/invariants-and-defaults.md +38 -38
  604. package/docs/principles/self-driving-harness.md +1 -5
  605. package/docs/principles/three-roles.md +1 -1
  606. package/docs/product/automatic-analysis.md +7 -7
  607. package/examples/README.md +1 -1
  608. package/examples/participant/README.md +5 -5
  609. package/examples/participant/run.mjs +11 -10
  610. package/examples/scorer/README.md +3 -3
  611. package/examples/scorer/run.mjs +11 -12
  612. package/examples/scorer/scorer.mjs +3 -3
  613. package/package.json +16 -17
  614. package/skills/humanish/SKILL.md +64 -60
  615. package/skills/humanish/agents/openai.yaml +1 -1
  616. package/AGENTS.md +0 -99
  617. package/CONTRIBUTING.md +0 -148
  618. package/dist/actors/codex/qualified-versions.d.ts +0 -72
  619. package/dist/actors/codex/qualified-versions.js +0 -132
  620. package/dist/cli/commands/lab-format.d.ts +0 -8
  621. package/dist/cli/commands/lab-route-run.d.ts +0 -19
  622. package/dist/cli/commands/lab-route-scripted.d.ts +0 -17
  623. package/dist/cli/commands/lab-route-terminal.d.ts +0 -17
  624. package/dist/cli/commands/lab-run.d.ts +0 -9
  625. package/dist/cli/commands/lab.d.ts +0 -3
  626. package/dist/cli/commands/lab.js +0 -199
  627. package/dist/cli/renamed-options.d.ts +0 -11
  628. package/dist/cli/renamed-options.js +0 -18
  629. package/dist/lab/composition-rules.d.ts +0 -7
  630. package/dist/lab/config.d.ts +0 -7
  631. package/dist/lab/discover.d.ts +0 -65
  632. package/dist/lab/init-templates.js +0 -416
  633. package/dist/lab/keys.d.ts +0 -2
  634. package/dist/lab/parse/comms.d.ts +0 -12
  635. package/dist/lab/parse/execution.d.ts +0 -19
  636. package/dist/lab/parse/subject-state.d.ts +0 -30
  637. package/dist/lab/plan.d.ts +0 -19
  638. package/dist/lab/plan.js +0 -132
  639. package/dist/lab/preflight-probes.d.ts +0 -3
  640. package/dist/lab/preflight-result.d.ts +0 -7
  641. package/dist/lab/preflight.d.ts +0 -92
  642. package/dist/lab/route-inputs.d.ts +0 -28
  643. package/dist/lab/run-lab-options.d.ts +0 -28
  644. package/dist/lab/warnings.d.ts +0 -2
  645. package/dist/observer/static.d.ts +0 -39
  646. package/dist/observer/static.js +0 -369
  647. package/dist/run-lab.d.ts +0 -112
  648. package/docs/architecture/comms-inbox.md +0 -122
  649. package/docs/architecture/desktop-recording.md +0 -80
  650. package/docs/architecture/local-browser-runtime.md +0 -178
  651. package/docs/architecture/observer-review.md +0 -144
  652. package/docs/architecture/participant-media.md +0 -90
  653. package/docs/architecture/project-layout.md +0 -62
  654. package/docs/architecture/real-email-receiving.md +0 -136
  655. package/docs/assets/humanish-drawdb-hero.png +0 -0
  656. package/docs/assets/humanish-observer-hero.png +0 -0
  657. package/docs/goals/current.md +0 -207
  658. package/docs/product/lobby-trivia-3player-external-public.md +0 -77
  659. package/docs/product/open-source-install-experience.md +0 -240
  660. package/docs/ramp/README.md +0 -295
  661. package/docs/release/open-source-readiness.md +0 -222
  662. package/docs/release/public-readiness-standard.md +0 -210
  663. package/docs/roadmap/world-class-open-source-v0.md +0 -311
  664. /package/dist/{lab → study}/init-paths.d.ts +0 -0
  665. /package/dist/{lab → study}/init-paths.js +0 -0
  666. /package/dist/{lab → study}/init-plan.d.ts +0 -0
  667. /package/dist/{lab → study}/init-plan.js +0 -0
  668. /package/dist/{lab → study}/participant-assignment.d.ts +0 -0
  669. /package/dist/{lab → study}/participant-assignment.js +0 -0
  670. /package/dist/{lab → study}/persona.d.ts +0 -0
  671. /package/dist/{lab → study}/persona.js +0 -0
@@ -1,43 +1,43 @@
1
1
  import type { CuaActorDescriptor } from "../../actors/registry.js";
2
- import type { LabConfig, LabSubjectServe, LabSubjectStateCheckpoint } from "../../lab/types.js";
2
+ import type { StudyConfig, StudySubjectServe, StudySubjectStateCheckpoint } from "../../study/types.js";
3
3
  import type { RunScope } from "../../run/run.js";
4
- import type { ConcurrentSharedWorldLabErrorCode, ConcurrentSharedWorldLabResult, ConcurrentSharedWorldPlaneClass, FinishFacts, LiveParticipants, PlaneContext, PlaneResults, PlaneSelection, SharedWorldRunInput } from "./types.js";
5
- import type { LabDeps } from "../../lab/lab-deps.js";
6
- import type { SharedWorldPlan } from "../../lab/plan-types.js";
7
- /** What validation derived from the lab, which setup reads. */
8
- interface AdmittedLab {
4
+ import type { ConcurrentSharedWorldStudyErrorCode, ConcurrentSharedWorldStudyResult, ConcurrentSharedWorldPlaneClass, FinishFacts, LiveParticipants, PlaneContext, PlaneResults, PlaneSelection, SharedWorldRunInput } from "./types.js";
5
+ import type { StudyDeps } from "../../study/study-deps.js";
6
+ import type { SharedWorldPlan } from "../../study/plan-types.js";
7
+ /** What validation derived from the study, which setup reads. */
8
+ interface AdmittedStudy {
9
9
  plan: SharedWorldPlan;
10
10
  input: SharedWorldRunInput;
11
- /** Read for the subject's serve URL, which each seat's subject names. Seats, their count and
12
- * their host and entry come from the plan's participants. */
13
- config: LabConfig;
11
+ /** Read for the subject's serve URL, which each participant's subject names. Participants, their
12
+ * count and their host and entry come from the plan's participants. */
13
+ config: StudyConfig;
14
14
  requestedCwd: string;
15
- deps: LabDeps;
15
+ deps: StudyDeps;
16
16
  env: Record<string, string | undefined>;
17
17
  descriptor: CuaActorDescriptor;
18
18
  planeClass: ConcurrentSharedWorldPlaneClass;
19
19
  runBudget: PlaneContext["runBudget"];
20
20
  runSession: PlaneContext["runSession"];
21
- serve: LabSubjectServe | undefined;
21
+ serve: StudySubjectServe | undefined;
22
22
  localTreeRoute: boolean;
23
23
  subjectRepo: string;
24
24
  subjectEnvNames: string[];
25
- checkpoints: LabSubjectStateCheckpoint[];
25
+ checkpoints: StudySubjectStateCheckpoint[];
26
26
  openaiApiKey: string;
27
27
  e2bApiKey: string;
28
28
  knownSecretValues: string[];
29
29
  scrubKnownValues: (text: string) => string;
30
30
  publicRepo: string;
31
31
  hasGithubToken: boolean;
32
- fail: (code: ConcurrentSharedWorldLabErrorCode, message: string, actorLabel?: string) => ConcurrentSharedWorldLabResult;
32
+ fail: (code: ConcurrentSharedWorldStudyErrorCode, message: string, actorLabel?: string) => ConcurrentSharedWorldStudyResult;
33
33
  }
34
34
  /**
35
- * Starts the run and prepares what the planes read: the physical project, the run, the seat
35
+ * Starts the run and prepares what the planes read: the physical project, the run, the participant
36
36
  * specs, comms, the packed tree and email receiving. Returns the refusal when one of them fails.
37
37
  */
38
- export declare function prepareConcurrentRun(lab: AdmittedLab, scope: RunScope): Promise<{
38
+ export declare function prepareConcurrentRun(study: AdmittedStudy, scope: RunScope): Promise<{
39
39
  ok: false;
40
- result: ConcurrentSharedWorldLabResult;
40
+ result: ConcurrentSharedWorldStudyResult;
41
41
  } | {
42
42
  ok: true;
43
43
  ctx: PlaneContext;
@@ -1,5 +1,5 @@
1
1
  // Starts a concurrent shared-world run and prepares what its plane reads: the physical project,
2
- // the run, the seat specs, comms, the packed tree and email receiving.
2
+ // the run, the participant specs, comms, the packed tree and email receiving.
3
3
  import { randomBytes } from "node:crypto";
4
4
  import { realpath } from "node:fs/promises";
5
5
  import { buildRunSource } from "../../run/bundle.js";
@@ -19,19 +19,19 @@ function makeRunId() {
19
19
  const stamp = new Date().toISOString().replace(/[:.]/g, "-");
20
20
  return `concurrent-shared-world-${stamp}-${randomBytes(4).toString("hex")}`;
21
21
  }
22
- /** The provisioned plane's setup, or undefined when the lab declares no `subject.serve`. */
23
- function provisionedSetup(lab, prepared) {
24
- if (!lab.serve)
22
+ /** The provisioned plane's setup, or undefined when the study declares no `subject.serve`. */
23
+ function provisionedSetup(study, prepared) {
24
+ if (!study.serve)
25
25
  return undefined;
26
26
  const { subjectComms, ...rest } = prepared;
27
27
  return {
28
- serve: lab.serve,
29
- localTreeRoute: lab.localTreeRoute,
30
- subjectRepo: lab.subjectRepo,
31
- publicRepo: lab.publicRepo,
32
- subjectEnvNames: lab.subjectEnvNames,
33
- hasGithubToken: lab.hasGithubToken,
34
- checkpoints: lab.checkpoints,
28
+ serve: study.serve,
29
+ localTreeRoute: study.localTreeRoute,
30
+ subjectRepo: study.subjectRepo,
31
+ publicRepo: study.publicRepo,
32
+ subjectEnvNames: study.subjectEnvNames,
33
+ hasGithubToken: study.hasGithubToken,
34
+ checkpoints: study.checkpoints,
35
35
  commsEmail: subjectComms.email,
36
36
  commsPort: subjectComms.port,
37
37
  commsEnv: subjectComms.env,
@@ -48,26 +48,26 @@ async function bindPhysicalProject(requestedCwd) {
48
48
  return (await prepareSelectedOutputDirectory(path.dirname(physicalCwd), physicalCwd))
49
49
  .physicalPath;
50
50
  }
51
- function startConcurrentRun(lab, cwd, scope) {
52
- const { plan, input, deps } = lab;
51
+ function startConcurrentRun(study, cwd, scope) {
52
+ const { plan, input, deps } = study;
53
53
  return scope.startRun({
54
54
  cwd,
55
55
  runId: input.runId,
56
56
  mintRunId: makeRunId,
57
57
  mode: plan.dryRun ? "dry-run" : "live",
58
- lab: plan.lab,
58
+ study: plan.study,
59
59
  renderReview: renderConcurrentReviewMarkdown,
60
60
  observer: { open: input.open === true, render: deps.renderObserver },
61
61
  });
62
62
  }
63
63
  /**
64
- * Starts the run and prepares what the planes read: the physical project, the run, the seat
64
+ * Starts the run and prepares what the planes read: the physical project, the run, the participant
65
65
  * specs, comms, the packed tree and email receiving. Returns the refusal when one of them fails.
66
66
  */
67
- export async function prepareConcurrentRun(lab, scope) {
68
- const { plan, input, config, requestedCwd, deps, env, descriptor, planeClass, fail } = lab;
69
- const { runBudget, runSession, localTreeRoute, subjectEnvNames, publicRepo } = lab;
70
- const { openaiApiKey, e2bApiKey, knownSecretValues, scrubKnownValues } = lab;
67
+ export async function prepareConcurrentRun(study, scope) {
68
+ const { plan, input, config, requestedCwd, deps, env, descriptor, planeClass, fail } = study;
69
+ const { runBudget, runSession, localTreeRoute, subjectEnvNames, publicRepo } = study;
70
+ const { openaiApiKey, e2bApiKey, knownSecretValues, scrubKnownValues } = study;
71
71
  const { dryRun, concurrency } = plan;
72
72
  const cwd = await bindPhysicalProject(requestedCwd);
73
73
  const warnings = [];
@@ -85,12 +85,12 @@ export async function prepareConcurrentRun(lab, scope) {
85
85
  if (!packed.ok) {
86
86
  return {
87
87
  ok: false,
88
- result: fail("HUMANISH_CONCURRENT_SHARED_WORLD_LAB_FAILED", packed.message, descriptor.id),
88
+ result: fail("HUMANISH_SHARED_WORLD_FAILED", packed.message, descriptor.id),
89
89
  };
90
90
  }
91
91
  const localTreeArchive = packed.archive;
92
92
  const localTreeArchiveBuffer = packed.buffer;
93
- const started = await startConcurrentRun(lab, cwd, scope);
93
+ const started = await startConcurrentRun(study, cwd, scope);
94
94
  if (!started.ok)
95
95
  return { ok: false, result: fail(started.code, started.message, descriptor.id) };
96
96
  const { run } = started;
@@ -131,7 +131,7 @@ export async function prepareConcurrentRun(lab, scope) {
131
131
  return {
132
132
  ok: false,
133
133
  result: {
134
- ...fail("HUMANISH_CONCURRENT_SHARED_WORLD_LAB_INVALID", email.message, descriptor.id),
134
+ ...fail("HUMANISH_SHARED_WORLD_INVALID", email.message, descriptor.id),
135
135
  runId,
136
136
  },
137
137
  };
@@ -169,7 +169,7 @@ export async function prepareConcurrentRun(lab, scope) {
169
169
  receiving,
170
170
  warnings,
171
171
  };
172
- const provisioned = provisionedSetup(lab, {
172
+ const provisioned = provisionedSetup(study, {
173
173
  localTreeArchive,
174
174
  localTreeArchiveBuffer,
175
175
  subjectComms,
@@ -1,12 +1,12 @@
1
- import type { LabDeps } from "../../lab/lab-deps.js";
2
- import type { LabEvent } from "../../lab/run-lab-events.js";
3
- import type { RunLabHomes } from "../../lab/run-lab-homes.js";
1
+ import type { StudyDeps } from "../../study/study-deps.js";
2
+ import type { StudyEvent } from "../../study/run-study-events.js";
3
+ import type { RunStudyHomes } from "../../study/run-study-homes.js";
4
4
  import type { SharedWorldJudgment } from "../../run/judge.js";
5
- import type { BrowserScorer } from "../../lab/adapter-extension.js";
5
+ import type { BrowserScorer } from "../../study/adapter-extension.js";
6
6
  import type { AutomaticAnalysisResult } from "../../analysis/automatic-completion.js";
7
7
  import type { CuaActorDescriptor } from "../../actors/registry.js";
8
8
  import type { CommsReceivingRun } from "../../comms/receiving.js";
9
- import type { LabCommsEmail, LabCommsExternal, LabConfig } from "../../lab/types.js";
9
+ import type { StudyCommsEmail, StudyCommsExternal, StudyConfig } from "../../study/types.js";
10
10
  import type { DesktopResourceObservation } from "../../substrates/e2b/desktop-resources.js";
11
11
  import type { ObserverResult } from "../../observer/render.js";
12
12
  import type { ObserverRuntimeStreamUrl } from "../../observer/run-routes.js";
@@ -17,18 +17,18 @@ import type { LocalTreeArchive } from "../../subject/local-tree-archive.js";
17
17
  import type { LiveTraceFlush } from "../computer-use/live-flush.js";
18
18
  import type { CuaParticipantDeps, DesktopParticipantRun, CuaRunBudget, ParticipantRunOutcome } from "../computer-use/types.js";
19
19
  import type { ProvisionedPlaneSetup } from "./provisioned.js";
20
- import type { SharedWorldPlan } from "../../lab/plan-types.js";
21
- export declare const CONCURRENT_SHARED_WORLD_LAB_SCHEMA = "humanish.concurrent-shared-world-lab-result.v1";
20
+ import type { SharedWorldPlan } from "../../study/plan-types.js";
21
+ import { type StudyResultIdentity } from "../../run/study-result.js";
22
22
  export declare const CONCURRENT_SHARED_WORLD_PROVIDER_METADATA: {
23
23
  readonly mode: "concurrent-shared-world-lab";
24
24
  readonly tool: "humanish";
25
25
  };
26
26
  export declare const CONCURRENT_ATTRIBUTION_LIMITS: readonly ["concurrent", "best-effort-causal-attribution", "non-deterministic-shared-state", "window-and-snapshot-granularity", "contention-observed-not-proven-safe", "state-change-not-isolated-to-actors"];
27
- export interface RunConcurrentSharedWorldLabOptions {
27
+ export interface RunConcurrentSharedWorldStudyOptions {
28
28
  /** Cancels post-run analysis only. */
29
29
  analysisSignal?: AbortSignal;
30
30
  cwd: string;
31
- config: LabConfig;
31
+ config: StudyConfig;
32
32
  /** Resolved upstream (scenario.mode + CLI override); defaults safe (dry-run). */
33
33
  dryRun: boolean;
34
34
  open?: boolean;
@@ -40,37 +40,38 @@ export interface RunConcurrentSharedWorldLabOptions {
40
40
  env?: Readonly<Record<string, string | undefined>>;
41
41
  /**
42
42
  * Runs after a sandbox exists and before anything is provisioned on it: the provisioned plane's
43
- * subject sandbox, then each seat's desktop. The external-public plane has seats only.
43
+ * subject sandbox, then each participant's desktop. The external-public plane has participants
44
+ * only.
44
45
  */
45
- prepareDesktop?: NonNullable<RunLabHomes["prepareDesktop"]>;
46
+ prepareDesktop?: NonNullable<RunStudyHomes["prepareDesktop"]>;
46
47
  /** Awaited after a participant's live stream starts, and again after its sandbox is gone. */
47
- onStream?: NonNullable<RunLabHomes["onStream"]>;
48
- /** Reports subject phases to onEvent; built by normalizeRunLabOptions. */
49
- emit?: (event: LabEvent) => void;
48
+ onStream?: NonNullable<RunStudyHomes["onStream"]>;
49
+ /** Reports subject phases to onEvent; built by normalizeRunStudyOptions. */
50
+ emit?: (event: StudyEvent) => void;
50
51
  /** Test seams. */
51
- deps?: LabDeps;
52
- /** Scores the assembled evidence: `RunLabOptions.scorer`, or the scorer the CLI loads. */
52
+ deps?: StudyDeps;
53
+ /** Scores the assembled evidence: `RunStudyOptions.scorer`, or the scorer the CLI loads. */
53
54
  scorer?: BrowserScorer;
54
- /** Present only when the scorer was CONFIG-DECLARED and loaded by the CLI (#316);
55
+ /** Present only when the scorer was config-declared and loaded by the CLI;
55
56
  * core-stamped onto the bundle as evidence. Absent for library callers. */
56
57
  scorerProvenance?: RunScorerProvenance;
57
58
  }
58
- /** What a shared-world run takes besides its plan. The plan carries the config, dry run and lab. */
59
- export type SharedWorldRunInput = Omit<RunConcurrentSharedWorldLabOptions, "config" | "dryRun" | "lab">;
60
- export type ConcurrentSharedWorldLabErrorCode = "HUMANISH_LAB_ANALYSIS_INVALID" | "HUMANISH_LAB_TASKS_UNSUPPORTED" | "HUMANISH_LAB_OPTION_UNSUPPORTED" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_FAILED" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_ACTOR_UNSUPPORTED" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_INVALID" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_KEYS_MISSING"
59
+ /** What a shared-world run takes besides its plan. The plan carries the config, dry run and study. */
60
+ export type SharedWorldRunInput = Omit<RunConcurrentSharedWorldStudyOptions, "config" | "dryRun">;
61
+ export type ConcurrentSharedWorldStudyErrorCode = "HUMANISH_STUDY_ANALYSIS_INVALID" | "HUMANISH_STUDY_TASKS_UNSUPPORTED" | "HUMANISH_STUDY_OPTION_UNSUPPORTED" | "HUMANISH_STUDY_V2_UNSUPPORTED" | "HUMANISH_SHARED_WORLD_FAILED" | "HUMANISH_SHARED_WORLD_ACTOR_UNSUPPORTED" | "HUMANISH_SHARED_WORLD_INVALID" | "HUMANISH_SHARED_WORLD_KEYS_MISSING"
61
62
  /** A local-agent brain's CLI is not on `PATH`. */
62
- | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_AGENT_MISSING"
63
+ | "HUMANISH_SHARED_WORLD_AGENT_MISSING"
63
64
  /** A local-agent brain's CLI is signed out, or could not report its sign-in status. */
64
- | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_AGENT_SIGNIN_REQUIRED"
65
+ | "HUMANISH_SHARED_WORLD_AGENT_SIGNIN_REQUIRED"
65
66
  /** A dollar cap that cannot be priced: an unpriced model, or a ChatGPT-account Codex brain. */
66
- | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_UNPRICED_CAP" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_SUBJECT_ENV_MISSING" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_GETHOST_UNAVAILABLE" | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_HANDOFF_TIMEOUT" | "HUMANISH_RUN_ID_IN_USE"
67
- /** A declared adopter-hosted comms catch (#328) did not answer as a humanish catch — fail closed
67
+ | "HUMANISH_SHARED_WORLD_UNPRICED_CAP" | "HUMANISH_SHARED_WORLD_SUBJECT_ENV_MISSING" | "HUMANISH_SHARED_WORLD_GETHOST_UNAVAILABLE" | "HUMANISH_SHARED_WORLD_HANDOFF_TIMEOUT" | "HUMANISH_RUN_ID_IN_USE"
68
+ /** A declared adopter-hosted comms catch did not answer as a humanish catch. Fail closed
68
69
  * before any actor spend, since the funnel would silently collect nothing. */
69
- | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_COMMS_CATCH_UNREACHABLE"
70
+ | "HUMANISH_SHARED_WORLD_COMMS_CATCH_UNREACHABLE"
70
71
  /** comms.email.external.authTokenEnv names a token shorter than MIN_CATCH_TOKEN_LENGTH or not
71
72
  * well-formed Unicode (src/comms/external-evidence.ts). Refused before the catch is probed. */
72
- | "HUMANISH_CONCURRENT_SHARED_WORLD_LAB_COMMS_TOKEN_INVALID";
73
- /** The two plane classes of the concurrent shared-world route (#164 phase 2). */
73
+ | "HUMANISH_SHARED_WORLD_COMMS_TOKEN_INVALID";
74
+ /** The two plane classes of the concurrent shared-world route. */
74
75
  export type ConcurrentSharedWorldPlaneClass = "provisioned-getHost" | "external-public";
75
76
  export declare const EXTERNAL_PUBLIC_ATTRIBUTION_LIMITS: readonly ["concurrent", "best-effort-causal-attribution", "non-deterministic-shared-state", "window-and-snapshot-granularity", "contention-observed-not-proven-safe", "state-change-not-isolated-to-actors", "external-public-plane", "operator-attested-target-not-harness-controlled", "no-synthetic-attestation", "no-authoritative-shared-state-proof", "concurrency-by-temporal-co-occupancy-only"];
76
77
  /** One persona's outcome against the contended world (the "M of N" headline). */
@@ -97,15 +98,13 @@ export interface ConcurrentSharedWorldParticipantResult {
97
98
  killed: boolean;
98
99
  };
99
100
  error?: {
100
- code: ConcurrentSharedWorldLabErrorCode;
101
+ code: ConcurrentSharedWorldStudyErrorCode;
101
102
  message: string;
102
103
  };
103
104
  }
104
- export interface ConcurrentSharedWorldLabResult extends AutomaticAnalysisResult {
105
- schema: typeof CONCURRENT_SHARED_WORLD_LAB_SCHEMA;
105
+ export interface ConcurrentSharedWorldStudyResult extends AutomaticAnalysisResult, StudyResultIdentity<"shared-world"> {
106
106
  ok: boolean;
107
107
  cwd: string;
108
- labId: string;
109
108
  actor: string;
110
109
  topology: "shared-world";
111
110
  topologyMode: "concurrent";
@@ -124,16 +123,16 @@ export interface ConcurrentSharedWorldLabResult extends AutomaticAnalysisResult
124
123
  };
125
124
  /** Whether ≥2 actor windows overlapped in time (proven concurrency; live only). */
126
125
  overlapProven?: boolean;
127
- /** Max participants observed live at the same instant (live only) — the honest simultaneity number; a
128
- * 6-participant run capped at 3 reports 3 here, never 6 (#350). */
126
+ /** Max participants observed live at the same instant (live only): the simultaneity number; a
127
+ * 6-participant run capped at 3 reports 3 here, never 6. */
129
128
  maxSimultaneousLanes?: number;
130
- /** Subject provenance (invariant 5): the one shared plane. */
129
+ /** Subject provenance: the one shared plane. */
131
130
  subject?: RunSubjectProvenance;
132
131
  roles: ConcurrentSharedWorldParticipantResult[];
133
132
  observer?: ObserverResult;
134
133
  warnings: string[];
135
134
  error?: {
136
- code: ConcurrentSharedWorldLabErrorCode;
135
+ code: ConcurrentSharedWorldStudyErrorCode;
137
136
  message: string;
138
137
  };
139
138
  }
@@ -158,12 +157,12 @@ type StartedRun = Extract<Awaited<ReturnType<RunScope["startRun"]>>, {
158
157
  export interface PlaneContext {
159
158
  plan: SharedWorldPlan;
160
159
  input: SharedWorldRunInput;
161
- /** Read for the subject's serve URL, which each seat's subject names. Seats, their count and
162
- * their host and entry come from the plan's participants. */
163
- config: LabConfig;
160
+ /** Read for the subject's serve URL, which each participant's subject names. Participants, their
161
+ * count and their host and entry come from the plan's participants. */
162
+ config: StudyConfig;
164
163
  descriptor: CuaActorDescriptor;
165
164
  /** The run's test seams; empty outside tests. */
166
- deps: LabDeps;
165
+ deps: StudyDeps;
167
166
  env: Record<string, string | undefined>;
168
167
  concurrency: number;
169
168
  runBudget: CuaRunBudget | undefined;
@@ -171,7 +170,8 @@ export interface PlaneContext {
171
170
  openaiApiKey: string;
172
171
  e2bApiKey: string;
173
172
  scrubKnownValues: (text: string) => string;
174
- /** The values scrubKnownValues removes. Real email receiving adds its secrets before seats start. */
173
+ /** The values scrubKnownValues removes. Real email receiving adds its secrets before participants
174
+ * start. */
175
175
  knownSecretValues: readonly string[];
176
176
  cwd: string;
177
177
  run: StartedRun;
@@ -191,8 +191,9 @@ export interface PlaneContext {
191
191
  warnings: string[];
192
192
  }
193
193
  /**
194
- * What the seats feed while they run. A plane sets the attached Observer and starts the trace
195
- * flush; each seat's onStream appends stream URLs; the orchestrator reads all three at finish.
194
+ * What the participants feed while they run. A plane sets the attached Observer and starts the
195
+ * trace flush; each participant's onStream appends stream URLs; the orchestrator reads all three at
196
+ * finish.
196
197
  */
197
198
  export interface LiveParticipants {
198
199
  observer?: ObserverResult & {
@@ -201,17 +202,17 @@ export interface LiveParticipants {
201
202
  flush?: LiveTraceFlush;
202
203
  readonly streamUrls: ObserverRuntimeStreamUrl[];
203
204
  }
204
- /** An adopter-hosted comms catch (#328) and the inbox its personas open. */
205
+ /** An adopter-hosted comms catch and the inbox its personas open. */
205
206
  export interface ExternalCommsWiring {
206
- external: LabCommsExternal;
207
- email: LabCommsEmail;
207
+ external: StudyCommsExternal;
208
+ email: StudyCommsEmail;
208
209
  inboxUrl: string;
209
210
  }
210
211
  /** What buildConcurrentSharedWorldBundle projects into a run bundle. */
211
212
  export interface ConcurrentBundleArgs {
212
213
  /** The run's judgment (judgeSharedWorldRun over the other fields). */
213
214
  judgment: SharedWorldJudgment;
214
- /** The run this bundle belongs to; the bundle head reads its id, mode, start and lab. */
215
+ /** The run this bundle belongs to; the bundle head reads its id, mode, start and study. */
215
216
  run: BundleRun;
216
217
  plan: SharedWorldPlan;
217
218
  descriptor: CuaActorDescriptor;
@@ -225,19 +226,20 @@ export interface ConcurrentBundleArgs {
225
226
  seedDigest: string;
226
227
  subjectCommit?: string;
227
228
  hostDigest?: string;
228
- /** Run-level digest-only comms-thread evidence path (humanish.comms-thread.v1), when a comms lab
229
+ /** Run-level digest-only comms-thread evidence path (humanish.comms-thread.v1), when a comms study
229
230
  * captured mail into the subject sandbox's catch. Registered on the first persona stream (it is a
230
231
  * property of the one shared app, and belongs to no single persona). */
231
232
  commsArtifactPath?: string;
232
- /** #164 phase 2: the plane-class discriminator (default provisioned-getHost, byte-stable). */
233
+ /** The plane-class discriminator (default provisioned-getHost, byte-stable). */
233
234
  planeClass?: ConcurrentSharedWorldPlaneClass;
234
- /** external-public only: sha256-16 of the observed origin the seats converged on (the convergence
235
- * proof — what the seats actually reached, tolerant of a declared->observed redirect). */
235
+ /** external-public only: sha256-16 of the observed origin the participants converged on (the
236
+ * convergence proof: what the participants actually reached, tolerant of a declared->observed
237
+ * redirect). */
236
238
  publicOriginDigest?: string;
237
- /** external-public only: sha256-16 of the operator-DECLARED plane origin (evidence/reference only;
239
+ /** external-public only: sha256-16 of the operator-declared plane origin (evidence/reference only;
238
240
  * never asserted equal to the observed origin, since a cross-origin redirect is normal). */
239
241
  declaredOriginDigest?: string;
240
- /** external-public only: sha256-16 of the shared /lobby/CODE path all seats converged on. */
242
+ /** external-public only: sha256-16 of the /lobby/CODE path all participants converged on. */
241
243
  lobbyConvergenceDigest?: string;
242
244
  runError?: string;
243
245
  /** The provisioned plane's own desktop; absent on external-public planes and dry runs. */
@@ -263,7 +265,7 @@ export interface PlaneResults {
263
265
  /** Which plane runs, and the setup it needs beyond the plane context. */
264
266
  export interface PlaneSelection {
265
267
  planeClass: ConcurrentSharedWorldPlaneClass;
266
- /** Undefined when the lab declares no `subject.serve`. */
268
+ /** Undefined when the study declares no `subject.serve`. */
267
269
  provisioned: ProvisionedPlaneSetup | undefined;
268
270
  externalWiring: ExternalCommsWiring | undefined;
269
271
  }
@@ -1,6 +1,6 @@
1
1
  // The concurrent shared-world route's schema constants, attribution limits, options and result
2
- // types, and the per-seat result the planes collect.
3
- export const CONCURRENT_SHARED_WORLD_LAB_SCHEMA = "humanish.concurrent-shared-world-lab-result.v1";
2
+ // types, and the per-participant result the planes collect.
3
+ import {} from "../../run/study-result.js";
4
4
  export const CONCURRENT_SHARED_WORLD_PROVIDER_METADATA = {
5
5
  mode: "concurrent-shared-world-lab",
6
6
  tool: "humanish",
@@ -15,8 +15,8 @@ export const CONCURRENT_ATTRIBUTION_LIMITS = [
15
15
  "contention-observed-not-proven-safe",
16
16
  "state-change-not-isolated-to-actors",
17
17
  ];
18
- // EXTERNAL-PUBLIC plane class: the honest-downgrade attribution ceiling. The concurrent family
19
- // (an honest ceiling) plus the mandatory external-public disclosures, mirrored in the required
18
+ // External-public plane class: the downgraded attribution ceiling. The concurrent family
19
+ // plus the mandatory external-public disclosures, mirrored in the required
20
20
  // set in verify/shared-world-concurrent.ts (CONCURRENT_ATTRIBUTION_LIMITS +
21
21
  // EXTERNAL_PUBLIC_EXTRA_LIMITS). Verify fails closed on a missing one.
22
22
  export const EXTERNAL_PUBLIC_ATTRIBUTION_LIMITS = [
@@ -1,15 +1,15 @@
1
1
  import type { ActorTrace } from "../../actors/contract.js";
2
2
  import { type RunBundle, type RunScorerProvenance } from "../../run/bundle.js";
3
- import { type ScorerOutcome } from "../../lab/adapter-extension.js";
3
+ import { type ScorerOutcome } from "../../study/adapter-extension.js";
4
4
  import type { TerminalLedgers, TerminalScorer } from "./types.js";
5
5
  /**
6
- * Run the layer-6 product-adapter extension seam (issue #154 acceptance #8) over the assembled
6
+ * Run the product-adapter extension seam over the assembled
7
7
  * evidence and attach its results to the bundle in place, without core knowing any product noun.
8
8
  * The review is not touched here: the returned failures are folded into it by the caller.
9
9
  *
10
10
  * - `score`: when present, the returned namespaced `RunAdapterScore` lands on `bundle.adapterScore`.
11
11
  * For a library caller (no `scorerProvenance`), the adapter score is additive and never a
12
- * failure. For a config-declared scorer (#316; `scorerProvenance` present), a status:"fail" is a
12
+ * failure. For a config-declared scorer (`scorerProvenance` present), a status:"fail" is a
13
13
  * failure (the keystone route is the product's own definition of pass/fail), and so is a scorer
14
14
  * that throws or returns a malformed value, so a crashed declared gate is never a silent green.
15
15
  * - `deriveFeedback`: when present, the returned candidates are appended to
@@ -27,11 +27,11 @@ export declare function applyAdapterExtensionSeam(args: {
27
27
  ledgers: TerminalLedgers;
28
28
  transcript: string;
29
29
  product: string;
30
- labId: string;
30
+ studyId: string;
31
31
  runId: string;
32
32
  sanitize: (text: string) => string;
33
33
  warnings: string[];
34
- /** Present only when the scorer was CONFIG-DECLARED (#316) — the "declared" marker that opts the
34
+ /** Present only when the scorer was config-declared. It is the "declared" marker that opts the
35
35
  * terminal route into flip-on-fail. Absent for library callers (additive, back-compat). */
36
36
  scorerProvenance?: RunScorerProvenance;
37
37
  }): Promise<ScorerOutcome>;
@@ -1,14 +1,14 @@
1
1
  import {} from "../../run/bundle.js";
2
2
  import { isRunAdapterScore } from "../../run/bundle-shape.js";
3
- import { adapterScoreFailureMessage, declaredScorerThrew, DECLARED_SCORER_MALFORMED, frozenBundleView, isAdapterFeedbackCandidate, } from "../../lab/adapter-extension.js";
3
+ import { adapterScoreFailureMessage, declaredScorerThrew, DECLARED_SCORER_MALFORMED, frozenBundleView, isAdapterFeedbackCandidate, } from "../../study/adapter-extension.js";
4
4
  /**
5
- * Run the layer-6 product-adapter extension seam (issue #154 acceptance #8) over the assembled
5
+ * Run the product-adapter extension seam over the assembled
6
6
  * evidence and attach its results to the bundle in place, without core knowing any product noun.
7
7
  * The review is not touched here: the returned failures are folded into it by the caller.
8
8
  *
9
9
  * - `score`: when present, the returned namespaced `RunAdapterScore` lands on `bundle.adapterScore`.
10
10
  * For a library caller (no `scorerProvenance`), the adapter score is additive and never a
11
- * failure. For a config-declared scorer (#316; `scorerProvenance` present), a status:"fail" is a
11
+ * failure. For a config-declared scorer (`scorerProvenance` present), a status:"fail" is a
12
12
  * failure (the keystone route is the product's own definition of pass/fail), and so is a scorer
13
13
  * that throws or returns a malformed value, so a crashed declared gate is never a silent green.
14
14
  * - `deriveFeedback`: when present, the returned candidates are appended to
@@ -20,7 +20,7 @@ import { adapterScoreFailureMessage, declaredScorerThrew, DECLARED_SCORER_MALFOR
20
20
  * re-checks the surviving shapes downstream, so the seam stays fail-closed end to end.
21
21
  */
22
22
  export async function applyAdapterExtensionSeam(args) {
23
- const { scorer, bundle, trace, ledgers, transcript, product, labId, runId, sanitize, warnings, scorerProvenance, } = args;
23
+ const { scorer, bundle, trace, ledgers, transcript, product, studyId, runId, sanitize, warnings, scorerProvenance, } = args;
24
24
  if (!scorer?.score && !scorer?.deriveFeedback)
25
25
  return { failures: [] };
26
26
  const declared = scorerProvenance !== undefined;
@@ -28,17 +28,17 @@ export async function applyAdapterExtensionSeam(args) {
28
28
  // still loaded and attempted).
29
29
  if (scorerProvenance)
30
30
  bundle.scorerProvenance = scorerProvenance;
31
- // The scorer sees a READ-ONLY view of the bundle so it cannot mutate noSpend/cost/review in place to
31
+ // The scorer sees a read-only view of the bundle so it cannot mutate noSpend/cost/review in place to
32
32
  // launder a verdict (a tamper attempt throws and is caught as a hook failure below). The seam stamps
33
33
  // the real bundle. The transcript is the same normalized, source-scrubbed text the run persists as
34
- // terminal-transcript.txt — no new exposure beyond what disk already holds (#341).
34
+ // terminal-transcript.txt, so the scorer sees nothing beyond what disk already holds.
35
35
  const ctx = {
36
36
  bundle: frozenBundleView(bundle),
37
37
  trace,
38
38
  ledgers,
39
39
  transcript,
40
40
  product,
41
- labId,
41
+ studyId,
42
42
  runId,
43
43
  };
44
44
  // Best-effort re-scrub of the adapter payload: round-trip the whole JSON through the run's denylist
@@ -46,7 +46,7 @@ export async function applyAdapterExtensionSeam(args) {
46
46
  // local paths, and misses encoded/split/custom secrets, DB passwords, PII, or abs paths outside
47
47
  // the denylist. A
48
48
  // payload from config-declared code is acceptable only because the trust boundary (the party who
49
- // declares the scorer runs the lab) already permits direct exfiltration; the re-scrub is
49
+ // declares the scorer runs the study) already permits direct exfiltration; the re-scrub is
50
50
  // defense-in-depth, not a wall.
51
51
  const scrubValue = (value) => JSON.parse(sanitize(JSON.stringify(value)));
52
52
  // Set for a declared scorer that fails to render a pass verdict (status:"fail", malformed, or throw).
@@ -59,7 +59,7 @@ export async function applyAdapterExtensionSeam(args) {
59
59
  const cleaned = scrubValue(score);
60
60
  if (isRunAdapterScore(cleaned)) {
61
61
  bundle.adapterScore = cleaned;
62
- // A CONFIG-DECLARED terminal scorer owns the product verdict: a status:"fail" fails the
62
+ // A config-declared terminal scorer owns the product verdict: a status:"fail" fails the
63
63
  // review and the run result. A library caller keeps the additive no-fail behavior.
64
64
  const message = declared ? adapterScoreFailureMessage(bundle) : undefined;
65
65
  if (message !== undefined)
@@ -1,27 +1,27 @@
1
1
  import type { ActorPersonaRef, ActorTrace } from "../../actors/contract.js";
2
- import type { LabScenarioCaps, LabRuntimeAuth } from "../../lab/types.js";
2
+ import type { StudyScenarioCaps, StudyRuntimeAuth } from "../../study/types.js";
3
3
  import { type RunBundle, type RunCostSummary, type BundleRun } from "../../run/bundle.js";
4
- import type { Verdict } from "../../run/judge.js";
4
+ import { type Verdict } from "../../run/judge.js";
5
5
  import type { TerminalLedgers } from "./types.js";
6
6
  /**
7
- * Project the terminal-product lab run into a humanish.run-bundle.v1 (no schema change — a new
8
- * producer only). DRY-RUN: a contract bundle. The terminal stream is a contract placeholder
7
+ * Project the terminal-product run into a humanish.run-bundle.v1 (no schema change: a new
8
+ * producer only). Dry run: a contract bundle. The terminal stream is a contract placeholder
9
9
  * (stdin disabled, no captured tail, because nothing ran), the subject is declared unpinned, and
10
10
  * the caps/policies/runtime-auth declarations are recorded without pretending that live ledgers
11
11
  * exist. The shipped live builder fills the same evidence contract. Exported for tests.
12
12
  */
13
13
  export declare function buildTerminalProductBundle(args: {
14
- /** The run this bundle belongs to; the bundle head reads its id, mode, start and lab. */
14
+ /** The run this bundle belongs to; the bundle head reads its id, mode, start and study. */
15
15
  run: BundleRun;
16
16
  actorId: string;
17
17
  dryRun: boolean;
18
- labId: string;
19
- labTitle?: string;
18
+ studyId: string;
19
+ studyTitle?: string;
20
20
  mission: string;
21
21
  persona: ActorPersonaRef;
22
22
  productName: string;
23
23
  publicSurfaces: string[];
24
- caps?: LabScenarioCaps;
24
+ caps?: StudyScenarioCaps;
25
25
  runtimeAuth?: string;
26
26
  stdin: "disabled" | "planned" | "sent";
27
27
  policies: {
@@ -42,18 +42,18 @@ export declare function buildTerminalProductBundle(args: {
42
42
  * mode==="live") enforces the ledgers + proven cleanup + interventions-present over this bundle.
43
43
  */
44
44
  export declare function buildLiveTerminalProductBundle(args: {
45
- /** The run this bundle belongs to; the bundle head reads its id, mode, start and lab. */
45
+ /** The run this bundle belongs to; the bundle head reads its id, mode, start and study. */
46
46
  run: BundleRun;
47
47
  actorId: string;
48
- labId: string;
49
- labTitle?: string;
48
+ studyId: string;
49
+ studyTitle?: string;
50
50
  mission: string;
51
51
  persona: ActorPersonaRef;
52
52
  productName: string;
53
53
  publicSurfaces: string[];
54
- caps?: LabScenarioCaps;
54
+ caps?: StudyScenarioCaps;
55
55
  runtimeAuthKeyName: string;
56
- runtimeAuth?: LabRuntimeAuth;
56
+ runtimeAuth?: StudyRuntimeAuth;
57
57
  policies: {
58
58
  allowPrivateRepoAccess: boolean;
59
59
  allowProviderCredentials: boolean;