humanish 0.99.0 → 0.100.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 (64) hide show
  1. package/AGENTS.md +2 -0
  2. package/README.md +25 -4
  3. package/dist/actor-contract.d.ts +2 -0
  4. package/dist/actor-contract.js +4 -2
  5. package/dist/actor-contract.js.map +1 -1
  6. package/dist/browser-control-client.js +4 -2
  7. package/dist/browser-control-client.js.map +1 -1
  8. package/dist/browser-control-dispatcher.js +1 -1
  9. package/dist/browser-control-dispatcher.js.map +1 -1
  10. package/dist/computer-use.js +25 -11
  11. package/dist/computer-use.js.map +1 -1
  12. package/dist/cua-provider-error.d.ts +5 -1
  13. package/dist/cua-provider-error.js +9 -2
  14. package/dist/cua-provider-error.js.map +1 -1
  15. package/dist/doctor-lab.d.ts +8 -0
  16. package/dist/doctor-lab.js +9 -4
  17. package/dist/doctor-lab.js.map +1 -1
  18. package/dist/first-run-path.d.ts +3 -0
  19. package/dist/first-run-path.js +22 -1
  20. package/dist/first-run-path.js.map +1 -1
  21. package/dist/guest-bootstrap.d.ts +12 -4
  22. package/dist/guest-bootstrap.js +49 -17
  23. package/dist/guest-bootstrap.js.map +1 -1
  24. package/dist/guest-runtime-desktop.d.ts +5 -2
  25. package/dist/guest-runtime-desktop.js +30 -6
  26. package/dist/guest-runtime-desktop.js.map +1 -1
  27. package/dist/guest-runtime-main.js +2 -1
  28. package/dist/guest-runtime-main.js.map +1 -1
  29. package/dist/guest-runtime.d.ts +1 -1
  30. package/dist/guest-runtime.js +5 -3
  31. package/dist/guest-runtime.js.map +1 -1
  32. package/dist/init-templates.d.ts +6 -1
  33. package/dist/init-templates.js +39 -3
  34. package/dist/init-templates.js.map +1 -1
  35. package/dist/init.d.ts +6 -1
  36. package/dist/init.js +35 -3
  37. package/dist/init.js.map +1 -1
  38. package/dist/lab-engine.js +1 -1
  39. package/dist/lab-engine.js.map +1 -1
  40. package/dist/lab-summary.d.ts +4 -0
  41. package/dist/lab-summary.js +5 -1
  42. package/dist/lab-summary.js.map +1 -1
  43. package/dist/local-firecracker-desktop.js +13 -10
  44. package/dist/local-firecracker-desktop.js.map +1 -1
  45. package/dist/local-runtime-release.js +8 -8
  46. package/dist/observer-app.html +1 -1
  47. package/dist/program.js +9 -1
  48. package/dist/program.js.map +1 -1
  49. package/dist/restricted-codex-participant.js +3 -3
  50. package/dist/restricted-codex-participant.js.map +1 -1
  51. package/dist/restricted-codex-policy.d.ts +1 -0
  52. package/dist/restricted-codex-policy.js.map +1 -1
  53. package/dist/restricted-codex-session.js +11 -3
  54. package/dist/restricted-codex-session.js.map +1 -1
  55. package/dist/tui-app.js +16 -16
  56. package/docs/architecture/browser-control.md +6 -0
  57. package/docs/architecture/local-browser-runtime.md +25 -5
  58. package/docs/contracts/schemas.md +8 -1
  59. package/docs/goals/current.md +5 -5
  60. package/docs/ramp/README.md +7 -1
  61. package/docs/release/0.100.0-local-setup.md +31 -0
  62. package/docs/release/0.99.1-action-recovery.md +19 -0
  63. package/docs/release/open-source-readiness.md +10 -0
  64. package/package.json +1 -1
@@ -34,6 +34,12 @@ calls are rejected rather than queued. The client marks its executor with
34
34
  `stallRecovery: 'fail_closed'`, so an earlier computer-use loop deadline cannot
35
35
  trigger the legacy observation retry or idle-action skip behavior.
36
36
 
37
+ An action explicitly rejected with `action_rejected` / `not_dispatched` can
38
+ recover in the shared study loop. It records the rejection, withholds the rest
39
+ of that action batch and takes a fresh observation before asking the participant
40
+ what to do next. It never automatically replays input. Other executor failures,
41
+ including uncertain outcomes and failed observations, still end the session.
42
+
37
43
  ## Wire contract
38
44
 
39
45
  Each frame is a four-byte unsigned big-endian length followed by strict UTF-8
@@ -18,8 +18,22 @@ and account restrictions. Docker access is an administrative capability.
18
18
  Humanish does not install Docker on Linux or change host permissions. On Mac,
19
19
  setup installs Docker only inside the dedicated Lima host.
20
20
 
21
- Start your app on loopback, then save a lab such as
22
- `.humanish/labs/local-browser.yaml`:
21
+ Configure the starter while initializing the project, then start your app on
22
+ the same loopback URL:
23
+
24
+ ```sh
25
+ npx humanish init --yes \
26
+ --local-browser http://127.0.0.1:3000 \
27
+ --local-mission "Create a note and explain anything confusing about saving it"
28
+ npx humanish doctor --lab local-browser
29
+ npx humanish lab run local-browser
30
+ ```
31
+
32
+ `init` also writes `humanish/labs/local-browser.yaml` with safe defaults when
33
+ the two options are omitted. The options provide the normal setup path for the
34
+ app URL and mission on first setup. If the file already exists, `init` preserves
35
+ it and warns that these options were skipped; edit the existing manifest to
36
+ change its URL or mission. The resulting lab has this shape:
23
37
 
24
38
  ```yaml
25
39
  schema: humanish.lab.v2
@@ -42,10 +56,9 @@ execution:
42
56
  ```
43
57
 
44
58
  ```sh
45
- npx humanish init --yes
46
59
  npx humanish runtime status --json
47
- npx humanish doctor --lab .humanish/labs/local-browser.yaml --json
48
- npx humanish lab run .humanish/labs/local-browser.yaml
60
+ npx humanish doctor --lab local-browser --json
61
+ npx humanish lab run local-browser
49
62
  ```
50
63
 
51
64
  The first live run downloads the pinned runtime archive (about 569 MiB on x64 or
@@ -68,6 +81,13 @@ For API billing and its supported caps, use `type: openai-computer-use`, remove
68
81
  default. Neither path silently falls back to another provider or hosted desktop.
69
82
  Existing labs without `execution.target: local` retain their previous behavior.
70
83
 
84
+ Before handing the desktop to the participant, the guest navigates to the
85
+ selected app and waits up to 30 seconds for the initial document's
86
+ `DOMContentLoaded` event, then allows a bounded paint. It does not wait for app
87
+ data, images or network idle: the app's own loading screen remains observable.
88
+ Navigation failures and timeouts fail startup and release the owned desktop.
89
+ Later participant actions and observations do not use this startup wait.
90
+
71
91
  ## Current limits
72
92
 
73
93
  - Linux x64 or M3-or-newer Mac with native ARM64 Node and Lima. The installed
@@ -3,7 +3,7 @@
3
3
  Date: 2026-06-02 (current-state note updated 2026-07-14)
4
4
 
5
5
  Status: reference map for the major contracts shipped through source version
6
- `0.99.0`; it is not an exhaustive inventory of command/result envelopes. Exported types,
6
+ `0.100.0`; it is not an exhaustive inventory of command/result envelopes. Exported types,
7
7
  schema constants, parsers, and validators in `src/` are authoritative. Rows
8
8
  marked "reserved" name layering intent only — no code emits or validates them
9
9
  yet. Do not emit a reserved schema.
@@ -768,6 +768,13 @@ scenario:
768
768
 
769
769
  ## Actor Trace
770
770
 
771
+ Failed account participant requests may include an optional `failurePhase` in
772
+ `providerRequests`, identifying startup, the named Codex setup RPC, `turn/start`,
773
+ `response`, or cleanup. It is a finite local classification, never raw provider
774
+ text. Older receipts without it remain valid. The phase does not replace the
775
+ separate dispatch, usage, or cleanup evidence, and does not establish the cause
776
+ of a timeout. Participant outcome text includes the phase when available.
777
+
771
778
  Actors execute or simulate the trial. Actor evidence is the provider-neutral
772
779
  `humanish.actor-trace.v1` (`src/actor-contract.ts`): Codex app-server items,
773
780
  Claude Agent SDK blocks, pi events, computer-use cycles, scripted browser
@@ -1,9 +1,9 @@
1
1
  # Current Goals
2
2
 
3
- Status date: 2026-09-24. Release baseline: `0.99.0`.
3
+ Status date: 2026-09-25. Release baseline: `0.100.0`.
4
4
 
5
5
  This page guides work on current merged source. Published behavior is described
6
- in the [release notes](../release/0.99.0-local-browser-mac.md).
6
+ in the [release notes](../release/0.100.0-local-setup.md).
7
7
  The [September 9 history](https://github.com/danielgwilson/humanish/blob/main/docs/goals/current-history-2026-09-09.md)
8
8
  preserves the former status log; its queues do not supersede this page.
9
9
 
@@ -88,7 +88,7 @@ requires decision-equivalent retained evidence and a real deletion branch.
88
88
  No first-party deletion branch has met that gate. Public demonstrations do not
89
89
  substitute for it.
90
90
 
91
- ## Current Program Truth (source `0.99.0`)
91
+ ## Current Program Truth (source `0.100.0`)
92
92
 
93
93
  | Surface | Available in merged source | Remaining boundary |
94
94
  | --- | --- | --- |
@@ -123,8 +123,8 @@ ordinary TAP/NAT networking. Continue managed-local work from this complete stud
123
123
  path; the earlier offline owner/service qualification experiments are historical
124
124
  fixtures, not an installation architecture or a prerequisite queue. Explicit
125
125
  Linux local labs now use the installed CLI/TUI, with a verified runtime download
126
- before the first live run. Mac support, inbox integration and optional media
127
- remain unfinished. Existing hosted labs retain their behavior.
126
+ before the first live run. Mac support is also shipped; inbox integration and
127
+ optional media remain unfinished. Existing hosted labs retain their behavior.
128
128
 
129
129
  ## Gates And Deferred Work
130
130
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Status: public-safe contributor and agent ramp.
4
4
 
5
- Package/source version in this tree: `0.99.0` (2026-09-24). The Observer is phone-usable as a stated requirement (observer/AGENTS.md); interactive primitives start from Base UI. The Observer renderer is the observer/ workspace artifact only; the legacy string-concat renderer was deleted at cutover (#426), and rollback is a version pin to 0.42.0. The containment boundary introduced in
5
+ Package/source version in this tree: `0.100.0` (2026-09-25). The Observer is phone-usable as a stated requirement (observer/AGENTS.md); interactive primitives start from Base UI. The Observer renderer is the observer/ workspace artifact only; the legacy string-concat renderer was deleted at cutover (#426), and rollback is a version pin to 0.42.0. The containment boundary introduced in
6
6
  `0.15.1` remains in force: managed run and output paths bind to validated
7
7
  physical filesystem identities, and stored provider IDs are evidence, not
8
8
  cleanup authority. The bundled OSS meta-lab is dry-run only until
@@ -54,6 +54,12 @@ If a change does not improve one of those loops, it probably belongs elsewhere.
54
54
 
55
55
  ## Current State
56
56
 
57
+ The [0.100.0 release note](../release/0.100.0-local-setup.md) describes local
58
+ browser setup discovery, initial navigation readiness and Codex failure stages.
59
+
60
+ The [0.99.1 release note](../release/0.99.1-action-recovery.md) describes
61
+ participant recovery from browser actions rejected before dispatch.
62
+
57
63
  The [0.99.0 release note](../release/0.99.0-local-browser-mac.md) describes
58
64
  local browser studies on supported Apple Silicon Macs through Lima, public ARM
59
65
  runtime setup, Codex account participants and automatic analysis.
@@ -0,0 +1,31 @@
1
+ # 0.100.0 — Local study setup and startup reliability
2
+
3
+ Initialize a local browser study for your app without writing its lab manifest:
4
+
5
+ ```sh
6
+ humanish init --yes --local-browser http://127.0.0.1:3000 \
7
+ --local-mission "Create a note and find it again"
8
+ humanish doctor --lab local-browser
9
+ humanish run local-browser
10
+ ```
11
+
12
+ The starter uses local Firecracker browsers and the supported Codex account
13
+ login. Model inference remains remote and consumes account quota; E2B and OpenAI
14
+ API keys are unnecessary for this route. Linux needs local Docker/KVM/TUN;
15
+ supported Apple Silicon Macs use Lima. Init and the TUI explain prerequisites
16
+ and reuse the CLI's readiness checks. Existing lab files are preserved; if the
17
+ local starter already exists, edit its URL and mission in
18
+ `humanish/labs/local-browser.yaml` instead of rerunning the init flags.
19
+ The free preview and hosted starter remain available. Local dry runs work without
20
+ starting a desktop or requesting a model turn.
21
+
22
+ The first local participant capture now follows the target document's
23
+ DOMContentLoaded event and a paint. Previously a fixed 500 ms wait could expose
24
+ the runtime's starter page. Navigation is bounded, supports redirects, and
25
+ reports startup failures; it does not wait for all app data or subsequent loads.
26
+ Updated x64 and ARM64 runtime images carry the initial-navigation change.
27
+
28
+ Failed account participant requests retain their finite execution stage, such
29
+ as `thread/start`, in the recording and outcome text. Older recordings remain
30
+ readable. This adds diagnostic evidence without changing retry or deadline
31
+ behavior; it does not claim the cause of a past timeout is known.
@@ -0,0 +1,19 @@
1
+ # 0.99.1 — Recover from rejected browser actions
2
+
3
+ A participant can now recover when the desktop explicitly rejects an action
4
+ before sending any input. For example, typing without an editable field focused
5
+ previously ended a local browser study with a harness error, even though the
6
+ browser remained usable.
7
+
8
+ The shared execution loop records the rejection, withholds the remaining actions
9
+ in that batch, and takes a fresh screenshot before asking the participant what
10
+ to do next. This prevents a queued submit from running after rejected typing.
11
+ The next turn receives accurate execution acknowledgements and a recovery hint;
12
+ rejected actions are not recorded as completed input. The harness does not
13
+ replay them automatically.
14
+
15
+ Uncertain outcomes, transport failures, revoked sessions and failed observations
16
+ retain their terminal handling. Existing time and no-progress limits still bound
17
+ repeated rejections. Updated runtime images keep the browser-control connection
18
+ open for this specific rejection; the shared host-side loop then allows recovery.
19
+ Account configuration and desktop setup are unchanged.
@@ -134,6 +134,16 @@ operations notes, local runtime caches, or private operator packets. Public
134
134
  they are synthetic, durable, and public-safe. Public image assets must remain on
135
135
  the scanner allowlist and keep their approved checksum.
136
136
 
137
+ ## Version Policy
138
+
139
+ Humanish remains on `0.x` until the maintainer explicitly decides to release
140
+ `1.0.0`. General authority to merge and publish does not imply that decision.
141
+ Semantic-version components are integers, not decimals: the next minor after
142
+ `0.99.0` is `0.100.0`; a patch is `0.99.1`. Use patch releases for compatible
143
+ fixes and minor releases for features or pre-1.0 breaking changes, documenting
144
+ any breaking changes and migration steps. Do not use `npm version major` or
145
+ infer 1.0 readiness from a large minor number. See [SemVer](https://semver.org/).
146
+
137
147
  ## Publish Procedure
138
148
 
139
149
  Only after maintainer approval. Prefer the tag-gated GitHub Actions workflow
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "humanish",
3
- "version": "0.99.0",
3
+ "version": "0.100.0",
4
4
  "description": "Open-source-safe CLI for persona simulation, observer review, and public-safe feedback drafts.",
5
5
  "author": "Daniel G Wilson <daniel@danielgwilson.com>",
6
6
  "keywords": [