humanish 0.33.0 → 0.35.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.
- package/AGENTS.md +8 -0
- package/README.md +11 -7
- package/dist/concurrent-shared-world-lab.d.ts +3 -0
- package/dist/concurrent-shared-world-lab.js +33 -5
- package/dist/concurrent-shared-world-lab.js.map +1 -1
- package/dist/cua-actor-lab.d.ts +11 -3
- package/dist/cua-actor-lab.js +38 -17
- package/dist/cua-actor-lab.js.map +1 -1
- package/dist/e2b-terminal-lab.d.ts +8 -0
- package/dist/e2b-terminal-lab.js +5 -4
- package/dist/e2b-terminal-lab.js.map +1 -1
- package/dist/init-templates.js +1 -1
- package/dist/lab-config.d.ts +18 -6
- package/dist/lab-config.js +84 -2
- package/dist/lab-config.js.map +1 -1
- package/dist/pricing.js +17 -12
- package/dist/pricing.js.map +1 -1
- package/docs/contracts/schemas.md +43 -16
- package/docs/goals/current.md +23 -7
- package/docs/principles/invariants-and-defaults.md +1 -1
- package/docs/ramp/README.md +17 -4
- package/package.json +1 -1
- package/skills/humanish/SKILL.md +53 -9
package/docs/ramp/README.md
CHANGED
|
@@ -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.
|
|
5
|
+
Package/source version in this tree: `0.35.0` (2026-08-05). 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
|
|
@@ -17,7 +17,7 @@ context.
|
|
|
17
17
|
Read these in order:
|
|
18
18
|
|
|
19
19
|
1. [`AGENTS.md`](../../AGENTS.md) for public boundary and engineering rules.
|
|
20
|
-
2. [`docs/principles/invariants-and-defaults.md`](../principles/invariants-and-defaults.md) —
|
|
20
|
+
2. [`docs/principles/invariants-and-defaults.md`](../principles/invariants-and-defaults.md) — which rules are invariants and which are overridable defaults, each with the reason it exists and the check that enforces it. (The enforcement is what makes a rule real here — when a doc sentence and a test disagree, trust the test and say so.)
|
|
21
21
|
3. [`README.md`](../../README.md) for install, commands, and package shape.
|
|
22
22
|
4. [`docs/goals/current.md`](../goals/current.md) for the active product goal.
|
|
23
23
|
5. [`docs/goals/proof-roadmap/goal.md`](https://github.com/danielgwilson/humanish/blob/main/docs/goals/proof-roadmap/goal.md) for the ratified proof architecture (repo-only; not shipped in the npm package, hence the absolute link).
|
|
@@ -91,6 +91,18 @@ Implemented:
|
|
|
91
91
|
and clicks through, and a digest-only `humanish.comms-thread.v1` artifact
|
|
92
92
|
records the thread with no raw address, link, or code — wired into the
|
|
93
93
|
computer-use and shared-world routes and live-proven on computer-use;
|
|
94
|
+
- resolved-persona directives that actually shape the actor prompt on the
|
|
95
|
+
terminal-product route (traits are applied and recorded in the actor trace, not
|
|
96
|
+
decorative), reusing the same `persona.ts` compiler as the computer-use lane;
|
|
97
|
+
- a CLI-loadable adopter scorer seam (`review.scorer.ref` in the lab manifest, or
|
|
98
|
+
a `--scorer <path>` override): a config-declared `.mjs` supplies
|
|
99
|
+
`{score, deriveFeedback, deriveArtifacts}`, resolved with the same containment
|
|
100
|
+
as `scenario.ref` and digest-pinned in the bundle
|
|
101
|
+
(`humanish.scorer-provenance.v1`); a config-declared scorer that fails to render
|
|
102
|
+
a pass fails the run on the scorer-capable routes, while library callers keep
|
|
103
|
+
the additive behavior (`costProbe` stays library-only); on the terminal route
|
|
104
|
+
the scoring context carries the FULL normalized transcript (byte-identical to
|
|
105
|
+
the persisted `terminal-transcript.txt`), not only the ~2KB tail projection;
|
|
94
106
|
- containment checks for managed run storage, Observer and feedback reads,
|
|
95
107
|
actor artifacts, lab discovery, Git metadata, and source archives;
|
|
96
108
|
- an OSS meta-lab dry-run contract and a separate disposable public-repo OSS
|
|
@@ -101,8 +113,9 @@ Implemented:
|
|
|
101
113
|
Still not good enough:
|
|
102
114
|
|
|
103
115
|
The [current proof-roadmap checkpoint](https://github.com/danielgwilson/humanish/blob/main/docs/goals/proof-roadmap/README.md)
|
|
104
|
-
supersedes implementation-status phrases in the
|
|
105
|
-
|
|
116
|
+
supersedes implementation-status phrases in the 2026-06-10 roadmap packet
|
|
117
|
+
(kept as written — it is a dated record; its README carries current status)
|
|
118
|
+
without changing its success standard.
|
|
106
119
|
|
|
107
120
|
- capability receipts are not adopter replacement: no first-party deletion
|
|
108
121
|
branch has yet removed a bespoke generic harness while preserving
|
package/package.json
CHANGED
package/skills/humanish/SKILL.md
CHANGED
|
@@ -151,6 +151,24 @@ A lab is a composition (`subject` × `actors` × `execution` × `scenario` ×
|
|
|
151
151
|
`npx humanish lab inspect <lab>` to see how a manifest parses, including
|
|
152
152
|
warnings for fields the engine does not consume yet.
|
|
153
153
|
|
|
154
|
+
### Many actors at once (fan-out, shared worlds, concurrency)
|
|
155
|
+
|
|
156
|
+
- **Every declared seat runs live at once by default.** A 6-lane roster is 6
|
|
157
|
+
simultaneous actors; total sessions and spend are the same either way, only
|
|
158
|
+
wall-clock and simultaneity differ. `execution.concurrency` is a CAP, not a
|
|
159
|
+
mode: declare it only to bound simultaneous paid desktops, and expect a parse
|
|
160
|
+
warning when the cap makes seats run in waves (a green waved run looks
|
|
161
|
+
identical to the all-live run you meant, so the harness says so up front).
|
|
162
|
+
- **Per-lane worlds vs one shared world.** A plain multi-lane computer-use lab
|
|
163
|
+
gives each actor its OWN app instance (independent studies in parallel). Add
|
|
164
|
+
`subject.topology: shared-world` for N actors in ONE world (a lobby, a shared
|
|
165
|
+
DB, actors seeing each other's changes). `execution.concurrency: 1` on a
|
|
166
|
+
shared-world lab is the sequential turn-taking variant — one actor at a time,
|
|
167
|
+
and note comms/email has no wiring there.
|
|
168
|
+
- **Watching it:** each live lane is its own Observer tile/stream; lanes beyond
|
|
169
|
+
a declared cap start when a slot frees, which on a capped run looks like idle
|
|
170
|
+
tiles — another reason to leave the cap out unless you need it.
|
|
171
|
+
|
|
154
172
|
Use committed `humanish/labs/*.yaml` for public-safe, reproducible labs. Use
|
|
155
173
|
ignored `.humanish/labs/*.yaml` or `.humanish/local/labs/*.yaml` for private repo
|
|
156
174
|
targets, local-only dogfood, or machine-specific settings. Never commit private
|
|
@@ -179,19 +197,45 @@ the app sent it to finish a step.
|
|
|
179
197
|
```yaml
|
|
180
198
|
comms:
|
|
181
199
|
email:
|
|
182
|
-
injectEnv: RESEND_API_URL
|
|
183
|
-
|
|
184
|
-
|
|
200
|
+
injectEnv: RESEND_API_URL # adopter-named: whatever env var YOUR app reads for its
|
|
201
|
+
# email-API base URL. The harness sets it to the in-sandbox catch — do NOT also
|
|
202
|
+
# list it in subject.env. VERIFY the app actually reads this variable: a stock
|
|
203
|
+
# email SDK does not honor a base-URL env unless the app passes it through, and
|
|
204
|
+
# an app that ignores it sends real mail (or throws) while the inbox stays empty.
|
|
205
|
+
# A run where the catch captured zero sends warns at teardown for exactly this.
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
That is the whole block for the common case. Every lane automatically gets a
|
|
209
|
+
deterministic inbox address (`<laneId>@example.test`), and each actor's prompt is
|
|
210
|
+
extended with the full handoff: its address ("when the app asks for an email
|
|
211
|
+
address, enter exactly that"), the inbox URL to open, and the wait steering
|
|
212
|
+
("waiting for an email is normal, not a blocker"). Declare `recipients` only to
|
|
213
|
+
customize addresses or limit which lanes do email:
|
|
214
|
+
|
|
215
|
+
```yaml
|
|
185
216
|
recipients:
|
|
186
|
-
- lane:
|
|
187
|
-
|
|
217
|
+
- lane: signup-01 # this lab's REAL lane id — a roster lane's `id`, or the
|
|
218
|
+
# generated lane-01..lane-NN names when you use `count`. An unknown lane
|
|
219
|
+
# is a hard parse error listing the lab's actual lane ids (a mismatch
|
|
220
|
+
# would silently disable the funnel for that seat, which is how a
|
|
221
|
+
# 6-actor field run lost every inbox at once). Lanes you leave out get
|
|
222
|
+
# no inbox and are never told one exists — the parser warns which.
|
|
223
|
+
address: user@example.test # what the actor signs up with; the evidence
|
|
224
|
+
# drain matches captured mail against it.
|
|
188
225
|
```
|
|
189
226
|
|
|
190
227
|
The app keeps calling its email API normally (Resend/SendGrid-shaped, or a custom
|
|
191
|
-
profile); only the base URL is redirected.
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
228
|
+
profile); only the base URL is redirected. Route support: the clone/local-tree
|
|
229
|
+
computer-use route (inbox on the sandbox's own loopback) and the CONCURRENT
|
|
230
|
+
shared-world route (inbox getHost-exposed from the subject sandbox; the default
|
|
231
|
+
since every seat now runs live at once). Declared anywhere else — app-url /
|
|
232
|
+
operator-provided subjects, or a sequential `concurrency: 1` shared world — it is
|
|
233
|
+
warned inert at parse: no catch exists there and no actor hears about an inbox.
|
|
234
|
+
It needs `python3` in the subject sandbox (the stock E2B desktop has it).
|
|
235
|
+
Evidence is digest-only (`humanish.comms-thread.v1` — counts and digests, never
|
|
236
|
+
raw mail); the *readable* proof a persona saw the email is its screenshots of the
|
|
237
|
+
inbox page. See `docs/contracts/schemas.md` for the full `comms:` shape and
|
|
238
|
+
`humanish <cmd> --help` for run flags — this skill does not restate them.
|
|
195
239
|
|
|
196
240
|
## First Proof Run
|
|
197
241
|
|