humanish 0.107.0 → 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 (521) hide show
  1. package/ARCHITECTURE.md +22 -17
  2. package/CHANGELOG.md +14 -0
  3. package/CONTEXT.md +51 -44
  4. package/README.md +145 -172
  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-ui.js +1 -1
  14. package/dist/actors/codex/codex-admission.d.ts +91 -0
  15. package/dist/actors/codex/codex-admission.js +150 -0
  16. package/dist/actors/codex/restricted-executable.d.ts +4 -4
  17. package/dist/actors/codex/restricted-executable.js +8 -8
  18. package/dist/actors/codex/restricted-launch.d.ts +2 -1
  19. package/dist/actors/codex/restricted-launch.js +1 -1
  20. package/dist/actors/codex/restricted-participant.js +8 -6
  21. package/dist/actors/codex/restricted-policy.d.ts +2 -2
  22. package/dist/actors/codex/restricted-policy.js +2 -2
  23. package/dist/actors/codex/restricted-session.d.ts +2 -2
  24. package/dist/actors/codex/restricted-session.js +10 -5
  25. package/dist/actors/computer-use/actor.d.ts +16 -16
  26. package/dist/actors/computer-use/actor.js +2 -2
  27. package/dist/actors/computer-use/admission-limit.d.ts +1 -1
  28. package/dist/actors/computer-use/admission-limit.js +1 -1
  29. package/dist/actors/computer-use/loop/actions.d.ts +3 -3
  30. package/dist/actors/computer-use/loop/actions.js +10 -10
  31. package/dist/actors/computer-use/loop/backstop.d.ts +3 -3
  32. package/dist/actors/computer-use/loop/backstop.js +14 -12
  33. package/dist/actors/computer-use/loop/ending.d.ts +5 -5
  34. package/dist/actors/computer-use/loop/ending.js +7 -7
  35. package/dist/actors/computer-use/loop/observation.d.ts +2 -2
  36. package/dist/actors/computer-use/loop/observation.js +9 -9
  37. package/dist/actors/computer-use/loop/provider-call.d.ts +1 -1
  38. package/dist/actors/computer-use/loop/provider-call.js +1 -1
  39. package/dist/actors/computer-use/loop/session.js +3 -3
  40. package/dist/actors/computer-use/loop/spend.d.ts +1 -1
  41. package/dist/actors/computer-use/loop/spend.js +1 -1
  42. package/dist/actors/computer-use/loop/trace.js +9 -8
  43. package/dist/actors/computer-use/loop/types.d.ts +25 -23
  44. package/dist/actors/computer-use/loop/usage.js +2 -2
  45. package/dist/actors/computer-use/openai-context.d.ts +37 -0
  46. package/dist/actors/computer-use/openai-context.js +214 -0
  47. package/dist/actors/computer-use/openai-provider.d.ts +11 -8
  48. package/dist/actors/computer-use/openai-provider.js +45 -34
  49. package/dist/actors/computer-use/openai-requests.d.ts +36 -10
  50. package/dist/actors/computer-use/openai-requests.js +82 -15
  51. package/dist/actors/computer-use/openai-wire.d.ts +19 -7
  52. package/dist/actors/computer-use/openai-wire.js +36 -34
  53. package/dist/actors/contract.d.ts +78 -43
  54. package/dist/actors/contract.js +29 -23
  55. package/dist/actors/local-agent/claude-session.d.ts +1 -1
  56. package/dist/actors/local-agent/claude-session.js +10 -9
  57. package/dist/actors/local-agent/cli.d.ts +8 -6
  58. package/dist/actors/local-agent/cli.js +24 -28
  59. package/dist/actors/local-agent/readiness.d.ts +2 -2
  60. package/dist/actors/local-agent/readiness.js +4 -4
  61. package/dist/actors/reasoning-effort.js +6 -6
  62. package/dist/actors/registry.d.ts +10 -10
  63. package/dist/actors/registry.js +18 -17
  64. package/dist/actors/scripted-browser/actor.d.ts +8 -8
  65. package/dist/actors/scripted-browser/actor.js +16 -16
  66. package/dist/actors/scripted-browser/browser-command.js +1 -1
  67. package/dist/actors/scripted-browser/steps.js +1 -1
  68. package/dist/actors/scripted-browser/types.d.ts +1 -1
  69. package/dist/actors/stop-conditions.d.ts +1 -1
  70. package/dist/analysis/codex-config.d.ts +6 -2
  71. package/dist/analysis/codex-config.js +22 -14
  72. package/dist/analysis/service.js +5 -5
  73. package/dist/cli/commands/analyze.js +19 -16
  74. package/dist/cli/commands/codex.js +9 -9
  75. package/dist/cli/commands/comms.js +54 -33
  76. package/dist/cli/commands/feedback.js +20 -21
  77. package/dist/cli/commands/lab-format.d.ts +5 -4
  78. package/dist/cli/commands/lab-format.js +35 -23
  79. package/dist/cli/commands/lab-route-computer-use.js +6 -7
  80. package/dist/cli/commands/lab-route-preview.js +4 -3
  81. package/dist/cli/commands/lab-route-shared-world.js +3 -3
  82. package/dist/cli/commands/lab-run.js +10 -11
  83. package/dist/cli/commands/lab-scorer.d.ts +2 -2
  84. package/dist/cli/commands/lab-scorer.js +1 -1
  85. package/dist/cli/commands/migrate.d.ts +4 -0
  86. package/dist/cli/commands/migrate.js +65 -0
  87. package/dist/cli/commands/observe.js +147 -108
  88. package/dist/cli/commands/run-command.d.ts +10 -0
  89. package/dist/cli/commands/run-command.js +85 -0
  90. package/dist/cli/commands/runs.js +137 -138
  91. package/dist/cli/commands/setup.d.ts +2 -2
  92. package/dist/cli/commands/setup.js +26 -21
  93. package/dist/cli/commands/study.d.ts +3 -0
  94. package/dist/cli/commands/study.js +182 -0
  95. package/dist/cli/commands/tui.d.ts +4 -4
  96. package/dist/cli/commands/tui.js +21 -21
  97. package/dist/cli/commands/watch.js +60 -75
  98. package/dist/cli/deprecations.d.ts +18 -0
  99. package/dist/cli/deprecations.js +48 -0
  100. package/dist/cli/doctor.d.ts +15 -5
  101. package/dist/cli/doctor.js +103 -48
  102. package/dist/cli/first-run-path.d.ts +12 -10
  103. package/dist/cli/first-run-path.js +30 -28
  104. package/dist/cli/io.d.ts +41 -6
  105. package/dist/cli/io.js +97 -22
  106. package/dist/cli/observer-follow.d.ts +2 -2
  107. package/dist/cli/observer-follow.js +5 -6
  108. package/dist/cli/orientation.d.ts +6 -3
  109. package/dist/cli/orientation.js +43 -39
  110. package/dist/cli/product-sentence.d.ts +6 -0
  111. package/dist/cli/product-sentence.js +6 -0
  112. package/dist/cli/program.d.ts +6 -1
  113. package/dist/cli/program.js +109 -40
  114. package/dist/cli/telemetry.d.ts +15 -15
  115. package/dist/cli/telemetry.js +48 -40
  116. package/dist/cli.js +1 -1
  117. package/dist/comms/capture-surface.d.ts +13 -12
  118. package/dist/comms/capture-surface.js +23 -22
  119. package/dist/comms/catch-host.d.ts +7 -7
  120. package/dist/comms/catch-host.js +14 -14
  121. package/dist/comms/email-catch.d.ts +3 -3
  122. package/dist/comms/email-catch.js +8 -8
  123. package/dist/comms/external-evidence.js +2 -2
  124. package/dist/comms/extract.js +2 -2
  125. package/dist/comms/fake-inbox.d.ts +2 -2
  126. package/dist/comms/fake-inbox.js +2 -2
  127. package/dist/comms/receiving-render.d.ts +1 -1
  128. package/dist/comms/receiving-render.js +2 -2
  129. package/dist/comms/sandbox-catch-script.d.ts +6 -6
  130. package/dist/comms/sandbox-catch-script.js +6 -6
  131. package/dist/comms/sandbox-catch.d.ts +36 -37
  132. package/dist/comms/sandbox-catch.js +34 -35
  133. package/dist/comms/setup.js +42 -8
  134. package/dist/comms/thread-evidence.d.ts +1 -1
  135. package/dist/comms/thread-evidence.js +6 -6
  136. package/dist/comms/types.d.ts +6 -6
  137. package/dist/comms/types.js +3 -3
  138. package/dist/evidence/frame-signature.d.ts +1 -1
  139. package/dist/evidence/frame-signature.js +4 -4
  140. package/dist/evidence/redaction.d.ts +3 -3
  141. package/dist/evidence/redaction.js +4 -4
  142. package/dist/feedback/draft.js +36 -78
  143. package/dist/feedback/export-bundle.js +1 -1
  144. package/dist/feedback/export.d.ts +5 -1
  145. package/dist/feedback/export.js +7 -8
  146. package/dist/feedback/feedback.d.ts +2 -2
  147. package/dist/feedback/feedback.js +21 -3
  148. package/dist/guest/chromium-text.js +2 -2
  149. package/dist/guest/desktop-native.d.ts +1 -1
  150. package/dist/guest/runtime.js +1 -1
  151. package/dist/index.d.ts +12 -10
  152. package/dist/index.js +8 -6
  153. package/dist/keys/key-resolution.d.ts +5 -5
  154. package/dist/keys/key-resolution.js +23 -23
  155. package/dist/lab/adapter-extension.d.ts +7 -7
  156. package/dist/lab/adapter-extension.js +13 -36
  157. package/dist/lab/adapter-scorer-loader.d.ts +7 -7
  158. package/dist/lab/adapter-scorer-loader.js +32 -32
  159. package/dist/lab/composition-rules.js +42 -42
  160. package/dist/lab/config.js +65 -25
  161. package/dist/lab/deprecated-fields.d.ts +10 -0
  162. package/dist/lab/deprecated-fields.js +24 -0
  163. package/dist/lab/device-presets.d.ts +8 -8
  164. package/dist/lab/device-presets.js +11 -11
  165. package/dist/lab/discover.d.ts +13 -9
  166. package/dist/lab/discover.js +117 -57
  167. package/dist/lab/doctor.d.ts +10 -3
  168. package/dist/lab/doctor.js +47 -9
  169. package/dist/lab/init-templates.js +147 -147
  170. package/dist/lab/init.d.ts +1 -1
  171. package/dist/lab/init.js +41 -9
  172. package/dist/lab/keys.d.ts +2 -0
  173. package/dist/lab/keys.js +42 -8
  174. package/dist/lab/lab-deps.d.ts +7 -12
  175. package/dist/lab/parse/actors.js +9 -9
  176. package/dist/lab/parse/comms.js +5 -5
  177. package/dist/lab/parse/execution.js +13 -13
  178. package/dist/lab/parse/study-v3.d.ts +23 -0
  179. package/dist/lab/parse/study-v3.js +259 -0
  180. package/dist/lab/parse/subject-state.d.ts +7 -7
  181. package/dist/lab/parse/subject-state.js +16 -16
  182. package/dist/lab/parse/subject.js +28 -28
  183. package/dist/lab/parse/values.d.ts +1 -1
  184. package/dist/lab/parse/values.js +3 -3
  185. package/dist/lab/persona-resolve.d.ts +4 -4
  186. package/dist/lab/persona-resolve.js +4 -4
  187. package/dist/lab/plan-participants.d.ts +2 -2
  188. package/dist/lab/plan-types.d.ts +4 -4
  189. package/dist/lab/plan.d.ts +1 -7
  190. package/dist/lab/plan.js +10 -41
  191. package/dist/lab/preflight-probes.js +11 -11
  192. package/dist/lab/preflight-result.d.ts +2 -1
  193. package/dist/lab/preflight-result.js +5 -4
  194. package/dist/lab/preflight.d.ts +7 -5
  195. package/dist/lab/preflight.js +5 -5
  196. package/dist/lab/routing.d.ts +31 -25
  197. package/dist/lab/routing.js +60 -29
  198. package/dist/lab/run-lab-events.d.ts +0 -3
  199. package/dist/lab/run-lab-events.js +0 -6
  200. package/dist/lab/run-lab-homes.d.ts +22 -10
  201. package/dist/lab/run-lab-homes.js +5 -1
  202. package/dist/lab/run-lab-options.d.ts +1 -1
  203. package/dist/lab/run-lab-options.js +16 -13
  204. package/dist/lab/summary.d.ts +7 -6
  205. package/dist/lab/summary.js +10 -10
  206. package/dist/lab/tasks.d.ts +15 -15
  207. package/dist/lab/tasks.js +14 -14
  208. package/dist/lab/types.d.ts +101 -95
  209. package/dist/lab/types.js +2 -0
  210. package/dist/lab/validation.d.ts +13 -13
  211. package/dist/lab/validation.js +44 -42
  212. package/dist/lab/warnings.d.ts +10 -0
  213. package/dist/lab/warnings.js +61 -33
  214. package/dist/library-aliases.d.ts +56 -0
  215. package/dist/library-aliases.js +22 -0
  216. package/dist/observer/artifact.d.ts +1 -1
  217. package/dist/observer/artifact.js +6 -6
  218. package/dist/observer/data.d.ts +6 -6
  219. package/dist/observer/data.js +5 -4
  220. package/dist/observer/exposure.d.ts +1 -1
  221. package/dist/observer/exposure.js +11 -11
  222. package/dist/observer/http.js +1 -1
  223. package/dist/observer/library.d.ts +1 -1
  224. package/dist/observer/library.js +4 -2
  225. package/dist/observer/listen.js +5 -4
  226. package/dist/observer/render.d.ts +1 -1
  227. package/dist/observer/render.js +10 -5
  228. package/dist/observer/run-routes.d.ts +3 -3
  229. package/dist/observer/run-routes.js +1 -1
  230. package/dist/observer/serve.js +7 -3
  231. package/dist/observer/tunnel.js +1 -1
  232. package/dist/observer-app.html +4 -4
  233. package/dist/routes/computer-use/bundle-parts.d.ts +9 -9
  234. package/dist/routes/computer-use/bundle-parts.js +15 -15
  235. package/dist/routes/computer-use/bundle.js +3 -3
  236. package/dist/routes/computer-use/e2b-desktop/comms.d.ts +1 -1
  237. package/dist/routes/computer-use/e2b-desktop/comms.js +14 -14
  238. package/dist/routes/computer-use/e2b-desktop/desktop.js +4 -4
  239. package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +4 -3
  240. package/dist/routes/computer-use/e2b-desktop/fidelity.js +11 -10
  241. package/dist/routes/computer-use/e2b-desktop/prepare.js +7 -7
  242. package/dist/routes/computer-use/e2b-desktop/start.js +9 -8
  243. package/dist/routes/computer-use/e2b-desktop/teardown.js +5 -4
  244. package/dist/routes/computer-use/external-comms.d.ts +1 -1
  245. package/dist/routes/computer-use/external-comms.js +1 -1
  246. package/dist/routes/computer-use/fanout-bundle.js +18 -18
  247. package/dist/routes/computer-use/fanout-records.js +10 -11
  248. package/dist/routes/computer-use/live-flush.d.ts +1 -1
  249. package/dist/routes/computer-use/live-flush.js +6 -6
  250. package/dist/routes/computer-use/live-phase.d.ts +4 -2
  251. package/dist/routes/computer-use/live-phase.js +6 -6
  252. package/dist/routes/computer-use/local-vm.js +1 -1
  253. package/dist/routes/computer-use/participant-desktop.d.ts +4 -4
  254. package/dist/routes/computer-use/participant-desktop.js +4 -4
  255. package/dist/routes/computer-use/participant-execution.d.ts +4 -4
  256. package/dist/routes/computer-use/participant-execution.js +9 -9
  257. package/dist/routes/computer-use/participant-model.d.ts +6 -0
  258. package/dist/routes/computer-use/participant-model.js +31 -13
  259. package/dist/routes/computer-use/participant-prompt.d.ts +11 -11
  260. package/dist/routes/computer-use/participant-prompt.js +6 -6
  261. package/dist/routes/computer-use/participant-runs.d.ts +7 -7
  262. package/dist/routes/computer-use/participant-runs.js +13 -13
  263. package/dist/routes/computer-use/plan.js +22 -22
  264. package/dist/routes/computer-use/preflight.js +21 -21
  265. package/dist/routes/computer-use/rerun-selection.js +1 -1
  266. package/dist/routes/computer-use/result.js +11 -11
  267. package/dist/routes/computer-use/route.d.ts +2 -1
  268. package/dist/routes/computer-use/route.js +15 -14
  269. package/dist/routes/computer-use/self-report.d.ts +7 -7
  270. package/dist/routes/computer-use/self-report.js +31 -31
  271. package/dist/routes/computer-use/setup.d.ts +1 -1
  272. package/dist/routes/computer-use/setup.js +17 -18
  273. package/dist/routes/computer-use/single-bundle.d.ts +7 -7
  274. package/dist/routes/computer-use/single-bundle.js +28 -30
  275. package/dist/routes/computer-use/subject-projection.d.ts +1 -1
  276. package/dist/routes/computer-use/subject-projection.js +6 -6
  277. package/dist/routes/computer-use/types.d.ts +40 -42
  278. package/dist/routes/computer-use/types.js +10 -10
  279. package/dist/routes/preview.d.ts +8 -2
  280. package/dist/routes/preview.js +8 -4
  281. package/dist/routes/scripted/bundle.d.ts +2 -2
  282. package/dist/routes/scripted/bundle.js +13 -12
  283. package/dist/routes/scripted/plan.d.ts +1 -1
  284. package/dist/routes/scripted/plan.js +9 -9
  285. package/dist/routes/scripted/result.js +5 -5
  286. package/dist/routes/scripted/route.js +5 -6
  287. package/dist/routes/scripted/scenario.js +2 -2
  288. package/dist/routes/scripted/setup.js +7 -7
  289. package/dist/routes/scripted/subject.js +1 -1
  290. package/dist/routes/scripted/surface-records.js +3 -3
  291. package/dist/routes/scripted/types.d.ts +3 -5
  292. package/dist/routes/scripted/types.js +1 -1
  293. package/dist/routes/shared-world/bundle-records.js +9 -8
  294. package/dist/routes/shared-world/bundle.d.ts +5 -5
  295. package/dist/routes/shared-world/bundle.js +40 -38
  296. package/dist/routes/shared-world/checkpoints.d.ts +1 -1
  297. package/dist/routes/shared-world/checkpoints.js +1 -1
  298. package/dist/routes/shared-world/comms.d.ts +5 -5
  299. package/dist/routes/shared-world/comms.js +14 -14
  300. package/dist/routes/shared-world/external-public.d.ts +4 -3
  301. package/dist/routes/shared-world/external-public.js +16 -12
  302. package/dist/routes/shared-world/handoff.d.ts +7 -6
  303. package/dist/routes/shared-world/handoff.js +65 -57
  304. package/dist/routes/shared-world/lobby-code.d.ts +2 -2
  305. package/dist/routes/shared-world/lobby-code.js +9 -9
  306. package/dist/routes/shared-world/participant-specs.d.ts +7 -6
  307. package/dist/routes/shared-world/participant-specs.js +31 -24
  308. package/dist/routes/shared-world/plan.js +7 -7
  309. package/dist/routes/shared-world/provenance.d.ts +2 -2
  310. package/dist/routes/shared-world/provenance.js +2 -2
  311. package/dist/routes/shared-world/provisioned.js +14 -13
  312. package/dist/routes/shared-world/result.js +20 -21
  313. package/dist/routes/shared-world/route.js +23 -22
  314. package/dist/routes/shared-world/setup.d.ts +3 -3
  315. package/dist/routes/shared-world/setup.js +4 -4
  316. package/dist/routes/shared-world/types.d.ts +30 -28
  317. package/dist/routes/shared-world/types.js +4 -4
  318. package/dist/routes/terminal/adapter.d.ts +3 -3
  319. package/dist/routes/terminal/adapter.js +5 -5
  320. package/dist/routes/terminal/bundle.d.ts +3 -3
  321. package/dist/routes/terminal/bundle.js +22 -21
  322. package/dist/routes/terminal/credentials.d.ts +4 -4
  323. package/dist/routes/terminal/credentials.js +7 -7
  324. package/dist/routes/terminal/dry-run.js +4 -4
  325. package/dist/routes/terminal/encoding.js +2 -2
  326. package/dist/routes/terminal/ledger.d.ts +3 -3
  327. package/dist/routes/terminal/ledger.js +14 -14
  328. package/dist/routes/terminal/live-finish.js +3 -3
  329. package/dist/routes/terminal/live-sandbox.js +12 -13
  330. package/dist/routes/terminal/persona.js +1 -1
  331. package/dist/routes/terminal/plan.js +11 -11
  332. package/dist/routes/terminal/recorder.js +2 -2
  333. package/dist/routes/terminal/result.js +8 -8
  334. package/dist/routes/terminal/route.js +6 -7
  335. package/dist/routes/terminal/sandbox.d.ts +1 -1
  336. package/dist/routes/terminal/sandbox.js +1 -1
  337. package/dist/routes/terminal/session.js +8 -7
  338. package/dist/routes/terminal/token-usage.d.ts +1 -1
  339. package/dist/routes/terminal/token-usage.js +7 -8
  340. package/dist/routes/terminal/trace.d.ts +2 -2
  341. package/dist/routes/terminal/trace.js +2 -2
  342. package/dist/routes/terminal/types.d.ts +26 -28
  343. package/dist/routes/terminal/types.js +3 -3
  344. package/dist/run/bundle-shape.js +3 -3
  345. package/dist/run/bundle.d.ts +46 -46
  346. package/dist/run/bundle.js +2 -1
  347. package/dist/run/cost-summary.js +3 -3
  348. package/dist/run/costs.js +7 -1
  349. package/dist/run/detail.d.ts +6 -6
  350. package/dist/run/detail.js +4 -4
  351. package/dist/run/dry-run-inputs.js +1 -1
  352. package/dist/run/dry-run.js +18 -18
  353. package/dist/run/judge.d.ts +19 -13
  354. package/dist/run/judge.js +18 -8
  355. package/dist/run/paths.d.ts +1 -1
  356. package/dist/run/paths.js +1 -1
  357. package/dist/run/pricing.d.ts +11 -6
  358. package/dist/run/pricing.js +20 -13
  359. package/dist/run/projection.d.ts +14 -14
  360. package/dist/run/projection.js +15 -15
  361. package/dist/run/reclaim.js +2 -2
  362. package/dist/run/results.d.ts +5 -5
  363. package/dist/run/run-index.d.ts +8 -6
  364. package/dist/run/run-index.js +15 -16
  365. package/dist/run/run-not-found.d.ts +5 -0
  366. package/dist/run/run-not-found.js +15 -0
  367. package/dist/run/run.d.ts +5 -4
  368. package/dist/run/run.js +1 -1
  369. package/dist/run/sandbox-receipts.d.ts +2 -2
  370. package/dist/run/sandbox-receipts.js +3 -3
  371. package/dist/run/shared-world-evidence.d.ts +36 -35
  372. package/dist/run/shared-world-evidence.js +4 -4
  373. package/dist/run/shared-world-shape.d.ts +1 -1
  374. package/dist/run/shared-world-shape.js +6 -6
  375. package/dist/run/stats.d.ts +12 -6
  376. package/dist/run/stats.js +116 -58
  377. package/dist/run/status.d.ts +8 -29
  378. package/dist/run/status.js +5 -27
  379. package/dist/run/stored-runs.js +2 -1
  380. package/dist/run/stream-shape.js +1 -1
  381. package/dist/run/streams.d.ts +6 -6
  382. package/dist/run/study-provenance.d.ts +47 -0
  383. package/dist/run/study-provenance.js +63 -0
  384. package/dist/run/study-result.d.ts +16 -0
  385. package/dist/run/study-result.js +9 -0
  386. package/dist/run/text.d.ts +2 -0
  387. package/dist/run/text.js +4 -0
  388. package/dist/run-lab.d.ts +7 -7
  389. package/dist/run-lab.js +1 -3
  390. package/dist/study/convert.d.ts +33 -0
  391. package/dist/study/convert.js +432 -0
  392. package/dist/study/field-paths.d.ts +12 -0
  393. package/dist/study/field-paths.js +126 -0
  394. package/dist/study/files.d.ts +26 -0
  395. package/dist/study/files.js +43 -0
  396. package/dist/study/migrate.d.ts +48 -0
  397. package/dist/study/migrate.js +408 -0
  398. package/dist/study/owned-files.d.ts +38 -0
  399. package/dist/study/owned-files.js +182 -0
  400. package/dist/subject/clone.d.ts +1 -1
  401. package/dist/subject/desktop-cli.d.ts +1 -1
  402. package/dist/subject/desktop-cli.js +2 -2
  403. package/dist/subject/local-tree-archive.js +1 -1
  404. package/dist/subject/local-tree.d.ts +1 -1
  405. package/dist/subject/node-bootstrap.js +1 -1
  406. package/dist/subject/runtime.js +8 -9
  407. package/dist/subject/serve.d.ts +1 -1
  408. package/dist/subject/serve.js +3 -3
  409. package/dist/subject/state.d.ts +1 -1
  410. package/dist/subject/steps.d.ts +5 -5
  411. package/dist/subject/steps.js +4 -4
  412. package/dist/substrates/command-failure.d.ts +3 -3
  413. package/dist/substrates/command-failure.js +3 -3
  414. package/dist/substrates/detached.d.ts +6 -6
  415. package/dist/substrates/detached.js +7 -7
  416. package/dist/substrates/e2b/cdp-probe.d.ts +9 -9
  417. package/dist/substrates/e2b/cdp-probe.js +14 -17
  418. package/dist/substrates/e2b/desktop-browser.d.ts +2 -2
  419. package/dist/substrates/e2b/desktop-browser.js +8 -8
  420. package/dist/substrates/e2b/desktop-cdp.d.ts +9 -9
  421. package/dist/substrates/e2b/desktop-cdp.js +8 -8
  422. package/dist/substrates/e2b/desktop-executor.d.ts +1 -1
  423. package/dist/substrates/e2b/desktop-executor.js +1 -1
  424. package/dist/substrates/e2b/desktop-geometry.d.ts +3 -3
  425. package/dist/substrates/e2b/desktop-geometry.js +7 -7
  426. package/dist/substrates/e2b/desktop-media.d.ts +1 -1
  427. package/dist/substrates/e2b/desktop-media.js +1 -1
  428. package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +3 -3
  429. package/dist/substrates/e2b/desktop-screenshot-cleanup.js +3 -3
  430. package/dist/substrates/e2b/sandbox.d.ts +1 -1
  431. package/dist/substrates/e2b/sandbox.js +1 -1
  432. package/dist/substrates/e2b/sdk.d.ts +11 -11
  433. package/dist/substrates/e2b/sdk.js +6 -6
  434. package/dist/tui/actions.d.ts +1 -1
  435. package/dist/tui/actions.js +13 -13
  436. package/dist/tui/contract.d.ts +16 -16
  437. package/dist/tui/contract.js +10 -10
  438. package/dist/tui/launch.d.ts +4 -4
  439. package/dist/tui/launch.js +18 -19
  440. package/dist/tui/project.js +5 -5
  441. package/dist/tui-app.js +82 -82
  442. package/dist/verify/actor.d.ts +8 -8
  443. package/dist/verify/actor.js +36 -36
  444. package/dist/verify/artifacts.d.ts +2 -2
  445. package/dist/verify/artifacts.js +3 -3
  446. package/dist/verify/context-growth.d.ts +9 -0
  447. package/dist/verify/context-growth.js +62 -0
  448. package/dist/verify/costs.d.ts +6 -6
  449. package/dist/verify/costs.js +8 -8
  450. package/dist/verify/shared-world-concurrent.d.ts +2 -2
  451. package/dist/verify/shared-world-concurrent.js +79 -76
  452. package/dist/verify/shared-world.d.ts +2 -2
  453. package/dist/verify/shared-world.js +16 -16
  454. package/dist/verify/subject.d.ts +4 -4
  455. package/dist/verify/subject.js +18 -18
  456. package/dist/verify/verify.js +92 -43
  457. package/docs/README.md +25 -32
  458. package/docs/architecture/actor-contract.md +56 -87
  459. package/docs/architecture/desktop-sessions.md +7 -7
  460. package/docs/architecture/external-public-shared-world.md +61 -59
  461. package/docs/architecture/github-feedback-loop.md +1 -4
  462. package/docs/architecture/guest-desktop.md +2 -2
  463. package/docs/architecture/observer.md +34 -34
  464. package/docs/architecture/restricted-codex-analysis.md +34 -28
  465. package/docs/architecture/serve.md +34 -37
  466. package/docs/architecture/state-driven-executor.md +55 -58
  467. package/docs/architecture/task-protocol-support.md +5 -5
  468. package/docs/architecture/terminal-product-route.md +67 -107
  469. package/docs/contracts/README.md +24 -0
  470. package/docs/contracts/adapter-admission.md +3 -3
  471. package/docs/contracts/adapter-fixtures.md +2 -5
  472. package/docs/contracts/core.md +1 -3
  473. package/docs/contracts/errors.md +62 -0
  474. package/docs/contracts/feedback.md +8 -9
  475. package/docs/contracts/policy.md +7 -12
  476. package/docs/contracts/run-bundle.md +45 -44
  477. package/docs/contracts/schemas.md +421 -362
  478. package/docs/contracts/study-analysis.md +3 -3
  479. package/docs/contracts/study-costs.md +11 -7
  480. package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +1 -1
  481. package/docs/decisions/0002-observer-is-one-self-contained-file.md +2 -2
  482. package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +3 -3
  483. package/docs/principles/actor-fidelity.md +4 -4
  484. package/docs/principles/engineering.md +3 -3
  485. package/docs/principles/invariants-and-defaults.md +38 -38
  486. package/docs/principles/self-driving-harness.md +1 -5
  487. package/docs/principles/three-roles.md +1 -1
  488. package/docs/product/automatic-analysis.md +7 -7
  489. package/examples/participant/README.md +5 -5
  490. package/examples/participant/run.mjs +11 -10
  491. package/examples/scorer/README.md +3 -3
  492. package/examples/scorer/run.mjs +11 -12
  493. package/package.json +16 -17
  494. package/skills/humanish/SKILL.md +60 -58
  495. package/skills/humanish/agents/openai.yaml +1 -1
  496. package/AGENTS.md +0 -99
  497. package/CONTRIBUTING.md +0 -148
  498. package/dist/actors/codex/qualified-versions.d.ts +0 -72
  499. package/dist/actors/codex/qualified-versions.js +0 -132
  500. package/dist/cli/commands/lab.d.ts +0 -3
  501. package/dist/cli/commands/lab.js +0 -199
  502. package/dist/cli/renamed-options.d.ts +0 -11
  503. package/dist/cli/renamed-options.js +0 -18
  504. package/dist/observer/static.d.ts +0 -39
  505. package/dist/observer/static.js +0 -369
  506. package/docs/architecture/comms-inbox.md +0 -122
  507. package/docs/architecture/desktop-recording.md +0 -80
  508. package/docs/architecture/local-browser-runtime.md +0 -178
  509. package/docs/architecture/observer-review.md +0 -144
  510. package/docs/architecture/participant-media.md +0 -90
  511. package/docs/architecture/project-layout.md +0 -62
  512. package/docs/architecture/real-email-receiving.md +0 -136
  513. package/docs/assets/humanish-drawdb-hero.png +0 -0
  514. package/docs/assets/humanish-observer-hero.png +0 -0
  515. package/docs/goals/current.md +0 -207
  516. package/docs/product/lobby-trivia-3player-external-public.md +0 -77
  517. package/docs/product/open-source-install-experience.md +0 -240
  518. package/docs/ramp/README.md +0 -295
  519. package/docs/release/open-source-readiness.md +0 -222
  520. package/docs/release/public-readiness-standard.md +0 -210
  521. package/docs/roadmap/world-class-open-source-v0.md +0 -311
@@ -1,207 +0,0 @@
1
- # Current Goals
2
-
3
- This page guides work on current source. [CHANGELOG.md](../../CHANGELOG.md) lists what each
4
- version changed.
5
- The [September 9 history](https://github.com/danielgwilson/humanish/blob/main/docs/goals/current-history-2026-09-09.md)
6
- preserves the former status log; its queues do not supersede this page.
7
-
8
- ## North Star
9
-
10
- Humanish should let a maintainer ask:
11
-
12
- > What happens when synthetic personas try to use this app, CLI, or
13
- > agent-facing workflow?
14
-
15
- The answer should be observable, verifiable, public-safe, and useful for
16
- making a repair. The working loop is:
17
-
18
- ```text
19
- study → recorded evidence → verify → feedback → repair → comparable rerun
20
- ```
21
-
22
- The run bundle is the source of truth; Observer is its review surface. Keep
23
- product-specific tasks, state checks and vocabulary in adapters, with generic
24
- execution, evidence and lifecycle primitives in core.
25
-
26
- ## The Three Roles
27
-
28
- Check changes against the [researcher, stakeholder and participant](../principles/three-roles.md):
29
-
30
- - The researcher declares the study, tasks, hidden success criteria, panel and
31
- budgets. Supported routes return observation-backed task outcomes.
32
- - The stakeholder needs inspectable moments, findings and denominators, with
33
- evidence quality separate from participant success.
34
- - The participant receives a goal and behavioral constraints. They may finish,
35
- abandon, encounter a blocker or be interrupted; these outcomes must remain
36
- distinct from failures of the harness.
37
-
38
- A participant does not see their hidden success criteria. Missing observation
39
- inputs remain unmeasured. Provider and session limits are safeguards, and a
40
- limit ending a session must not be presented as natural completion.
41
-
42
- ## Best Next Work
43
-
44
- An independent maintainer uses the published package on their own app,
45
- adjudicates a useful finding, makes a repair and retains a comparable rerun.
46
- Voluntary repeat use is the next adoption signal to establish.
47
-
48
- Measure the effort and decisions in that loop:
49
-
50
- - setup effort and interventions needed to obtain a usable recording;
51
- - findings confirmed, dismissed or left uncertain after evidence review;
52
- - accepted repair decisions and the results of comparable reruns;
53
- - whether the maintainer chooses to use Humanish again.
54
-
55
- Prioritize work that changes one of those outcomes. Fix a reproduced first-use
56
- failure or evidence-review obstacle before expanding the platform. Use actual
57
- recordings to check whether people can identify what happened, find the
58
- relevant capture and understand the limits of the evidence.
59
-
60
- The [own-app guide](https://humanish.dev/docs/your-app) and
61
- [TodoMVC repair study](https://humanish.dev/docs/todomvc-edit-study) provide
62
- starting points. Named public applications in study receipts are subjects,
63
- not adopters or endorsements. An invitation is not activation.
64
-
65
- ## What The Evidence Establishes
66
-
67
- - A keyless `first-run` is a contract and review preview. It does not establish
68
- live execution, app findings or independent use.
69
- - Kept live studies establish the behavior observed on their named subjects,
70
- versions, tasks and actors. Preserve interruptions and unsuccessful attempts
71
- alongside successful ones.
72
- - The [TodoMVC repair comparison](https://github.com/danielgwilson/humanish/blob/main/docs/goals/computer-use-actor/receipts/todomvc-edit-confirmation-2026-09-05.md)
73
- supports one synthetic keyboard repair result; it does not estimate human
74
- completion rates or general defect recall.
75
- - The [evidence/export workflow receipt](https://github.com/danielgwilson/humanish/blob/main/docs/goals/computer-use-actor/receipts/redacted-evidence-workflow-2026-09-07.md)
76
- establishes readable originals and verified shareable derivatives on retained
77
- runs. External maintainer acceptance remains a separate gate.
78
- - Explicit keyboard/pointer contrasts do not isolate the value of rich persona
79
- prompting. Matched comparisons need the same tasks, model, budgets and source
80
- conditions, with validated findings and adjudication effort measured. See
81
- [actor fidelity](../principles/actor-fidelity.md) for claim boundaries.
82
-
83
- Capability proof also differs from replacing an adopter's bespoke harness.
84
- The [proof roadmap](https://github.com/danielgwilson/humanish/blob/main/docs/goals/proof-roadmap/README.md)
85
- requires decision-equivalent retained evidence and a real deletion branch.
86
- No first-party deletion branch has met that gate. Public demonstrations do not
87
- substitute for it.
88
-
89
- ## Current Program Truth
90
-
91
- | Surface | Available in source | Remaining boundary |
92
- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
93
- | Study authoring | YAML labs, `lanes[]`/roster composition, model settings and study/per-participant caps | Route support varies; declarations are not promises of engine parity |
94
- | Actors | Seven first-party descriptors; computer-use, scripted-browser and terminal-product dispatch | No supported public out-of-tree actor-registration API |
95
- | Subjects | `this-repo`, `clone`, `app-url`, `local-app`, `terminal-product`, `desktop-cli`, `local-tree` | `this-repo` is dry-run-only; `local-app` needs a caller-supplied executor/provider |
96
- | Task protocol | Hidden criteria and per-task outcomes on supported separate-world CUA paths, including local-agent and desktop-cli | Shared-world, terminal-product, scripted and synthetic routes reject `tasks` before execution |
97
- | Shared state | Concurrent single-origin shared-world studies with retained evidence (the sequential route was removed in 0.106.0) | Multi-origin implementation remains gated; concurrent state change does not establish per-action causation |
98
- | Observer | Live/recorded views, shared grid and participant playback, participant assignments, action-specific links, saved moments, zoom, comparison and phone-width review | Sparse captures cannot prove every action's effect; visual comparison alone is not a controlled experiment |
99
- | Review and feedback | Verification grades, feedback drafts, portable HTML, redacted bundle derivatives and computer-use completion-source labels | Sharing requires the appropriate grade; participant reports and condition matches still need task adjudication |
100
- | Study findings | Default post-run analysis on supported live routes with a separate disclosed $3 admission estimate limit and opt-out; explicit `analyze`, fairer evidence selection, concern review and versioned findings with exact source links; explicit restricted Codex account analysis on qualified Linux x64 and Apple Silicon Mac profiles | Account dollars/output-token caps are unavailable; Keychain/other CLI profiles are unqualified. Model interpretation needs review; selection limits coverage; opening Observer never dispatches analysis |
101
- | TUI and serving | Detached starts, run stopping, reclamation, Observer attachment, loopback serving, run library and AgentMail setup, authentication and lab configuration | Stopping a process does not itself prove sandbox cleanup; TUI views over CLI `stats`/`export` remain follow-ups |
102
- | Off-app communication | Recipient-scoped local capture and fresh real AgentMail receiving, supported inline raster images, bounded collection and host-owned recovery | Real mail uses isolated participant surfaces and remains local-only for publication. Hosted mail/model processing, bounded fidelity and interrupted-run recovery are explicit; real receiving through local-agent, borrowed inboxes and SMS are unsupported |
103
- | Local browsers | Shared study loop on Linux x64/Docker/KVM and M3-or-newer Mac/Lima; pinned runtime download, Codex account participants and automatic analysis | Explicit local labs support recipient-scoped captured inboxes; real receiving on local desktops, automatic onboarding, larger cohorts and sleep/wake remain unqualified |
104
- | Mobile and media | Hosted viewport/emulation, desktop geometry checks, bounded dwell and declared camera feed; optional camera and speech passed two-person Linux and Mac conversations with validated analysis; hosted audio-only uses the same worker; optional screen/mixed-audio MP4 capture shipped with Linux/E2B and Mac acceptance | Hosted camera+speech is unsupported; English recognition and robotic voice have fidelity limits; raw AV recording is shipped but local-only, excluded from HTML export and analysis (screenshots/text only); the reproduced recording-mix startup video gap is corrected; variable guest capture stalls, initial device/transport availability and cold audio-source delivery remain limits (#854); forced TURN, larger-cohort capacity, physical-device and touch fidelity remain unqualified |
105
-
106
- Use the [task support matrix](../architecture/task-protocol-support.md),
107
- [actor registry](https://github.com/danielgwilson/humanish/blob/main/src/actors/registry.ts)
108
- and [CLI reference](https://humanish.dev/docs/cli) when choosing a concrete path.
109
- Source and tests establish observed behavior. Resolve conflicts with requirements
110
- explicitly; neither stale status prose nor a passing test makes a bug correct.
111
-
112
- The library-assisted `local-app` route now includes a
113
- [runnable npm example](../../examples/participant/README.md).
114
- Its deterministic provider demonstrates the integration with a real loopback
115
- app; it does not establish persona effectiveness or independent adoption.
116
-
117
- The [local browser runtime](../architecture/local-browser-runtime.md)
118
- runs isolated Linux browser participants through the same scheduler, recordings
119
- and automatic analysis as hosted studies. It uses Docker-owned resources and
120
- ordinary TAP/NAT networking. Continue managed-local work from this complete study
121
- path. Explicit
122
- Linux local labs now use the installed CLI/TUI, with a verified runtime download
123
- before the first live run. Mac browser support is also shipped. Captured inbox integration reuses the existing
124
- catch and evidence contracts; local provider-backed receiving remains unsupported.
125
- Optional media passed Linux and Mac conversations with receiving-side evidence
126
- and owned-resource cleanup. The original Mac recording produced validated
127
- analysis after its citation instructions were clarified. Existing hosted labs
128
- retain their behavior.
129
-
130
- ## Gates And Deferred Work
131
-
132
- - [Multi-origin shared-world work](https://github.com/danielgwilson/humanish/issues/239)
133
- needs a real adopter's cross-origin requirement and a reviewed implementation
134
- packet. It has a ratified core-design direction, but the implementation gate is still closed.
135
- - [Nested provider grants](https://github.com/danielgwilson/humanish/pull/534)
136
- remain unmerged. Do not assume a nested provider-credential channel exists.
137
- - Paused adopter-deletion work stays paused until its current readiness and
138
- maintainer decisions permit it. Do not resume it from the historical queue.
139
- - Broader actor/plugin APIs, additional media, registry promotion and TUI
140
- expansion are follow-ups, not substitutes for a useful maintainer workflow.
141
- A concrete use case and current issue readiness determine when to take them up.
142
-
143
- ## Safety And Autonomous Work
144
-
145
- Follow [AGENTS.md](../../AGENTS.md), the [invariants](../principles/invariants-and-defaults.md)
146
- and the [public-readiness standard](../release/public-readiness-standard.md).
147
-
148
- - Keep `main` clean and work on scoped branches/worktrees. Keep the task's scope,
149
- authority, relevant checks and material failure boundaries in its issue, PR or
150
- current handoff; do not create a separate packet for routine work.
151
- - Existing explicit shipping authority governs implementation and merge;
152
- otherwise issue readiness does not create authority by itself. Machine-readiness
153
- fields gate automated queue pickup, not directly assigned interactive work.
154
- - Never commit secrets, private transcripts/screenshots, customer data or
155
- private project context. Keep generated proof in ignored `.humanish/` and
156
- retain needed evidence before removing a worktree.
157
- - Managed paths bind to validated filesystem identities. Stored provider IDs
158
- are evidence, not cleanup authority; reclaim only resources the operation is
159
- authorized to own, and keep unknown cleanup explicitly unresolved.
160
- - Verification distinguishes `share_ready`, `local_only` and `blocked`.
161
- Feedback drafts do not mutate GitHub by default. Live spend, publishing,
162
- external mutation and broader credential access are explicit choices.
163
- - Provider credential placement is route-specific. The computer-use model key stays
164
- on the host; the default terminal runtime uses command-scoped credentials. Do not infer safety from an unqualified “keys stay outside” claim.
165
-
166
- ## Proof Before Shipping
167
-
168
- Use the [verification guidance](../principles/engineering.md#verification): check the changed
169
- behavior and material risks, then stop unless new evidence warrants more work.
170
- Required CI remains the merge gate. For a release, run the full release gates
171
- from a clean contributor worktree:
172
-
173
- ```bash
174
- pnpm install --frozen-lockfile
175
- pnpm release:check
176
- pnpm docs:check
177
- git diff --check
178
- ```
179
-
180
- For Observer changes, build before its tests and inspect real bundle data at
181
- 390px and desktop width. Run `pnpm --filter humanish-observer test` and
182
- `pnpm observer:browser:proof`; preserve the source and limits of each receipt.
183
- For website changes, run site typecheck, build and `registry:check`.
184
- Required CI remains the merge gate.
185
-
186
- Before a release, follow the [release procedure](../release/open-source-readiness.md),
187
- including the candidate-package `pnpm release:dogfood` study with authorized
188
- credentials and bounded paid spend. A successful build alone is not participant
189
- proof. Verify the published package and any changed publishing surface.
190
-
191
- A disposable, keyless consumer check is:
192
-
193
- ```bash
194
- npm i -D humanish
195
- npx humanish init --yes
196
- npx humanish run first-run --json
197
- npx humanish verify --run latest --json
198
- npx humanish feedback issue --run latest --repo owner/repo --format markdown
199
- ```
200
-
201
- This checks installation, preview evidence and feedback generation. A live
202
- claim needs actual participant execution, retained evidence and verified
203
- cleanup. Use N > 1 where the claim needs replication; report cost estimates,
204
- unknowns and failures without turning them into zeros or successes.
205
-
206
- Start from the [ramp](../ramp/README.md), choose one changed user outcome, and
207
- close work with what changed, what was checked and what remains uncertain.
@@ -1,77 +0,0 @@
1
- # Example: 3 mobile personas share ONE public multiplayer lobby at once
2
-
3
- `humanish/labs/lobby-trivia-3player.yaml` is a worked example of the EXTERNAL-PUBLIC shared-world route
4
- (#164 phase 2): three mobile-LAYOUT personas play the SAME multiplayer lobby on a REAL public
5
- deployment simultaneously, watched in ONE Observer. Point `subject.appUrl` + `subject.publicTarget` at
6
- a public deployment YOU own/operate.
7
-
8
- ## What it does
9
-
10
- - The public site is the shared plane DIRECTLY: no clone, no getHost, no subject sandbox, no seed.
11
- - A host-first barrier: the `host: true` participant creates the lobby; the orchestrator reads the
12
- `/lobby/CODE` from the host's CDP-observed URL and threads it into the follower Join missions.
13
- Followers go through the real Join flow (a direct `/lobby/CODE` visit does not auto-join a
14
- non-member).
15
- - Convergence (all three participants reaching one `/lobby/CODE`) is the pass signal (a digest-only
16
- `lobbyConvergenceDigest`), plus temporal co-occupancy of the three participants' windows.
17
-
18
- ## Mobile fidelity caveat (read before over-reading the results)
19
-
20
- The participants are `device: mobile` (414×896) and `device: small-mobile` (360×740). On the E2B-desktop
21
- route the rendered WIDTH is floored to `MIN_DESKTOP_RENDER_WIDTH` (500): Chrome refuses a window
22
- narrower than ~500 CSS px, and a narrower X screen let the window overflow and clip the page
23
- (0.20.3, #304). So both presets render at **500 wide**, `mobile` and `small-mobile` are identical in
24
- layout on this route, and this example does NOT currently exercise two different mobile widths. Only
25
- the HEIGHT renders as declared (896 and 740).
26
-
27
- Note that `desktopGeometry.screen.verified` checks the FLOORED number against itself, so a matching
28
- `verified` block is not evidence that the preset width rendered. Read `requested` against the preset
29
- in `device-presets.ts` if you need to know.
30
-
31
- There is NO touch input, and isMobile/DPR are prompt-signal + metadata (DPR renders only via the CDP
32
- geometry path). So "3 mobile personas" means 3 mobile-LAYOUT desktop-Chromium participants, NOT touch
33
- devices. If a flow needs true touch/tap semantics, these participants will not exercise it. True sub-500
34
- CSS-viewport rendering is the #221 CDP-device-emulation upgrade.
35
-
36
- ## Run it
37
-
38
- Dry-run (the default, $0; proves the plumbing + the honesty contract, with no sandboxes and no tokens):
39
-
40
- ```
41
- humanish lab run lobby-trivia-3player # or: humanish watch lobby-trivia-3player
42
- ```
43
-
44
- Live (opens 3 real mobile-layout participants against the public app):
45
-
46
- ```
47
- # flip scenario.mode to live in the lab (or override), then:
48
- humanish watch lobby-trivia-3player --env-file .env.local # OPENAI_API_KEY + E2B_API_KEY
49
- ```
50
-
51
- Watch it from a phone (today): serve the run directory's Observer through an authed edge:
52
-
53
- ```
54
- humanish serve --expose --tunnel <provider> --oauth <provider> --allow-emails you@example.com
55
- ```
56
-
57
- Native live-desktop `--expose` streaming on the concurrent path (watch the 3 live desktops as well as
58
- the evolving Observer artifacts) is a 0.20.1 fast-follow.
59
-
60
- ## Honesty
61
-
62
- This is a real public-application study of a deployment the operator attests they own/operate
63
- (`subject.publicTarget: { owner, authorized: true }`; this is author trust, which the harness cannot
64
- verify).
65
- Attribution stays `shared-world` (N participants, ONE plane), but every strength claim degrades honestly and
66
- is asserted-absent by verify: provenance `external-public` (not seeded); NO synthetic attestation (you
67
- cannot claim synthetic on a real site); plane control is operator-attested, not harness-controlled; NO
68
- authoritative shared-state proof; concurrency by temporal co-occupancy + observed lobby convergence.
69
- No one run implies adoption, scale, or repeatability.
70
-
71
- ## Before a live run against a third-party site
72
-
73
- The verified lobby-trivia lobby mechanics (createLobby/joinLobby → `/lobby/CODE`, the 6-char
74
- `ABCDEFGHJKLMNPQRSTUVWXYZ23456789` alphabet, non-auto-join on a direct visit) are read from current
75
- source and could change on the next deploy. The two coupling points to re-verify are the lobby-code
76
- regex (`/\/lobby\/([A-Z2-9]{6})(?:$|[/?#])/`, tolerant of a locale prefix and query/hash) and the
77
- follower Join-flow mission wording.
@@ -1,240 +0,0 @@
1
- # Open-Source Install Experience
2
-
3
- Date: 2026-06-01
4
-
5
- Status: product target for the first `humanish` implementation.
6
-
7
- Safety amendment (2026-07-14): the `0.15.1` package binds managed run and
8
- output storage to validated physical paths and treats provider IDs persisted in a
9
- run bundle as evidence rather than cleanup authority. The historical product target below remains useful for
10
- intent and sequencing, but current behavior is defined by the README and
11
- [`docs/goals/current.md`](../goals/current.md).
12
-
13
- ## Product Promise
14
-
15
- Drop humanish into an app and let a coding agent set up realistic persona
16
- simulations, run them safely, watch them in a polished observer, and turn
17
- friction into public-safe issue drafts.
18
-
19
- The first experience should feel like a mature one-command simulation harness,
20
- but with an open-source-safe package shape:
21
-
22
- ```bash
23
- npm i -D humanish
24
- npx humanish init
25
- npm run humanish:doctor
26
- npm run humanish:watch
27
- npm run humanish:verify
28
- npx humanish feedback issue --run latest --repo example/app --format markdown
29
- ```
30
-
31
- ## Two-Part Distribution
32
-
33
- ### NPM Package
34
-
35
- The npm package owns executable behavior:
36
-
37
- - binary: `humanish`;
38
- - CLI framework: `commander`;
39
- - commands: `init`, `doctor`, `run`, `watch`, `review`, `verify`,
40
- `lab`, `feedback`;
41
- - schemas and validators;
42
- - synthetic starter templates;
43
- - observer static assets;
44
- - artifact and run-bundle utilities;
45
- - redaction and public issue-draft generation.
46
-
47
- ### Agent Skill
48
-
49
- The agent skill owns installation guidance and repo adaptation:
50
-
51
- ```bash
52
- npx skills add danielgwilson/humanish --skill humanish
53
- ```
54
-
55
- Installable repo skill: [`skills/humanish/SKILL.md`](../../skills/humanish/SKILL.md).
56
-
57
- The skill should teach the user's coding agent how to:
58
-
59
- - install `humanish`;
60
- - run `humanish init`;
61
- - inspect the target app's routes and dev command;
62
- - create synthetic personas and scenarios;
63
- - create public-safe `humanish/labs/*.yaml` lab manifests;
64
- - keep private/local labs under ignored `.humanish/labs/*.yaml` or
65
- `.humanish/local/labs/*.yaml`;
66
- - configure local app targets;
67
- - document E2B and OpenAI env var names without storing values;
68
- - use `--env-file <path>` for explicit local env hydration without persisting
69
- values into artifacts;
70
- - run `doctor`, `watch`, `verify`, and `feedback issue`;
71
- - avoid PII, PHI, secrets, real customer data, and private artifacts.
72
-
73
- The skill should not hide critical behavior in chat memory. It should point to
74
- repo-owned `humanish/` files and package-owned docs.
75
-
76
- ## Project File Formats
77
-
78
- New projects should get a boring, legible format stack:
79
-
80
- - `.yaml` for human-authored humanish source such as labs, personas and
81
- scenarios;
82
- - `.mjs` for executable adopter scorers;
83
- - `.json` and `.ndjson` for generated run artifacts, Observer data, review
84
- output, event streams, and synthetic fixtures.
85
-
86
- Use `.yml` only where an outside tool's convention already expects it, for
87
- example GitHub Actions workflows. Do not scaffold `.yml` for humanish source and
88
- do not use TOML unless a future scalar global-config case clearly needs it.
89
-
90
- ## First-Run Principles
91
-
92
- - No keys required for the first successful run.
93
- - No live GitHub mutation.
94
- - No hosted queues or private infrastructure.
95
- - No real customer/user/patient data.
96
- - No generated personas from tickets, logs, transcripts, screenshots, or
97
- production analytics.
98
- - Safe dry-run should produce a valid synthetic run bundle and observer view.
99
- - The user should see what changed in git.
100
-
101
- ## Lab Manifest Shape
102
-
103
- Labs are the public-safe way to name a reusable simulation run. A starter app
104
- gets a committed synthetic lab:
105
-
106
- ```yaml
107
- schema: humanish.lab.v2
108
- id: first-run
109
- title: First-run synthetic Observer
110
- description: Public-safe starter lab that generates a synthetic run bundle and Observer without provider spend.
111
- subject:
112
- source: this-repo
113
- actors:
114
- - type: synthetic-persona
115
- count: 4
116
- scenario:
117
- mode: dry-run
118
- defaults:
119
- open: true
120
- ```
121
-
122
- Resolution order:
123
-
124
- 1. `humanish/labs/<id>.yaml` for committed, reproducible labs.
125
- 2. `.humanish/labs/<id>.yaml` for ignored local labs.
126
- 3. `.humanish/local/labs/<id>.yaml` for ignored machine-specific overlays.
127
- 4. explicit `.yaml` path, for example
128
- `.humanish/labs/local-dogfood.yaml`.
129
-
130
- Private repo targets, local env references, and maintainer dogfood variants
131
- belong in ignored lab manifests and should be invoked with explicit
132
- `--env-file`; do not make them package defaults.
133
-
134
- ## `humanish init`
135
-
136
- `humanish init` should:
137
-
138
- 1. Detect package manager and app framework when possible.
139
- 2. Create committed starter files under `humanish/`.
140
- 3. Create ignored runtime state under `.humanish/`.
141
- 4. Add `.humanish/` and secret/local overlays to `.gitignore`.
142
- 5. Patch `package.json` scripts only after showing the intended diff or when
143
- `--yes` is passed.
144
- 6. Create only synthetic public-safe personas and scenarios.
145
- 7. Write credential references as env var names only.
146
- 8. Run a dry-run verification if dependencies are available.
147
-
148
- Suggested scripts:
149
-
150
- ```json
151
- {
152
- "scripts": {
153
- "humanish": "humanish",
154
- "humanish:doctor": "humanish doctor",
155
- "humanish:run": "humanish run --dry-run",
156
- "humanish:watch": "humanish watch",
157
- "humanish:lab:list": "humanish lab list",
158
- "humanish:watch:ci": "humanish watch --json --no-open",
159
- "humanish:verify": "humanish verify"
160
- }
161
- }
162
- ```
163
-
164
- ## Command Ladder
165
-
166
- | Command | Purpose | First version should |
167
- | --------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------- |
168
- | `humanish init` | Set up project-owned harness files | Scaffold committed `humanish/`, ignored `.humanish/`, package scripts |
169
- | `humanish doctor` | Explain readiness | Check config, gitignore, app target, browser, env var names, redaction policy |
170
- | `humanish run --dry-run` | Prove contract without app/browser/keys | Write synthetic run bundle |
171
- | `humanish verify` | Validate bundle and public-safety gates | Fail closed on schema/evidence/redaction errors |
172
- | `humanish review` | Build review packet from evidence | Summarize verdicts without inventing product proof |
173
- | `humanish watch` | Run synthetic participants and watch | Create a fresh four-participant bundle, render Observer, open it, and keep the shell attached |
174
- | `humanish watch [lab]` | Run a named lab and watch it | Resolve committed or ignored `.yaml` lab manifests, then open/follow Observer |
175
- | `humanish watch --json --no-open` | Agent/CI proof path | Create the same bundle and Observer artifacts without browser open or attached watch server |
176
- | `humanish lab list` | Discover available labs | List committed labs and ignored local labs with origin labels |
177
- | `humanish lab inspect <lab>` | Read a lab manifest | Print the parsed lab config, origin, path, and warnings without executing |
178
- | `humanish lab preflight <lab>` | Check lab readiness before spend | Validate routing and optionally probe declared targets from a hosted desktop without launching actors |
179
- | `humanish lab run <lab>` | Run a lab manifest | Human or JSON execution path for every lab route |
180
- | `humanish feedback issue` | Produce public-safe issue draft | Print Markdown or prefilled issue URL, no GitHub API mutation |
181
-
182
- ## Live Capability Ladder
183
-
184
- Live execution should be staged after the dry-run path is boring:
185
-
186
- 1. Synthetic dry-run bundle.
187
- 2. Local app reachability and browser smoke.
188
- 3. Scripted browser scenario.
189
- 4. Observer over real screenshots/traces.
190
- 5. Computer-use / OpenAI actor.
191
- 6. E2B substrate.
192
- 7. Multi-persona matrix.
193
- 8. Optional maintainer-only issue sync tooling.
194
-
195
- Do not make E2B, OpenAI, or GitHub credentials part of the first successful
196
- run.
197
-
198
- For step 3, app-specific browser scenarios are authored as `.yaml` source under
199
- `humanish/scenarios/*.yaml`:
200
-
201
- ```yaml
202
- schema: humanish.scenario.v1
203
- id: core-browser-flow
204
- title: Core browser flow
205
- persona: synthetic-new-user
206
- goal: Reach the first meaningful product state with synthetic data.
207
- mode: browser
208
- browser:
209
- startPath: /
210
- steps:
211
- - id: open-home
212
- label: Open the app
213
- action: goto
214
- path: /
215
- expect:
216
- text: "Get started"
217
- - id: submit-primary-action
218
- label: Submit the primary action
219
- action: click
220
- selector: "button[type='submit']"
221
- expect:
222
- stateChanged: true
223
- ```
224
-
225
- A scripted-browser lab runs the scenario named by `scenario.ref` against a
226
- loopback `subject.appUrl`; `humanish/labs/scripted-demo.yaml` is the example.
227
- A missing or non-executable scenario fails before any browser starts.
228
-
229
- Live E2B desktop labs are an optional advanced path. Target projects that need
230
- them should install `@e2b/desktop` explicitly instead of receiving that
231
- substrate as part of the default humanish package install. When a GitHub token is
232
- present, repo labels are redacted in durable artifacts by default; live stream
233
- auth URLs are used only by the attached watch server and are not persisted.
234
-
235
- An explicitly selected [local browser lab](../architecture/local-browser-runtime.md)
236
- can instead use Linux x64, Docker/KVM and an existing Codex ChatGPT login for
237
- participants and findings. The installed CLI prepares its pinned image before
238
- the first live run. It does not install host prerequisites, and Mac, inbox and
239
- media integration remain separate follow-ups. Existing hosted lab configuration
240
- is preserved.