humanish 0.106.1 → 0.108.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 (668) hide show
  1. package/ARCHITECTURE.md +38 -32
  2. package/CHANGELOG.md +28 -0
  3. package/CONTEXT.md +51 -41
  4. package/README.md +152 -174
  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-client.js +2 -1
  14. package/dist/actors/codex/app-server-trace.d.ts +0 -1
  15. package/dist/actors/codex/app-server-trace.js +1 -3
  16. package/dist/actors/codex/app-server-ui.js +1 -1
  17. package/dist/actors/codex/app-server.js +2 -1
  18. package/dist/actors/codex/codex-admission.d.ts +91 -0
  19. package/dist/actors/codex/codex-admission.js +150 -0
  20. package/dist/actors/codex/protocol-compat.d.ts +27 -0
  21. package/dist/actors/codex/protocol-compat.js +357 -0
  22. package/dist/actors/codex/protocol-contract.d.ts +61 -0
  23. package/dist/actors/codex/protocol-contract.js +471 -0
  24. package/dist/actors/codex/restricted-executable.d.ts +28 -4
  25. package/dist/actors/codex/restricted-executable.js +104 -29
  26. package/dist/actors/codex/restricted-launch.d.ts +9 -2
  27. package/dist/actors/codex/restricted-launch.js +43 -4
  28. package/dist/actors/codex/restricted-notifications.d.ts +101 -0
  29. package/dist/actors/codex/restricted-notifications.js +277 -0
  30. package/dist/actors/codex/restricted-participant.d.ts +30 -0
  31. package/dist/actors/codex/restricted-participant.js +66 -6
  32. package/dist/actors/codex/restricted-policy.d.ts +11 -3
  33. package/dist/actors/codex/restricted-policy.js +2 -2
  34. package/dist/actors/codex/restricted-session.d.ts +16 -3
  35. package/dist/actors/codex/restricted-session.js +60 -22
  36. package/dist/actors/codex/restricted-transport.d.ts +29 -0
  37. package/dist/actors/codex/restricted-transport.js +139 -27
  38. package/dist/actors/codex/restricted-turn.d.ts +19 -4
  39. package/dist/actors/codex/restricted-turn.js +43 -30
  40. package/dist/actors/computer-use/actor.d.ts +17 -17
  41. package/dist/actors/computer-use/actor.js +6 -6
  42. package/dist/actors/computer-use/admission-limit.d.ts +1 -1
  43. package/dist/actors/computer-use/admission-limit.js +1 -1
  44. package/dist/actors/computer-use/loop/actions.d.ts +3 -3
  45. package/dist/actors/computer-use/loop/actions.js +10 -10
  46. package/dist/actors/computer-use/loop/backstop.d.ts +3 -3
  47. package/dist/actors/computer-use/loop/backstop.js +15 -13
  48. package/dist/actors/computer-use/loop/ending.d.ts +7 -7
  49. package/dist/actors/computer-use/loop/ending.js +9 -9
  50. package/dist/actors/computer-use/loop/observation.d.ts +2 -2
  51. package/dist/actors/computer-use/loop/observation.js +9 -9
  52. package/dist/actors/computer-use/loop/provider-call.d.ts +1 -1
  53. package/dist/actors/computer-use/loop/provider-call.js +1 -1
  54. package/dist/actors/computer-use/loop/session.js +3 -3
  55. package/dist/actors/computer-use/loop/spend.d.ts +2 -2
  56. package/dist/actors/computer-use/loop/spend.js +4 -4
  57. package/dist/actors/computer-use/loop/trace.js +11 -10
  58. package/dist/actors/computer-use/loop/types.d.ts +37 -26
  59. package/dist/actors/computer-use/loop/usage.js +2 -2
  60. package/dist/actors/computer-use/loop.js +4 -4
  61. package/dist/actors/computer-use/openai-context.d.ts +37 -0
  62. package/dist/actors/computer-use/openai-context.js +214 -0
  63. package/dist/actors/computer-use/openai-provider.d.ts +12 -9
  64. package/dist/actors/computer-use/openai-provider.js +47 -36
  65. package/dist/actors/computer-use/openai-requests.d.ts +36 -10
  66. package/dist/actors/computer-use/openai-requests.js +82 -15
  67. package/dist/actors/computer-use/openai-wire.d.ts +19 -7
  68. package/dist/actors/computer-use/openai-wire.js +36 -34
  69. package/dist/actors/contract.d.ts +86 -49
  70. package/dist/actors/contract.js +29 -23
  71. package/dist/actors/local-agent/claude-session.d.ts +1 -1
  72. package/dist/actors/local-agent/claude-session.js +10 -9
  73. package/dist/actors/local-agent/cli.d.ts +8 -6
  74. package/dist/actors/local-agent/cli.js +24 -28
  75. package/dist/actors/local-agent/readiness.d.ts +2 -2
  76. package/dist/actors/local-agent/readiness.js +4 -4
  77. package/dist/actors/reasoning-effort.js +6 -6
  78. package/dist/actors/registry.d.ts +10 -10
  79. package/dist/actors/registry.js +18 -17
  80. package/dist/actors/scripted-browser/actor.d.ts +8 -8
  81. package/dist/actors/scripted-browser/actor.js +16 -16
  82. package/dist/actors/scripted-browser/browser-command.js +1 -1
  83. package/dist/actors/scripted-browser/journey.js +15 -4
  84. package/dist/actors/scripted-browser/steps.js +19 -1
  85. package/dist/actors/scripted-browser/types.d.ts +12 -2
  86. package/dist/actors/stop-conditions.d.ts +1 -1
  87. package/dist/actors/stop-conditions.js +1 -3
  88. package/dist/analysis/automatic-completion.d.ts +13 -8
  89. package/dist/analysis/automatic-completion.js +14 -8
  90. package/dist/analysis/automatic-config.d.ts +1 -1
  91. package/dist/analysis/automatic-config.js +2 -2
  92. package/dist/analysis/automatic.d.ts +10 -4
  93. package/dist/analysis/automatic.js +17 -13
  94. package/dist/analysis/codex-config.d.ts +6 -2
  95. package/dist/analysis/codex-config.js +22 -14
  96. package/dist/analysis/diagnostics.d.ts +23 -0
  97. package/dist/analysis/diagnostics.js +112 -0
  98. package/dist/analysis/evidence-sources.js +2 -2
  99. package/dist/analysis/evidence.js +6 -6
  100. package/dist/analysis/execute.d.ts +7 -1
  101. package/dist/analysis/execute.js +39 -12
  102. package/dist/analysis/job.d.ts +8 -5
  103. package/dist/analysis/job.js +15 -14
  104. package/dist/analysis/load.d.ts +1 -1
  105. package/dist/analysis/load.js +5 -5
  106. package/dist/analysis/provider.d.ts +9 -1
  107. package/dist/analysis/restricted-codex.d.ts +2 -0
  108. package/dist/analysis/restricted-codex.js +10 -1
  109. package/dist/analysis/service.d.ts +2 -0
  110. package/dist/analysis/service.js +35 -16
  111. package/dist/analysis/sharing.d.ts +2 -2
  112. package/dist/analysis/sharing.js +5 -5
  113. package/dist/analysis/store-executions.d.ts +5 -5
  114. package/dist/analysis/store-executions.js +12 -12
  115. package/dist/analysis/store.d.ts +4 -4
  116. package/dist/analysis/store.js +13 -13
  117. package/dist/cli/commands/analysis-signals.d.ts +2 -1
  118. package/dist/cli/commands/analysis-signals.js +4 -1
  119. package/dist/cli/commands/analyze.js +23 -18
  120. package/dist/cli/commands/codex.js +9 -9
  121. package/dist/cli/commands/comms.js +62 -34
  122. package/dist/cli/commands/feedback.js +20 -21
  123. package/dist/cli/commands/lab-format.d.ts +5 -4
  124. package/dist/cli/commands/lab-format.js +35 -23
  125. package/dist/cli/commands/lab-route-computer-use.d.ts +0 -2
  126. package/dist/cli/commands/lab-route-computer-use.js +32 -21
  127. package/dist/cli/commands/lab-route-preview.d.ts +1 -3
  128. package/dist/cli/commands/lab-route-preview.js +7 -7
  129. package/dist/cli/commands/lab-route-run.d.ts +6 -4
  130. package/dist/cli/commands/lab-route-run.js +6 -2
  131. package/dist/cli/commands/lab-route-scripted.d.ts +0 -2
  132. package/dist/cli/commands/lab-route-scripted.js +0 -1
  133. package/dist/cli/commands/lab-route-shared-world.d.ts +0 -2
  134. package/dist/cli/commands/lab-route-shared-world.js +3 -4
  135. package/dist/cli/commands/lab-route-terminal.d.ts +0 -2
  136. package/dist/cli/commands/lab-route-terminal.js +0 -1
  137. package/dist/cli/commands/lab-run.js +84 -54
  138. package/dist/cli/commands/lab-scorer.d.ts +2 -4
  139. package/dist/cli/commands/lab-scorer.js +1 -1
  140. package/dist/cli/commands/migrate.d.ts +4 -0
  141. package/dist/cli/commands/migrate.js +65 -0
  142. package/dist/cli/commands/observe.js +168 -107
  143. package/dist/cli/commands/run-command.d.ts +10 -0
  144. package/dist/cli/commands/run-command.js +85 -0
  145. package/dist/cli/commands/run-signals.d.ts +30 -0
  146. package/dist/cli/commands/run-signals.js +146 -0
  147. package/dist/cli/commands/runs.js +137 -136
  148. package/dist/cli/commands/setup.d.ts +2 -2
  149. package/dist/cli/commands/setup.js +26 -21
  150. package/dist/cli/commands/study.d.ts +3 -0
  151. package/dist/cli/commands/study.js +182 -0
  152. package/dist/cli/commands/tui.d.ts +4 -4
  153. package/dist/cli/commands/tui.js +21 -21
  154. package/dist/cli/commands/watch.js +64 -77
  155. package/dist/cli/deprecations.d.ts +18 -0
  156. package/dist/cli/deprecations.js +48 -0
  157. package/dist/cli/doctor.d.ts +18 -5
  158. package/dist/cli/doctor.js +111 -48
  159. package/dist/cli/first-run-path.d.ts +12 -10
  160. package/dist/cli/first-run-path.js +30 -28
  161. package/dist/cli/io.d.ts +46 -10
  162. package/dist/cli/io.js +109 -30
  163. package/dist/cli/observer-follow.d.ts +2 -2
  164. package/dist/cli/observer-follow.js +5 -6
  165. package/dist/cli/orientation.d.ts +6 -3
  166. package/dist/cli/orientation.js +43 -39
  167. package/dist/cli/product-sentence.d.ts +6 -0
  168. package/dist/cli/product-sentence.js +6 -0
  169. package/dist/cli/program.d.ts +6 -1
  170. package/dist/cli/program.js +112 -43
  171. package/dist/cli/telemetry.d.ts +17 -17
  172. package/dist/cli/telemetry.js +49 -41
  173. package/dist/cli.js +1 -1
  174. package/dist/comms/capture-surface.d.ts +14 -13
  175. package/dist/comms/capture-surface.js +23 -22
  176. package/dist/comms/catch-host.d.ts +8 -8
  177. package/dist/comms/catch-host.js +14 -14
  178. package/dist/comms/connections.js +4 -4
  179. package/dist/comms/email-catch.d.ts +3 -3
  180. package/dist/comms/email-catch.js +8 -8
  181. package/dist/comms/external-evidence.d.ts +27 -0
  182. package/dist/comms/external-evidence.js +93 -0
  183. package/dist/comms/extract.js +2 -2
  184. package/dist/comms/fake-inbox.d.ts +2 -2
  185. package/dist/comms/fake-inbox.js +2 -2
  186. package/dist/comms/lease-store.js +7 -7
  187. package/dist/comms/receiving-render.d.ts +1 -1
  188. package/dist/comms/receiving-render.js +2 -2
  189. package/dist/comms/sandbox-catch-script.d.ts +6 -6
  190. package/dist/comms/sandbox-catch-script.js +6 -6
  191. package/dist/comms/sandbox-catch.d.ts +36 -37
  192. package/dist/comms/sandbox-catch.js +34 -35
  193. package/dist/comms/setup.js +42 -8
  194. package/dist/comms/thread-evidence.d.ts +1 -1
  195. package/dist/comms/thread-evidence.js +6 -6
  196. package/dist/comms/types.d.ts +6 -6
  197. package/dist/comms/types.js +4 -4
  198. package/dist/evidence/browser-hygiene.d.ts +1 -1
  199. package/dist/evidence/browser-hygiene.js +1 -1
  200. package/dist/evidence/frame-signature.d.ts +1 -1
  201. package/dist/evidence/frame-signature.js +4 -4
  202. package/dist/evidence/redaction.d.ts +3 -3
  203. package/dist/evidence/redaction.js +5 -5
  204. package/dist/evidence/secret-scrub.d.ts +9 -0
  205. package/dist/evidence/secret-scrub.js +96 -0
  206. package/dist/feedback/draft.js +41 -85
  207. package/dist/feedback/export-bundle.js +5 -5
  208. package/dist/feedback/export.d.ts +5 -1
  209. package/dist/feedback/export.js +16 -17
  210. package/dist/feedback/feedback.d.ts +3 -3
  211. package/dist/feedback/feedback.js +21 -3
  212. package/dist/guest/chromium-text.js +2 -2
  213. package/dist/guest/desktop-native.d.ts +1 -1
  214. package/dist/guest/runtime.js +1 -1
  215. package/dist/index.d.ts +14 -15
  216. package/dist/index.js +10 -11
  217. package/dist/keys/key-resolution.d.ts +7 -5
  218. package/dist/keys/key-resolution.js +40 -38
  219. package/dist/lab/adapter-extension.d.ts +35 -13
  220. package/dist/lab/adapter-extension.js +50 -134
  221. package/dist/lab/adapter-scorer-loader.d.ts +32 -12
  222. package/dist/lab/adapter-scorer-loader.js +56 -32
  223. package/dist/lab/composition-rules.js +58 -58
  224. package/dist/lab/config.js +85 -43
  225. package/dist/lab/deprecated-fields.d.ts +10 -0
  226. package/dist/lab/deprecated-fields.js +24 -0
  227. package/dist/lab/device-presets.d.ts +10 -10
  228. package/dist/lab/device-presets.js +11 -11
  229. package/dist/lab/discover.d.ts +13 -9
  230. package/dist/lab/discover.js +118 -60
  231. package/dist/lab/doctor.d.ts +53 -11
  232. package/dist/lab/doctor.js +193 -47
  233. package/dist/lab/init-plan.js +1 -3
  234. package/dist/lab/init-templates.js +147 -147
  235. package/dist/lab/init.d.ts +1 -1
  236. package/dist/lab/init.js +41 -9
  237. package/dist/lab/keys.d.ts +2 -0
  238. package/dist/lab/keys.js +43 -9
  239. package/dist/lab/lab-deps.d.ts +80 -0
  240. package/dist/lab/lab-deps.js +4 -0
  241. package/dist/lab/parse/actors.js +17 -16
  242. package/dist/lab/parse/comms.js +8 -7
  243. package/dist/lab/parse/execution.js +15 -14
  244. package/dist/lab/parse/study-v3.d.ts +23 -0
  245. package/dist/lab/parse/study-v3.js +259 -0
  246. package/dist/lab/parse/subject-state.d.ts +7 -7
  247. package/dist/lab/parse/subject-state.js +18 -17
  248. package/dist/lab/parse/subject.js +30 -29
  249. package/dist/lab/parse/values.d.ts +1 -2
  250. package/dist/lab/parse/values.js +3 -6
  251. package/dist/lab/persona-resolve.d.ts +7 -7
  252. package/dist/lab/persona-resolve.js +8 -8
  253. package/dist/lab/persona.js +1 -3
  254. package/dist/lab/plan-base.d.ts +0 -2
  255. package/dist/lab/plan-base.js +6 -4
  256. package/dist/lab/plan-participants.d.ts +7 -7
  257. package/dist/lab/plan-participants.js +2 -2
  258. package/dist/lab/plan-types.d.ts +26 -8
  259. package/dist/lab/plan.d.ts +4 -18
  260. package/dist/lab/plan.js +24 -79
  261. package/dist/lab/preflight-probes.js +11 -11
  262. package/dist/lab/preflight-result.d.ts +2 -1
  263. package/dist/lab/preflight-result.js +5 -6
  264. package/dist/lab/preflight.d.ts +7 -8
  265. package/dist/lab/preflight.js +6 -6
  266. package/dist/lab/requirements.d.ts +20 -0
  267. package/dist/lab/requirements.js +54 -0
  268. package/dist/lab/route-inputs.d.ts +23 -12
  269. package/dist/lab/route-inputs.js +48 -51
  270. package/dist/lab/routing.d.ts +42 -41
  271. package/dist/lab/routing.js +66 -68
  272. package/dist/lab/run-lab-events.d.ts +3 -11
  273. package/dist/lab/run-lab-events.js +2 -16
  274. package/dist/lab/run-lab-homes.d.ts +76 -0
  275. package/dist/lab/run-lab-homes.js +7 -0
  276. package/dist/lab/run-lab-options.d.ts +12 -66
  277. package/dist/lab/run-lab-options.js +58 -285
  278. package/dist/lab/summary.d.ts +15 -9
  279. package/dist/lab/summary.js +24 -17
  280. package/dist/lab/tasks.d.ts +15 -15
  281. package/dist/lab/tasks.js +14 -14
  282. package/dist/lab/types.d.ts +201 -195
  283. package/dist/lab/types.js +2 -0
  284. package/dist/lab/validation.d.ts +21 -21
  285. package/dist/lab/validation.js +61 -59
  286. package/dist/lab/warnings.d.ts +10 -0
  287. package/dist/lab/warnings.js +70 -41
  288. package/dist/library-aliases.d.ts +56 -0
  289. package/dist/library-aliases.js +22 -0
  290. package/dist/observer/artifact.d.ts +2 -2
  291. package/dist/observer/artifact.js +9 -9
  292. package/dist/observer/data.d.ts +6 -6
  293. package/dist/observer/data.js +7 -6
  294. package/dist/observer/exposure.d.ts +1 -1
  295. package/dist/observer/exposure.js +11 -11
  296. package/dist/observer/http.js +1 -1
  297. package/dist/observer/library.d.ts +1 -1
  298. package/dist/observer/library.js +4 -2
  299. package/dist/observer/listen.js +5 -4
  300. package/dist/observer/render.d.ts +1 -1
  301. package/dist/observer/render.js +12 -7
  302. package/dist/observer/run-routes.d.ts +4 -4
  303. package/dist/observer/run-routes.js +6 -6
  304. package/dist/observer/serve.d.ts +17 -0
  305. package/dist/observer/serve.js +41 -6
  306. package/dist/observer/tunnel.js +1 -1
  307. package/dist/observer-app.html +4 -4
  308. package/dist/routes/computer-use/bundle-parts.d.ts +9 -9
  309. package/dist/routes/computer-use/bundle-parts.js +24 -17
  310. package/dist/routes/computer-use/bundle.d.ts +4 -11
  311. package/dist/routes/computer-use/bundle.js +12 -18
  312. package/dist/routes/computer-use/diagnostics.d.ts +1 -1
  313. package/dist/routes/computer-use/diagnostics.js +1 -1
  314. package/dist/routes/computer-use/e2b-desktop/comms.d.ts +11 -11
  315. package/dist/routes/computer-use/e2b-desktop/comms.js +24 -27
  316. package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +2 -2
  317. package/dist/routes/computer-use/e2b-desktop/desktop.js +8 -11
  318. package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +16 -15
  319. package/dist/routes/computer-use/e2b-desktop/fidelity.js +20 -19
  320. package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +3 -3
  321. package/dist/routes/computer-use/e2b-desktop/prepare.js +40 -43
  322. package/dist/routes/computer-use/e2b-desktop/start.d.ts +1 -1
  323. package/dist/routes/computer-use/e2b-desktop/start.js +32 -30
  324. package/dist/routes/computer-use/e2b-desktop/state.d.ts +5 -4
  325. package/dist/routes/computer-use/e2b-desktop/state.js +5 -3
  326. package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +1 -1
  327. package/dist/routes/computer-use/e2b-desktop/teardown.js +33 -20
  328. package/dist/routes/computer-use/external-comms.d.ts +4 -4
  329. package/dist/routes/computer-use/external-comms.js +19 -43
  330. package/dist/routes/computer-use/fanout-bundle.d.ts +3 -3
  331. package/dist/routes/computer-use/fanout-bundle.js +38 -42
  332. package/dist/routes/computer-use/{fanout-lanes.js → fanout-records.js} +33 -28
  333. package/dist/routes/computer-use/in-process-desktop.d.ts +3 -10
  334. package/dist/routes/computer-use/in-process-desktop.js +3 -9
  335. package/dist/routes/computer-use/live-flush.d.ts +7 -5
  336. package/dist/routes/computer-use/live-flush.js +20 -28
  337. package/dist/routes/computer-use/{run-lanes.d.ts → live-phase.d.ts} +4 -2
  338. package/dist/routes/computer-use/{run-lanes.js → live-phase.js} +17 -16
  339. package/dist/routes/computer-use/local-tree-pack.d.ts +3 -3
  340. package/dist/routes/computer-use/local-tree-pack.js +4 -5
  341. package/dist/routes/computer-use/local-vm.d.ts +11 -8
  342. package/dist/routes/computer-use/local-vm.js +40 -67
  343. package/dist/routes/computer-use/participant-desktop.d.ts +8 -23
  344. package/dist/routes/computer-use/participant-desktop.js +5 -25
  345. package/dist/routes/computer-use/{lanes.d.ts → participant-execution.d.ts} +11 -11
  346. package/dist/routes/computer-use/{lanes.js → participant-execution.js} +39 -26
  347. package/dist/routes/computer-use/participant-facts.d.ts +7 -1
  348. package/dist/routes/computer-use/participant-facts.js +12 -1
  349. package/dist/routes/computer-use/participant-model.d.ts +25 -11
  350. package/dist/routes/computer-use/participant-model.js +76 -34
  351. package/dist/routes/computer-use/participant-prompt.d.ts +13 -13
  352. package/dist/routes/computer-use/participant-prompt.js +8 -8
  353. package/dist/routes/computer-use/participant-runs.d.ts +11 -11
  354. package/dist/routes/computer-use/participant-runs.js +18 -18
  355. package/dist/routes/computer-use/plan.d.ts +21 -29
  356. package/dist/routes/computer-use/plan.js +70 -78
  357. package/dist/routes/computer-use/preflight.d.ts +3 -5
  358. package/dist/routes/computer-use/preflight.js +40 -36
  359. package/dist/routes/computer-use/rerun-selection.js +11 -7
  360. package/dist/routes/computer-use/result.d.ts +1 -1
  361. package/dist/routes/computer-use/result.js +48 -38
  362. package/dist/routes/computer-use/route.d.ts +5 -5
  363. package/dist/routes/computer-use/route.js +36 -33
  364. package/dist/routes/computer-use/self-report.d.ts +8 -8
  365. package/dist/routes/computer-use/self-report.js +33 -33
  366. package/dist/routes/computer-use/setup.d.ts +9 -15
  367. package/dist/routes/computer-use/setup.js +106 -83
  368. package/dist/routes/computer-use/single-bundle.d.ts +13 -16
  369. package/dist/routes/computer-use/single-bundle.js +46 -53
  370. package/dist/routes/computer-use/subject-projection.d.ts +6 -8
  371. package/dist/routes/computer-use/subject-projection.js +24 -23
  372. package/dist/routes/computer-use/types.d.ts +195 -238
  373. package/dist/routes/computer-use/types.js +21 -13
  374. package/dist/routes/preview.d.ts +8 -2
  375. package/dist/routes/preview.js +8 -5
  376. package/dist/routes/scripted/bundle.d.ts +5 -8
  377. package/dist/routes/scripted/bundle.js +23 -27
  378. package/dist/routes/scripted/plan.d.ts +6 -8
  379. package/dist/routes/scripted/plan.js +15 -13
  380. package/dist/routes/scripted/result.d.ts +4 -1
  381. package/dist/routes/scripted/result.js +15 -11
  382. package/dist/routes/scripted/route.js +15 -17
  383. package/dist/routes/scripted/scenario.d.ts +1 -1
  384. package/dist/routes/scripted/scenario.js +3 -3
  385. package/dist/routes/scripted/setup.d.ts +3 -2
  386. package/dist/routes/scripted/setup.js +27 -26
  387. package/dist/routes/scripted/subject.d.ts +8 -3
  388. package/dist/routes/scripted/subject.js +10 -6
  389. package/dist/routes/scripted/surface-records.js +4 -4
  390. package/dist/routes/scripted/surface-sessions.d.ts +2 -2
  391. package/dist/routes/scripted/surface-sessions.js +4 -4
  392. package/dist/routes/scripted/types.d.ts +21 -40
  393. package/dist/routes/scripted/types.js +2 -3
  394. package/dist/routes/shared-world/{seat-records.js → bundle-records.js} +17 -16
  395. package/dist/routes/shared-world/bundle.d.ts +7 -7
  396. package/dist/routes/shared-world/bundle.js +60 -62
  397. package/dist/routes/shared-world/checkpoints.d.ts +5 -5
  398. package/dist/routes/shared-world/checkpoints.js +5 -5
  399. package/dist/routes/shared-world/comms.d.ts +8 -7
  400. package/dist/routes/shared-world/comms.js +38 -51
  401. package/dist/routes/shared-world/external-public.d.ts +6 -5
  402. package/dist/routes/shared-world/external-public.js +28 -25
  403. package/dist/routes/shared-world/handoff.d.ts +10 -9
  404. package/dist/routes/shared-world/handoff.js +89 -81
  405. package/dist/routes/shared-world/lobby-code.d.ts +7 -7
  406. package/dist/routes/shared-world/lobby-code.js +22 -22
  407. package/dist/routes/shared-world/{seats.d.ts → participant-specs.d.ts} +15 -12
  408. package/dist/routes/shared-world/{seats.js → participant-specs.js} +65 -63
  409. package/dist/routes/shared-world/plan.d.ts +2 -6
  410. package/dist/routes/shared-world/plan.js +8 -9
  411. package/dist/routes/shared-world/provenance.d.ts +4 -4
  412. package/dist/routes/shared-world/provenance.js +4 -4
  413. package/dist/routes/shared-world/provisioned.d.ts +3 -2
  414. package/dist/routes/shared-world/provisioned.js +55 -48
  415. package/dist/routes/shared-world/result.js +47 -36
  416. package/dist/routes/shared-world/route.js +54 -57
  417. package/dist/routes/shared-world/setup.d.ts +6 -5
  418. package/dist/routes/shared-world/setup.js +16 -18
  419. package/dist/routes/shared-world/types.d.ts +70 -141
  420. package/dist/routes/shared-world/types.js +5 -5
  421. package/dist/routes/terminal/adapter.d.ts +10 -10
  422. package/dist/routes/terminal/adapter.js +32 -129
  423. package/dist/routes/terminal/bundle.d.ts +10 -15
  424. package/dist/routes/terminal/bundle.js +43 -52
  425. package/dist/routes/terminal/credentials.d.ts +4 -4
  426. package/dist/routes/terminal/credentials.js +20 -20
  427. package/dist/routes/terminal/dry-run.d.ts +1 -1
  428. package/dist/routes/terminal/dry-run.js +13 -15
  429. package/dist/routes/terminal/encoding.d.ts +1 -1
  430. package/dist/routes/terminal/encoding.js +4 -4
  431. package/dist/routes/terminal/ledger.d.ts +8 -8
  432. package/dist/routes/terminal/ledger.js +22 -22
  433. package/dist/routes/terminal/live-finish.d.ts +1 -2
  434. package/dist/routes/terminal/live-finish.js +24 -23
  435. package/dist/routes/terminal/live-sandbox.d.ts +3 -2
  436. package/dist/routes/terminal/live-sandbox.js +31 -32
  437. package/dist/routes/terminal/participant-text.d.ts +23 -0
  438. package/dist/routes/terminal/participant-text.js +165 -0
  439. package/dist/routes/terminal/persona.js +1 -1
  440. package/dist/routes/terminal/plan.d.ts +2 -6
  441. package/dist/routes/terminal/plan.js +23 -19
  442. package/dist/routes/terminal/recorder.d.ts +6 -1
  443. package/dist/routes/terminal/recorder.js +12 -4
  444. package/dist/routes/terminal/result.js +12 -12
  445. package/dist/routes/terminal/route.js +30 -31
  446. package/dist/routes/terminal/runtime.d.ts +3 -2
  447. package/dist/routes/terminal/runtime.js +3 -3
  448. package/dist/routes/terminal/sandbox.d.ts +4 -4
  449. package/dist/routes/terminal/sandbox.js +10 -10
  450. package/dist/routes/terminal/session.js +22 -19
  451. package/dist/routes/terminal/token-usage.d.ts +1 -1
  452. package/dist/routes/terminal/token-usage.js +10 -11
  453. package/dist/routes/terminal/trace.d.ts +7 -10
  454. package/dist/routes/terminal/trace.js +11 -66
  455. package/dist/routes/terminal/types.d.ts +104 -114
  456. package/dist/routes/terminal/types.js +12 -7
  457. package/dist/run/active-runs.d.ts +13 -0
  458. package/dist/run/active-runs.js +12 -0
  459. package/dist/run/bundle-shape.d.ts +2 -1
  460. package/dist/run/bundle-shape.js +7 -7
  461. package/dist/run/bundle.d.ts +99 -92
  462. package/dist/run/bundle.js +10 -8
  463. package/dist/run/cost-summary.js +6 -5
  464. package/dist/run/costs.d.ts +6 -6
  465. package/dist/run/costs.js +17 -11
  466. package/dist/run/detail.d.ts +9 -9
  467. package/dist/run/detail.js +10 -10
  468. package/dist/run/dry-run-inputs.js +1 -1
  469. package/dist/run/dry-run.js +23 -30
  470. package/dist/run/{study-files.d.ts → evidence-files.d.ts} +4 -4
  471. package/dist/run/{study-files.js → evidence-files.js} +5 -5
  472. package/dist/run/feedback-shape.js +1 -1
  473. package/dist/run/judge.d.ts +34 -16
  474. package/dist/run/judge.js +41 -14
  475. package/dist/run/locate.d.ts +2 -0
  476. package/dist/run/locate.js +3 -1
  477. package/dist/run/outcomes.d.ts +3 -3
  478. package/dist/run/outcomes.js +3 -3
  479. package/dist/run/participant-records.d.ts +2 -2
  480. package/dist/run/participant-records.js +2 -2
  481. package/dist/run/paths.d.ts +1 -1
  482. package/dist/run/paths.js +2 -2
  483. package/dist/run/pricing.d.ts +30 -15
  484. package/dist/run/pricing.js +49 -30
  485. package/dist/run/projection.d.ts +27 -27
  486. package/dist/run/projection.js +23 -23
  487. package/dist/run/reclaim.d.ts +6 -0
  488. package/dist/run/reclaim.js +15 -5
  489. package/dist/run/results.d.ts +5 -5
  490. package/dist/run/run-index.d.ts +9 -7
  491. package/dist/run/run-index.js +24 -25
  492. package/dist/run/run-not-found.d.ts +5 -0
  493. package/dist/run/run-not-found.js +15 -0
  494. package/dist/run/run.d.ts +7 -4
  495. package/dist/run/run.js +10 -6
  496. package/dist/run/sandbox-receipts.d.ts +5 -5
  497. package/dist/run/sandbox-receipts.js +6 -6
  498. package/dist/run/shared-world-evidence.d.ts +67 -66
  499. package/dist/run/shared-world-evidence.js +4 -4
  500. package/dist/run/shared-world-shape.d.ts +3 -3
  501. package/dist/run/shared-world-shape.js +16 -16
  502. package/dist/run/stats.d.ts +17 -11
  503. package/dist/run/stats.js +124 -66
  504. package/dist/run/status.d.ts +21 -32
  505. package/dist/run/status.js +34 -33
  506. package/dist/run/stored-runs.js +2 -1
  507. package/dist/run/stream-shape.js +1 -1
  508. package/dist/run/streams.d.ts +29 -22
  509. package/dist/run/study-provenance.d.ts +47 -0
  510. package/dist/run/study-provenance.js +63 -0
  511. package/dist/run/study-result.d.ts +16 -0
  512. package/dist/run/study-result.js +9 -0
  513. package/dist/run/terminal-contract.d.ts +5 -5
  514. package/dist/run/terminal-contract.js +4 -4
  515. package/dist/run/text.d.ts +2 -0
  516. package/dist/run/text.js +4 -0
  517. package/dist/run/transient-comms-secrets.d.ts +5 -0
  518. package/dist/run/transient-comms-secrets.js +12 -0
  519. package/dist/run-lab.d.ts +40 -38
  520. package/dist/run-lab.js +42 -40
  521. package/dist/study/convert.d.ts +33 -0
  522. package/dist/study/convert.js +432 -0
  523. package/dist/study/field-paths.d.ts +12 -0
  524. package/dist/study/field-paths.js +126 -0
  525. package/dist/study/files.d.ts +26 -0
  526. package/dist/study/files.js +43 -0
  527. package/dist/study/migrate.d.ts +48 -0
  528. package/dist/study/migrate.js +408 -0
  529. package/dist/study/owned-files.d.ts +38 -0
  530. package/dist/study/owned-files.js +182 -0
  531. package/dist/subject/clone.d.ts +1 -1
  532. package/dist/subject/desktop-cli.d.ts +2 -2
  533. package/dist/subject/desktop-cli.js +3 -3
  534. package/dist/subject/local-tree-archive.d.ts +1 -1
  535. package/dist/subject/local-tree-archive.js +5 -5
  536. package/dist/subject/local-tree.d.ts +3 -3
  537. package/dist/subject/local-tree.js +1 -1
  538. package/dist/subject/node-bootstrap.d.ts +1 -1
  539. package/dist/subject/node-bootstrap.js +4 -4
  540. package/dist/subject/runtime.js +10 -11
  541. package/dist/subject/serve.d.ts +1 -1
  542. package/dist/subject/serve.js +4 -4
  543. package/dist/subject/state.d.ts +1 -1
  544. package/dist/subject/steps.d.ts +8 -8
  545. package/dist/subject/steps.js +7 -7
  546. package/dist/substrates/command-failure.d.ts +3 -3
  547. package/dist/substrates/command-failure.js +3 -3
  548. package/dist/substrates/detached.d.ts +6 -6
  549. package/dist/substrates/detached.js +7 -7
  550. package/dist/substrates/e2b/cdp-probe.d.ts +11 -11
  551. package/dist/substrates/e2b/cdp-probe.js +15 -18
  552. package/dist/substrates/e2b/desktop-browser.d.ts +5 -5
  553. package/dist/substrates/e2b/desktop-browser.js +12 -12
  554. package/dist/substrates/e2b/desktop-cdp.d.ts +15 -15
  555. package/dist/substrates/e2b/desktop-cdp.js +11 -11
  556. package/dist/substrates/e2b/desktop-executor.d.ts +1 -1
  557. package/dist/substrates/e2b/desktop-executor.js +1 -1
  558. package/dist/substrates/e2b/desktop-geometry.d.ts +6 -6
  559. package/dist/substrates/e2b/desktop-geometry.js +9 -9
  560. package/dist/substrates/e2b/desktop-media.d.ts +1 -1
  561. package/dist/substrates/e2b/desktop-media.js +3 -3
  562. package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +3 -3
  563. package/dist/substrates/e2b/desktop-screenshot-cleanup.js +3 -3
  564. package/dist/substrates/e2b/sandbox.d.ts +1 -1
  565. package/dist/substrates/e2b/sandbox.js +2 -2
  566. package/dist/substrates/e2b/sdk.d.ts +11 -11
  567. package/dist/substrates/e2b/sdk.js +8 -8
  568. package/dist/substrates/local/runtime-host.d.ts +2 -0
  569. package/dist/substrates/local/runtime-host.js +6 -0
  570. package/dist/tui/actions.d.ts +8 -6
  571. package/dist/tui/actions.js +31 -22
  572. package/dist/tui/contract.d.ts +16 -16
  573. package/dist/tui/contract.js +10 -10
  574. package/dist/tui/launch.d.ts +4 -4
  575. package/dist/tui/launch.js +18 -19
  576. package/dist/tui/project.js +5 -5
  577. package/dist/tui-app.js +83 -83
  578. package/dist/verify/actor.d.ts +14 -14
  579. package/dist/verify/actor.js +45 -45
  580. package/dist/verify/artifacts.d.ts +3 -3
  581. package/dist/verify/artifacts.js +6 -6
  582. package/dist/verify/context-growth.d.ts +9 -0
  583. package/dist/verify/context-growth.js +62 -0
  584. package/dist/verify/costs.d.ts +7 -7
  585. package/dist/verify/costs.js +9 -9
  586. package/dist/verify/liveness.d.ts +1 -1
  587. package/dist/verify/liveness.js +4 -1
  588. package/dist/verify/rerun.d.ts +1 -1
  589. package/dist/verify/rerun.js +1 -1
  590. package/dist/verify/shared-world-concurrent.d.ts +2 -2
  591. package/dist/verify/shared-world-concurrent.js +79 -76
  592. package/dist/verify/shared-world.d.ts +2 -2
  593. package/dist/verify/shared-world.js +18 -18
  594. package/dist/verify/subject.d.ts +4 -4
  595. package/dist/verify/subject.js +18 -18
  596. package/dist/verify/verify.js +98 -49
  597. package/docs/README.md +26 -33
  598. package/docs/architecture/actor-contract.md +105 -98
  599. package/docs/architecture/desktop-sessions.md +14 -14
  600. package/docs/architecture/external-public-shared-world.md +66 -59
  601. package/docs/architecture/github-feedback-loop.md +1 -4
  602. package/docs/architecture/guest-desktop.md +2 -2
  603. package/docs/architecture/observer.md +37 -37
  604. package/docs/architecture/restricted-codex-analysis.md +70 -30
  605. package/docs/architecture/serve.md +34 -37
  606. package/docs/architecture/state-driven-executor.md +55 -59
  607. package/docs/architecture/task-protocol-support.md +7 -9
  608. package/docs/architecture/{terminal-product-lane.md → terminal-product-route.md} +83 -115
  609. package/docs/contracts/README.md +24 -0
  610. package/docs/contracts/adapter-admission.md +3 -3
  611. package/docs/contracts/adapter-fixtures.md +2 -5
  612. package/docs/contracts/core.md +1 -3
  613. package/docs/contracts/errors.md +62 -0
  614. package/docs/contracts/feedback.md +8 -9
  615. package/docs/contracts/policy.md +7 -12
  616. package/docs/contracts/run-bundle.md +54 -51
  617. package/docs/contracts/schemas.md +505 -390
  618. package/docs/contracts/study-analysis.md +26 -2
  619. package/docs/contracts/study-costs.md +11 -7
  620. package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +1 -1
  621. package/docs/decisions/0002-observer-is-one-self-contained-file.md +2 -2
  622. package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +3 -3
  623. package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +2 -1
  624. package/docs/principles/actor-fidelity.md +4 -4
  625. package/docs/principles/engineering.md +3 -3
  626. package/docs/principles/invariants-and-defaults.md +38 -38
  627. package/docs/principles/self-driving-harness.md +1 -5
  628. package/docs/principles/three-roles.md +1 -1
  629. package/docs/product/automatic-analysis.md +8 -7
  630. package/examples/participant/README.md +5 -5
  631. package/examples/participant/run.mjs +11 -10
  632. package/examples/scorer/README.md +3 -3
  633. package/examples/scorer/run.mjs +11 -12
  634. package/package.json +16 -17
  635. package/skills/humanish/SKILL.md +63 -60
  636. package/skills/humanish/agents/openai.yaml +1 -1
  637. package/AGENTS.md +0 -99
  638. package/CONTRIBUTING.md +0 -148
  639. package/dist/actors/codex/qualified-versions.d.ts +0 -45
  640. package/dist/actors/codex/qualified-versions.js +0 -87
  641. package/dist/cli/commands/lab.d.ts +0 -3
  642. package/dist/cli/commands/lab.js +0 -193
  643. package/dist/deprecated.d.ts +0 -90
  644. package/dist/deprecated.js +0 -106
  645. package/dist/lab/bag-overrides.d.ts +0 -18
  646. package/dist/lab/bag-overrides.js +0 -121
  647. package/dist/observer/static.d.ts +0 -39
  648. package/dist/observer/static.js +0 -369
  649. package/dist/routes/computer-use/legacy-lane-spec.d.ts +0 -62
  650. package/dist/routes/computer-use/legacy-lane-spec.js +0 -39
  651. package/docs/architecture/comms-inbox.md +0 -122
  652. package/docs/architecture/desktop-recording.md +0 -80
  653. package/docs/architecture/local-browser-runtime.md +0 -178
  654. package/docs/architecture/observer-review.md +0 -144
  655. package/docs/architecture/participant-media.md +0 -90
  656. package/docs/architecture/project-layout.md +0 -62
  657. package/docs/architecture/real-email-receiving.md +0 -136
  658. package/docs/assets/humanish-drawdb-hero.png +0 -0
  659. package/docs/assets/humanish-observer-hero.png +0 -0
  660. package/docs/goals/current.md +0 -207
  661. package/docs/product/lobby-trivia-3player-external-public.md +0 -77
  662. package/docs/product/open-source-install-experience.md +0 -240
  663. package/docs/ramp/README.md +0 -294
  664. package/docs/release/open-source-readiness.md +0 -222
  665. package/docs/release/public-readiness-standard.md +0 -210
  666. package/docs/roadmap/world-class-open-source-v0.md +0 -311
  667. /package/dist/routes/computer-use/{fanout-lanes.d.ts → fanout-records.d.ts} +0 -0
  668. /package/dist/routes/shared-world/{seat-records.d.ts → bundle-records.d.ts} +0 -0
@@ -1,10 +1,7 @@
1
1
  # Adapter Fixture Parity Contract
2
2
 
3
- Date: 2026-06-02 (current-state note updated 2026-07-14)
4
-
5
- Status: committed contract fixtures with passing parity checks. A fixture
6
- proves that core can carry an adapter-owned evidence shape; it does not prove a
7
- live adopter integration or satisfy a deletion-branch depth phase.
3
+ The committed fixtures pass their parity checks. A fixture proves that core can carry an
4
+ adapter-owned evidence shape; it does not prove a live adopter integration.
8
5
 
9
6
  ## Purpose
10
7
 
@@ -1,8 +1,6 @@
1
1
  # Core Contract
2
2
 
3
- Date: 2026-06-02 (current-state note updated 2026-09-30)
4
-
5
- Status: each route mints its run id and builds its bundle, and starts the run
3
+ Each route mints its run id and builds its bundle, and starts the run
6
4
  through the run scope in `src/run/run.ts`. `startRun` creates
7
5
  `.humanish/runs/<id>` and begins `status.json`; the `Run` it returns publishes
8
6
  `run.json`, its projections and the latest pointer. `src/run/paths.ts` holds the
@@ -0,0 +1,62 @@
1
+ # Error codes
2
+
3
+ A failed command or library call reports a code and a message. The code is the stable part: a
4
+ rename or removal gets a CHANGELOG entry in the release that makes it. Messages may change in any
5
+ release.
6
+
7
+ ## Where a code appears
8
+
9
+ - `--json`: the envelope has `ok: false` and `error: { code, message }`, and the command exits 2.
10
+ This output is the interface for scripts and agents. Two exceptions:
11
+ - A command-line usage error, such as an unknown option or a missing argument, prints
12
+ Commander's message on stderr, exits 1 and prints no JSON.
13
+ - `keys` and the `comms` connection commands report a failure as `ok: false` with a `message`
14
+ and no `error` field.
15
+ - Human mode: two or three lines on stderr.
16
+
17
+ ```text
18
+ humanish run failed: Study not found: nope. Look in humanish/studies/ or humanish/labs/, or pass a .yaml path.
19
+ code: HUMANISH_STUDY_NOT_FOUND
20
+ next: humanish study list
21
+ ```
22
+
23
+ A result with no code (`keys`, `comms`) prints no `code:` line. The `next:` line comes from a
24
+ table in `src/cli/io.ts` keyed by code, which today holds `HUMANISH_STUDY_NOT_FOUND`. Other
25
+ codes get no `next:` line, though some messages name a command, as the run-not-found message
26
+ names `humanish runs`. Stdout keeps a result's other lines: a failed run
27
+ prints its run id, route and participants there, and a failed `verify` prints its failing
28
+ checks there, since they are its result. Before 0.108.0, human mode printed the code and message
29
+ on stdout.
30
+
31
+ - Library: the result objects `runStudy` and the analysis entry points return carry the same
32
+ `error.code`.
33
+
34
+ ## Families
35
+
36
+ | Family | Codes | Emitted by | Appears in |
37
+ | ---------------------- | ----- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
38
+ | `HUMANISH_*` | 137 | every CLI command and route result | JSON `error.code`, library `error.code`, human `code:` line |
39
+ | `ANALYSIS_*` | 86 | `humanish analyze` and the analysis service (`src/analysis/`) | JSON `error.code` of analysis results |
40
+ | `AUTOMATIC_ANALYSIS_*` | 21 | the post-run analysis job | `automaticAnalysis.reason` on a run result and the job record |
41
+ | `analysis_*` lowercase | 29 | analysis execution | `error` fields in analysis artifacts and execution receipts |
42
+ | `codex_*` lowercase | 13 | the Codex CLI readiness check (`src/actors/codex/`, `src/lab/doctor.ts`) | doctor rows and analysis readiness, such as `codex_unsupported_version` |
43
+
44
+ Counts are the distinct quoted codes in `src/` on 2026-10-03.
45
+
46
+ The lowercase families are values recorded inside artifacts and receipts, and an artifact keeps
47
+ the code it was written with. Automatic analysis reads two of them back:
48
+ `analysis_admission_estimate_exceeded` becomes the reason `AUTOMATIC_ANALYSIS_ADMISSION_EXCEEDED`,
49
+ and `analysis_budget_exceeded` on a default analysis prints the hint to rerun with
50
+ `humanish analyze --max-cost`. Validation also accepts a partial artifact whose error is
51
+ `analysis_admission_estimate_exceeded`.
52
+
53
+ Share-safety reasons in `humanish verify` (`VERIFY_FAILED`, `RAW_SCREENSHOTS` and the rest) are
54
+ grades, not errors; [run-bundle.md](run-bundle.md) lists them.
55
+
56
+ ## Renames
57
+
58
+ 0.108.0 renamed the codes that said lab: `HUMANISH_LAB_*` is `HUMANISH_STUDY_*`,
59
+ `HUMANISH_CUA_LAB_*` is `HUMANISH_COMPUTER_USE_*`, `HUMANISH_CONCURRENT_SHARED_WORLD_LAB_*` is
60
+ `HUMANISH_SHARED_WORLD_*`, and the terminal and scripted families drop `_LAB`. It also renamed
61
+ `HUMANISH_INVALID_SIM_COUNT` to `HUMANISH_INVALID_PARTICIPANT_COUNT`. A run saved before a rename
62
+ keeps the codes it was written with.
@@ -1,10 +1,7 @@
1
1
  # Feedback Contract
2
2
 
3
- Date: 2026-06-01 (current-state note updated 2026-07-14)
4
-
5
- Status: local feedback candidate, draft, verification, Markdown, and issue-URL
6
- generation are shipped. These commands do not mutate GitHub, and public output
7
- fails closed unless the run verifies as `share_ready`.
3
+ Feedback candidates, drafts, verification, Markdown and issue URLs ship. These commands never
4
+ mutate GitHub, and public output fails closed unless the run verifies as `share_ready`.
8
5
 
9
6
  ## Purpose
10
7
 
@@ -78,10 +75,12 @@ was not repeated in the message trace.
78
75
  ### `draft`
79
76
 
80
77
  Builds structured feedback from the first usable run candidate, or the candidate
81
- selected with `--candidate`. With no candidate, a dry run produces a contract
82
- follow-up and a live run produces a summary of its recorded review. These
83
- fallbacks do not add a finding to the candidate list. All drafts require a
84
- verified `share_ready` run and are written under the run bundle, not GitHub.
78
+ selected with `--candidate`. With no candidate, a live run produces a summary of
79
+ its recorded review; that fallback does not add a finding to the candidate list.
80
+ A dry run tests no product behavior, so `draft`, `verify`, `issue` and
81
+ `issue-url` refuse it with `HUMANISH_FEEDBACK_REQUIRES_LIVE_RUN`. All drafts
82
+ require a verified `share_ready` live run and are written under the run bundle,
83
+ not GitHub.
85
84
 
86
85
  ### `verify`
87
86
 
@@ -1,14 +1,9 @@
1
1
  # Policy Contract
2
2
 
3
- Date: 2026-06-02 (current-state note updated 2026-07-14)
4
-
5
- Status: shipped policy reference for credential, network, spend, redaction,
6
- sharing, and assisted-run boundaries. Support remains route-specific; the
7
- parser, route validation, and verifier determine whether a declared field is
8
- consumed, rejected, or reported as a warning.
9
-
10
- Safety amendment (2026-07-14): beginning with `0.15.1`, stored provider IDs are
11
- evidence and never authorize core provider mutation.
3
+ This page is the policy reference for credential, network, spend, redaction, sharing and
4
+ assisted-run boundaries. Support is route-specific: the parser, route validation and the verifier
5
+ decide whether a declared field is consumed, rejected or reported as a warning. Stored provider
6
+ ids are evidence and never authorize core provider mutation.
12
7
 
13
8
  ## Purpose
14
9
 
@@ -112,7 +107,7 @@ Spend policy names when provider costs may be incurred.
112
107
  | Mode | Meaning |
113
108
  | ------------------------ | -------------------------------------------------------------------------------------------------- |
114
109
  | `no_spend` | No provider calls that can bill. |
115
- | `dry_run_only` | Only local contract proof; no live substrate. |
110
+ | `dry_run_only` | Only a local dry run; no live substrate. |
116
111
  | `explicit_live_provider` | Provider calls allowed because required env var names are present and operator intent is explicit. |
117
112
  | `maintainer_approved` | Reserved for publish, billing, or high-risk mutation workflows. |
118
113
 
@@ -126,7 +121,7 @@ providerClasses:
126
121
  - model
127
122
  - desktop_substrate
128
123
  operatorIntent:
129
- command: humanish lab run my-lab --json --no-open
124
+ command: humanish run my-study --json --no-open
130
125
  explicit: true
131
126
  budget:
132
127
  limit: unspecified
@@ -148,7 +143,7 @@ shapes, and fails closed on a match. It does **not** detect free-form PII/PHI
148
143
  those depends on using synthetic data and on reviewer judgment. Accordingly,
149
144
  `redaction: passed` means the automated secret/path scan found no matches, not a
150
145
  certification that the artifact is free of every class in the policy below. A
151
- first-class PII/PHI detector is planned (issue #108) and would move the listed
146
+ first-class PII/PHI detector is [planned](https://github.com/danielgwilson/humanish/issues/108) and would move the listed
152
147
  PII classes from author-responsibility to enforced.
153
148
 
154
149
  Required redaction gates:
@@ -1,12 +1,10 @@
1
1
  # Run Bundle Contract
2
2
 
3
- Date: 2026-06-02 (current-state note updated 2026-07-14)
4
-
5
- Status: `humanish.run-bundle.v1` is the shipped evidence contract. The
6
- TypeScript shape in `src/run/bundle.ts` (with `streams[]` in `src/run/streams.ts` and
7
- `sharedWorld` as `SharedWorldEvidence` in `src/run/shared-world-evidence.ts`) and fail-closed verification in `src/verify/verify.ts` are
8
- authoritative; this document explains the stable public fields and extension
9
- rules rather than independently versioning the runtime.
3
+ `humanish.run-bundle.v1` is the evidence contract. The TypeScript shape in `src/run/bundle.ts`
4
+ (with `streams[]` in `src/run/streams.ts` and `sharedWorld` as `SharedWorldEvidence` in
5
+ `src/run/shared-world-evidence.ts`) and the fail-closed checks in `src/verify/verify.ts` are the
6
+ source of truth. This page explains the stable public fields and the extension rules; it does not
7
+ version the runtime separately.
10
8
 
11
9
  ## Purpose
12
10
 
@@ -22,12 +20,16 @@ runId: "<core run id>"
22
20
  mode: "dry-run|live"
23
21
  simCount: 1
24
22
  createdAt: "<ISO timestamp>"
25
- lab: # optional, additive: which manifest produced this run
26
- id: "<lab id>"
27
- path: "humanish/labs/<lab id>.yaml"
28
- origin: "committed|ignored|explicit"
29
23
  cwd: "[target-cwd]"
30
24
  artifactRoot: ".humanish/runs/<run-id>"
25
+ study: # optional, additive: which study file produced this run
26
+ id: "<study id>"
27
+ path: "humanish/studies/<study id>.yaml"
28
+ origin: "committed|ignored|explicit"
29
+ lab: # the same value as study, written until 0.109
30
+ id: "<study id>"
31
+ path: "humanish/studies/<study id>.yaml"
32
+ origin: "committed|ignored|explicit"
31
33
  source:
32
34
  packageName: "<public package name or null>"
33
35
  humanishSource: "present|missing"
@@ -190,7 +192,7 @@ field means no retained video, not proof that nothing happened between captures.
190
192
  Verification checks the local file, declared size, MP4 header and matching artifact
191
193
  entry without loading the whole video into memory. Raw continuous media makes the
192
194
  run `local_only` regardless of screenshot redaction. Analysis input remains text
193
- and screenshots. See [desktop recording](../architecture/desktop-recording.md).
195
+ and screenshots. See [desktop recording](https://humanish.dev/docs/desktop-recording).
194
196
 
195
197
  ## Hosted Desktop Geometry
196
198
 
@@ -199,10 +201,10 @@ different facts separate:
199
201
 
200
202
  - `screen.requested`: the E2B/X screen size requested by config;
201
203
  - `screen.verified`: the screen size measured in-sandbox with `xdpyinfo`;
202
- - `screen.declared`: the device preset the lab ASKED for, present only when it differs from
204
+ - `screen.declared`: the device preset the study asked for, present only when it differs from
203
205
  `screen.requested` because the rendered width was floored to Chrome's ~500px window minimum.
204
206
  `verified` compares the floored number with itself and reports a match, so a matching
205
- `verified` block is NOT evidence that the preset width rendered. When `declared` is present,
207
+ `verified` block is not evidence that the preset width rendered. When `declared` is present,
206
208
  it did not: a `mobile` (414) and a `small-mobile` (360) participant both render at 500 and are
207
209
  indistinguishable by rendered width;
208
210
  - `browserWindow`: measured browser bounds after the window-fill attempt; physical X client
@@ -232,8 +234,8 @@ exactly; this hosted-desktop rule does not change that contract.
232
234
  ## Subject Provenance
233
235
 
234
236
  `subject` is an optional, additive top-level field: structured provenance for
235
- what the computer-use, shared-world or scripted-browser backend actually drove (code pin plus state story). It
236
- is absent on pre-existing bundles and on bundles from backends that have not
237
+ what the computer-use, shared-world or scripted route actually drove (code pin plus state story). It
238
+ is absent on pre-existing bundles and on bundles from routes that have not
237
239
  adopted it. The field shape, its three sources (`clone`, `app-url`,
238
240
  `local-tree`), and the `humanish verify` checks that guard it are the schema doc's
239
241
  job, not this one: see the `subject` entry under
@@ -246,7 +248,7 @@ enters this field; identity is digests, a sha, a boolean, and counts.
246
248
  ## Cost Estimate (advisory)
247
249
 
248
250
  `cost` is optional and additive (`humanish.run-cost-summary.v1`): the
249
- computer-use, shared-world, scripted-browser or terminal-product run's cost ESTIMATE: the sum of each participant's
251
+ computer-use, shared-world, scripted-browser or terminal-product run's cost estimate: the sum of each participant's
250
252
  token-derived model cost plus E2B desktop compute lines. New independent CUA runs
251
253
  emit one line per owned desktop, keyed by public participant ID and carrying observed CPU/memory,
252
254
  resource source, host-measured minutes, and the derived per-second rate. Concurrent
@@ -254,7 +256,7 @@ shared-world runs carry the same lines for each participant, plus a desktop line
254
256
  `laneId: subject` for a provisioned plane; an external-public plane is not a humanish
255
257
  desktop and has no line. Older single aggregate desktop lines remain valid. Missing resource metadata stays
256
258
  unpriced; unconfirmed cleanup adds an unknown remaining-lifetime line. It is an
257
- ESTIMATE, never authoritative: every dollar is a rate-table multiply from the
259
+ estimate, never authoritative: every dollar is a rate-table multiply from the
258
260
  operator-editable `src/run/pricing.ts`, carries the pricing `ratesAsOf` date and
259
261
  `source`, and is surfaced with the "estimated (rates as of `<date>`)" label. It is
260
262
  never shown as a bare charge. It follows the same **declared-absent** discipline as the
@@ -267,12 +269,14 @@ A local scripted run (no model request, no hosted desktop) is such a run; a scri
267
269
  a provisioned clone records the clone's desktop as a `laneId: subject` line. A live bundle
268
270
  without `cost` has an unmeasured spend. A live terminal run's `cost` prices the E2B terminal
269
271
  sandbox as a `desktop-minutes` line from its acquired-to-cleanup span and `e2b.getInfo` size.
270
- Its Codex `model-tokens` line stays `null` (`no_rate_for_model` with model `codex`, or
271
- `no_token_usage` when Codex reported none): the participant prices against its provider id `codex`
272
- even when `actors[0].model` is passed as `--model`, and `terminal-ledgers.json` counts those
273
- tokens without a price.
274
- So a terminal total is a lower bound (`fullyEstimated: false`), and the unpriced tokens are
275
- not $0. Each participant's own estimate also rides its
272
+ Its Codex `model-tokens` line prices the agent's tokens from the model passed as `--model`
273
+ (`actor.model`, else `gpt-5.6-sol`). Codex reports usage per turn, summed over the turn's
274
+ requests, so the line prices every token at the base tier and carries
275
+ `basis: aggregated_turns_base_rate`. It stays `null` with `no_token_usage` when Codex reported
276
+ none. `terminal-ledgers.json` still counts those tokens without a price, because its provider line
277
+ takes only provider-reported cost. Bundles written before 0.107.0 price against the provider id
278
+ `codex` and record `no_rate_for_model`, so their total is a lower bound
279
+ (`fullyEstimated: false`) and the unpriced tokens are not $0. Each participant's own estimate also rides its
276
280
  `stream.actor.estimatedCost` (`humanish.actor-estimated-cost.v1`), kept distinct
277
281
  from the reserved provider-returned `tokenUsage.costUsd`. See
278
282
  [`schemas.md`](schemas.md) → Run Cost Summary And Estimated Actor Cost.
@@ -281,7 +285,7 @@ This bundle subtotal excludes separate study-analysis requests. Use
281
285
  `humanish stats` for the complete retained estimate and explicit accounting
282
286
  gaps across run costs and analysis attempts. See [study cost statistics](study-costs.md).
283
287
 
284
- `humanish verify` treats cost as ADVISORY on magnitude and FAIL-CLOSED on
288
+ `humanish verify` treats cost as advisory on magnitude and fail-closed on
285
289
  labeling: absence passes, but a claimed dollar figure without its `ratesAsOf`
286
290
  date + `source`, or a total that does not match its known lines, fails. Verify
287
291
  never inspects the magnitude, so a correctly-labeled large estimate still passes.
@@ -323,34 +327,33 @@ under its namespace.
323
327
  Multi-participant browser/shared-world routes may carry optional participant grouping metadata:
324
328
 
325
329
  ```yaml
326
- actors:
327
- - type: openai-computer-use
328
- lanes:
329
- - id: lane-01
330
- actorType: viewer
331
- surface: intake
332
- caseGroup: case-001
330
+ actor:
331
+ type: openai-computer-use
332
+ participants:
333
+ - id: lane-01
334
+ actorType: viewer
335
+ surface: intake
336
+ caseGroup: case-001
333
337
  ```
334
338
 
335
- For repeated participants, authors can use compact roster groups. The parser expands
336
- each group into deterministic `lanes[]` before the engine runs:
339
+ For repeated participants, a `participants` entry can take a `count`. The parser expands
340
+ each such group into deterministic participants before the engine runs:
337
341
 
338
342
  ```yaml
339
- actors:
340
- - type: openai-computer-use
341
- roster:
342
- - id: viewer
343
- count: 3
344
- actorType: viewer
345
- surface: review-queue
346
- caseGroup: case-001
347
- persona: curious-reviewer
348
- device: desktop
343
+ actor:
344
+ type: openai-computer-use
345
+ participants:
346
+ - id: viewer
347
+ count: 3
348
+ actorType: viewer
349
+ surface: review-queue
350
+ caseGroup: case-001
351
+ persona: curious-reviewer
352
+ device: desktop
349
353
  ```
350
354
 
351
- The generated participant ids are `<group.id>-01`, `<group.id>-02`, and so on. `roster`
352
- is mutually exclusive with explicit `lanes`, homogeneous `count`, and
353
- `laneFocus`; it is an authoring convenience, not a second runtime shape.
355
+ The generated participant ids are `<group.id>-01`, `<group.id>-02`, and so on, even when
356
+ `count` is 1. A group is an authoring convenience, not a second runtime shape.
354
357
 
355
358
  These fields are adapter-owned labels, not core enums. They let downstream
356
359
  projects express "N actors of M app-defined types across S surfaces" without
@@ -362,7 +365,7 @@ are projected into:
362
365
  - Observer `laneGroups[]`;
363
366
  - human-readable Observer stream labels.
364
367
 
365
- `actorType` is deliberately separate from `actors[0].type`. The latter selects
368
+ `actorType` is deliberately separate from `actor.type`. The latter selects
366
369
  the humanish execution actor, such as `openai-computer-use` or `scripted-browser`.
367
370
  The former is the app-defined simulated user bucket, such as `viewer`,
368
371
  `maintainer`, or a downstream adapter's own role label.
@@ -483,7 +486,7 @@ humanish:
483
486
 
484
487
  For public OSS runs, previews could include allowlisted setup files such as
485
488
  `package.json`, `.gitignore`, `humanish/config.ts`, and
486
- `humanish/labs/*.yaml` / `humanish/personas/*.yaml` /
489
+ `humanish/studies/*.yaml` / `humanish/personas/*.yaml` /
487
490
  `humanish/scenarios/*.yaml`. For token-backed or private maintainer runs, raw
488
491
  previews were suppressed by default. Generated state, `.git`, `.env*`, `.npmrc`,
489
492
  browser profiles, `node_modules`, `.humanish/`, and arbitrary source files were
@@ -532,11 +535,11 @@ in-progress bundle that can pass every check. When the run is not finished,
532
535
  `warnings[]` carries one entry starting with the stable code `RUN_NOT_FINISHED`.
533
536
  `ok` and `shareSafety` do not change. Verify decides "not finished" by the run
534
537
  index's rule, which the TUI and `humanish stats` use: the run's `status.json` when
535
- it is well formed and names the run, else a simulation still `running` in the
538
+ it is well formed and names the run, else a `simulations[]` entry still `running` in the
536
539
  bundle. A `running` record updated within the stale window reads as still
537
540
  writing; an older one reads as interrupted. The warning names what verify saw:
538
541
 
539
- - the record's state and its last `updatedAt`, or the running simulations when
542
+ - the record's state and its last `updatedAt`, or the running `simulations[]` entries when
540
543
  there is no usable record;
541
544
  - how many streams are still `running`;
542
545
  - what `reclaim-receipt.json` records: how many of the run's sandboxes are gone