humanish 0.83.2 → 0.84.1
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/README.md +3 -1
- package/dist/cua-actor-lab.js +3 -2
- package/dist/cua-actor-lab.js.map +1 -1
- package/dist/export-bundle.d.ts +7 -0
- package/dist/export-bundle.js +431 -0
- package/dist/export-bundle.js.map +1 -0
- package/dist/export.d.ts +4 -1
- package/dist/export.js +19 -0
- package/dist/export.js.map +1 -1
- package/dist/feedback-proof.d.ts +8 -0
- package/dist/feedback-proof.js +44 -0
- package/dist/feedback-proof.js.map +1 -0
- package/dist/feedback.js +6 -5
- package/dist/feedback.js.map +1 -1
- package/dist/observer-app.html +6 -6
- package/dist/observer-data.d.ts +3 -4
- package/dist/observer-data.js.map +1 -1
- package/dist/observer.js +5 -0
- package/dist/observer.js.map +1 -1
- package/dist/oss-meta-lab.js +6 -5
- package/dist/oss-meta-lab.js.map +1 -1
- package/dist/program.js +9 -5
- package/dist/program.js.map +1 -1
- package/dist/run.js +57 -1
- package/dist/run.js.map +1 -1
- package/docs/contracts/feedback.md +15 -0
- package/docs/contracts/run-bundle.md +47 -0
- package/docs/contracts/schemas.md +1 -1
- package/docs/goals/current.md +8 -2
- package/docs/principles/invariants-and-defaults.md +6 -5
- package/docs/ramp/README.md +1 -1
- package/docs/release/0.84.0-redacted-evidence.md +42 -0
- package/docs/release/0.84.1-portable-feedback.md +20 -0
- package/package.json +1 -1
|
@@ -34,6 +34,12 @@ safe. A verified run bundle is not automatically public-promotable: feedback
|
|
|
34
34
|
commands also require `humanish verify` to report
|
|
35
35
|
`shareSafety.status: share_ready`.
|
|
36
36
|
|
|
37
|
+
For an otherwise valid run whose only sharing restriction is raw screenshots,
|
|
38
|
+
`humanish export --run RUN --format bundle --redact-screenshots --out ./shared-study`
|
|
39
|
+
produces a separate, reverified workspace. Feedback commands use
|
|
40
|
+
`--cwd ./shared-study --run RUN`; the source retains its original local-only grade
|
|
41
|
+
and readable frames. Exported thumbnails do not replace local visual adjudication.
|
|
42
|
+
|
|
37
43
|
## Command Stages
|
|
38
44
|
|
|
39
45
|
```bash
|
|
@@ -150,6 +156,15 @@ Generating a public issue draft is blocked when:
|
|
|
150
156
|
|
|
151
157
|
## GitHub Issue Semantics
|
|
152
158
|
|
|
159
|
+
Generated acceptance commands use the installed `humanish` CLI from the workspace
|
|
160
|
+
containing the evidence. They require no repository package script or manifest.
|
|
161
|
+
When regenerating feedback from a retained first-party candidate, exact legacy
|
|
162
|
+
`pnpm humanish -- verify/watch` templates for the same run are projected to direct
|
|
163
|
+
CLI commands. Recognition checks the existing candidate/stream identity and
|
|
164
|
+
idempotency conventions; it is a compatibility rule, not provenance attestation.
|
|
165
|
+
Custom candidates and instructions remain unchanged. Source bundles, candidates
|
|
166
|
+
and receipts are never rewritten by this projection.
|
|
167
|
+
|
|
153
168
|
GitHub issues filed from feedback should say `contributes to` unless the
|
|
154
169
|
acceptance proof closes the full product claim. The public issue should include
|
|
155
170
|
only redacted evidence pointers and reproduction instructions that a maintainer
|
|
@@ -410,6 +410,53 @@ bundle is safe to promote into a public issue. Public promotion should branch on
|
|
|
410
410
|
- `local_only`: keep the run local or generate a redacted replacement bundle;
|
|
411
411
|
- `blocked`: fix the verification or public-safety failure first.
|
|
412
412
|
|
|
413
|
+
The local-evidence check includes screenshots declared only by
|
|
414
|
+
`streams[].actor.items[].screenshotRef` or `streams[].liveActor.items[].screenshotRef`,
|
|
415
|
+
as well as every feedback candidate's evidence. Actor frame paths are relative
|
|
416
|
+
to the run root; missing, malformed or nonlocal references fail verification.
|
|
417
|
+
Screenshots use the existing bounded PNG decoder. Nonimage candidate evidence
|
|
418
|
+
may be an empty regular file, consistent with feedback verification, but that
|
|
419
|
+
permission cannot relax another consumer's nonempty-file requirement. The
|
|
420
|
+
qualified zero-event terminal-log exception remains unchanged.
|
|
421
|
+
|
|
422
|
+
An explicit `screenshotRef.redaction: none` on either final or live actor items
|
|
423
|
+
contributes the existing `RAW_SCREENSHOTS` reason and keeps otherwise valid
|
|
424
|
+
evidence `local_only`. Either an aggregate raw declaration or a raw frame wins
|
|
425
|
+
over a blurred declaration. Missing or unknown per-frame metadata retains the
|
|
426
|
+
existing permissive compatibility behavior; verification does not infer pixel
|
|
427
|
+
privacy from that absence.
|
|
428
|
+
|
|
429
|
+
## Redacted Derivative Workspace
|
|
430
|
+
|
|
431
|
+
`humanish export --run RUN --format bundle --redact-screenshots --out DIRECTORY`
|
|
432
|
+
creates a new workspace at `DIRECTORY/.humanish/runs/RUN/`. The source remains
|
|
433
|
+
unchanged, including its latest pointer and statistics. The derivative retains the
|
|
434
|
+
original run ID and measured outcomes; it is not a new attempt. Standard commands
|
|
435
|
+
select it with `--cwd DIRECTORY --run RUN`.
|
|
436
|
+
|
|
437
|
+
Its `derivation.json` uses schema `humanish.redacted-derivation.v1` and records:
|
|
438
|
+
|
|
439
|
+
- `sourceRunId`, `createdAt` (export time), and `transformation` (`png-blur-at-export-v1`);
|
|
440
|
+
- `sourceInventorySha256`: SHA256 of the JSON array of `[path, byteLength, sha256]`
|
|
441
|
+
rows, sorted by path using JavaScript string order;
|
|
442
|
+
- `files[]`: source-relative `path`, `sourceSha256`, action (`copied`, `updated`,
|
|
443
|
+
`blurred`, or `omitted`), and `outputSha256` for retained files or a reason for
|
|
444
|
+
omission;
|
|
445
|
+
- `generated[]`: paths and SHA256s of rebuilt Observer projections.
|
|
446
|
+
|
|
447
|
+
The receipt describes the transformation; it does not attest that a participant's
|
|
448
|
+
finding is true. Its own bytes are not included in its hash inventory. Feedback
|
|
449
|
+
commands can subsequently generate new derivative-local artifacts.
|
|
450
|
+
|
|
451
|
+
PNG files are re-encoded as blurred thumbnails, including unreferenced images.
|
|
452
|
+
Known actor screenshot declarations describe export-time blur while retaining the
|
|
453
|
+
original redaction notes. Observer is rebuilt; old feedback outputs, local process
|
|
454
|
+
status and the operational sandbox journal are omitted and inventoried. A derivative
|
|
455
|
+
does not inherit resource cleanup authority. Unsupported images, binary formats,
|
|
456
|
+
inline image payloads, invalid evidence and references to omitted files are refused.
|
|
457
|
+
The original and derivative are independently verified. Text still requires human
|
|
458
|
+
review before sharing; screenshot blur does not certify natural-language privacy.
|
|
459
|
+
|
|
413
460
|
## Contract Fixture Proof
|
|
414
461
|
|
|
415
462
|
The core fixture proves:
|
|
@@ -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.
|
|
6
|
+
`0.84.1`; 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.
|
package/docs/goals/current.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Current Goals
|
|
2
2
|
|
|
3
|
-
Status date: 2026-09-07 (rev
|
|
3
|
+
Status date: 2026-09-07 (rev 22)
|
|
4
4
|
|
|
5
5
|
This page is the current public-safe operating goal for `humanish`. Keep it
|
|
6
6
|
short enough to reread before a coding session and concrete enough that future
|
|
@@ -29,11 +29,17 @@ study completed, reproduced, and produced a real accessibility finding via a
|
|
|
29
29
|
keyboard-first participant
|
|
30
30
|
([docs/goals/email-gated-signup/receipts/](email-gated-signup/receipts/)).
|
|
31
31
|
|
|
32
|
-
## Current Program Truth (source `0.
|
|
32
|
+
## Current Program Truth (source `0.84.1`)
|
|
33
33
|
|
|
34
34
|
The package source and repository implementation in this tree agree on these
|
|
35
35
|
points:
|
|
36
36
|
|
|
37
|
+
**Portable feedback acceptance commands, 2026-09-07 (#720).** Generated proof commands use the installed CLI from the evidence workspace, including standalone exports without a package manifest. Redrafting recognized first-party candidates projects exact legacy command templates without rewriting source candidates or receipts. Custom instructions remain unchanged. See the [0.84.1 release note](../release/0.84.1-portable-feedback.md).
|
|
38
|
+
|
|
39
|
+
**Readable evidence and shareable feedback, 2026-09-07 (#136).** `export --format bundle --redact-screenshots` creates a separate verified workspace while retaining the readable original. Four real operator-run recordings preserved all measured findings and costs through export and ordinary feedback commands; all 31 frames played in both bundle and HTML views. Static Observer grades now reflect their actual verification result. See the [retained workflow receipt](computer-use-actor/receipts/redacted-evidence-workflow-2026-09-07.md). External maintainer use and acceptance remain unproven.
|
|
40
|
+
|
|
41
|
+
**Declared evidence verification (#715).** Ordinary verification checks final/partial actor frame references and feedback candidate files. Explicit raw frame declarations keep partial traces `local_only`; valid zero-event terminal logs remain supported. Missing or unknown per-frame redaction metadata retains existing compatibility behavior, and unreferenced files are outside this check.
|
|
42
|
+
|
|
37
43
|
**Narrow desktop and shared-study correction, 2026-09-07.** A minimum-width Chrome window can remain outside a 500px desktop after move/resize. A state-checked fullscreen fallback now proves physical containment before participant entry. Concurrent shared-world actors share the declared model-study budget, and a host ending before lobby handoff retains its actual failure rather than being reported as a timeout. See [bounded desktop receipt](computer-use-actor/receipts/narrow-desktop-containment-2026-09-07.md). This does not establish physical mobile fidelity or external adoption.
|
|
38
44
|
|
|
39
45
|
**Mobile input correction, 2026-09-05 (#676).** The historical 4/4 TodoMVC phone-lane rename
|
|
@@ -23,8 +23,8 @@ certify (see the conformance suite).
|
|
|
23
23
|
scan additionally blocks them from commit; downstream projects do not get that scan — their
|
|
24
24
|
protection is the init-scaffolded `.gitignore` plus their own review. To share a bundle
|
|
25
25
|
as-is, set `policies.redactScreenshots: true` (blurs
|
|
26
|
-
at capture)
|
|
27
|
-
|
|
26
|
+
at capture), or use `humanish export --format bundle --redact-screenshots` to create a
|
|
27
|
+
separately verified copy while preserving readable local evidence. (See "the capture-vs-publish rule" below — blurring frames at *capture* was a
|
|
28
28
|
default mistaken for this invariant.)
|
|
29
29
|
- Scope note: the literal scrub of KNOWN provisioned values runs on harness log-tails,
|
|
30
30
|
errors, AND model-authored narration (reasoning/message) before it persists; secret-SHAPED
|
|
@@ -85,7 +85,7 @@ silently drifting from one is not.
|
|
|
85
85
|
| Per-lane worlds | Isolation, attribution, reproducibility | `subject.topology: shared-world` — N seats against ONE provisioned, mutable plane for scenarios that ARE about interaction between roles (#164). `execution.concurrency: 1` (an explicit choice) = SEQUENTIAL turns (one sandbox); higher = CONCURRENT — and since #350 an omitted concurrency fills to the seat count, so every declared seat runs live at once by default (one getHost-exposed subject sandbox + N actor sandboxes driving it at once, synthetic-subject only). The bundle declares the weaker `attributionClass: shared-world` + a verify-enforced `attributionLimits` ceiling (the concurrent set drops `sequential-only` and adds `best-effort-causal-attribution` etc.), so the looser per-role attribution is honest, not hidden. |
|
|
86
86
|
| External key placement | Smallest blast radius: when the keyed process (e.g. a computer-use provider loop) runs outside the sandbox, its key never enters | In-sandbox placement when the keyed process runs inside (an agent harness under test); declared per actor type, with a spend budget |
|
|
87
87
|
| Loopback entry URLs | Public-safety: never drive third-party sites unbidden | `policies.allowPublicTargets` for an owner-declared deployment/preview (a Vercel preview of your own app). Multi-lane public/preview fan-out needs explicit `actors[0].lanes[].target` for every lane, so the adapter-owned topology is declared rather than inferred. Provisioned clone subjects always serve in-sandbox on loopback |
|
|
88
|
-
| Full-fidelity screenshots, local | The common case is watching a sim of your OWN app locally; blur destroys the deliverable. Raw frames live in gitignored `.humanish/` (this repo's CI adds a binary-asset commit scan; downstream projects rely on the scaffolded `.gitignore` and their own review) | `policies.redactScreenshots: true` blurs at capture
|
|
88
|
+
| Full-fidelity screenshots, local | The common case is watching a sim of your OWN app locally; blur destroys the deliverable. Raw frames live in gitignored `.humanish/` (this repo's CI adds a binary-asset commit scan; downstream projects rely on the scaffolded `.gitignore` and their own review) | `policies.redactScreenshots: true` blurs at capture; `export --format bundle --redact-screenshots` produces a separate verified copy of a completed run |
|
|
89
89
|
| Synthetic, seeded state | Pinned provenance; no real user data in evidence paths | Declared external state, recorded as UNPINNED in provenance |
|
|
90
90
|
| Single lane | Cost + evidence simplicity | Declared fan-out where the backend supports it — `actors[0].count: N` (homogeneous), explicit `actors[0].lanes[]` (differentiated persona/device/instruction), or compact `actors[0].roster[]` groups that normalize into lanes on the computer-use E2B route (per-lane worlds, cap 16; `execution.concurrency` bounds concurrent paid lanes) |
|
|
91
91
|
| Stock `desktop` template | The stock E2B desktop image is right for most subjects; absent `execution.desktop.template` keeps `Sandbox.create(opts)` byte-stable | `execution.desktop.template` names a custom E2B desktop image (any name/id, no allowlist) for a subject needing baked-in runtimes the stock image lacks (e.g. node/bun/a local Postgres) — threaded to `Sandbox.create(template, opts)` on every desktop-creating route and recorded in the bundle as `desktopTemplate` (public-safe) |
|
|
@@ -140,8 +140,9 @@ threat. The corrected principle:
|
|
|
140
140
|
Consequences:
|
|
141
141
|
|
|
142
142
|
- Screenshots are retained **raw and full-fidelity** by default, in gitignored `.humanish/`.
|
|
143
|
-
`policies.redactScreenshots: true` blurs at capture for a share-as-is bundle;
|
|
144
|
-
|
|
143
|
+
`policies.redactScreenshots: true` blurs at capture for a share-as-is bundle;
|
|
144
|
+
`humanish export --format bundle --redact-screenshots` blurs a separately verified
|
|
145
|
+
copy of a completed raw bundle without changing the original. The
|
|
145
146
|
frame sent to the provider is always raw regardless — the model must see the screen to act.
|
|
146
147
|
- The loopback wall and the synthetic-data stance were the same error: enforcing at
|
|
147
148
|
capture/runtime (rejecting a public target outright; banning realistic local input) what
|
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.84.1` (2026-09-07). 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
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Humanish 0.84.0: share evidence while keeping readable originals
|
|
2
|
+
|
|
3
|
+
`humanish export --format bundle --redact-screenshots` creates a separate
|
|
4
|
+
workspace containing a redacted copy of a completed run. The original screenshots
|
|
5
|
+
remain readable for local adjudication. The copied run keeps the same ID,
|
|
6
|
+
participants, findings, task results, subject pins, settings and cost records.
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
humanish export --run RUN --format bundle --redact-screenshots --out shared-study
|
|
10
|
+
humanish verify --cwd shared-study --run RUN
|
|
11
|
+
humanish feedback draft --cwd shared-study --run RUN
|
|
12
|
+
humanish feedback issue --cwd shared-study --run RUN --repo OWNER/REPO
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The exporter verifies frozen source bytes, transforms every PNG, rebuilds the
|
|
16
|
+
Observer and verifies the resulting workspace before publishing it. Its receipt
|
|
17
|
+
records copied, changed and omitted files. Unsupported image or binary formats,
|
|
18
|
+
unsafe paths, unfinished runs, changing source files and existing destinations
|
|
19
|
+
are refused. Operational journals do not give the derivative a resource lease
|
|
20
|
+
or create another study attempt.
|
|
21
|
+
|
|
22
|
+
The existing full-frame blur makes screenshots unsuitable for detailed visual
|
|
23
|
+
adjudication. Keep the original, and review text and findings before sharing.
|
|
24
|
+
|
|
25
|
+
Ordinary `verify` also checks declared actor and partial-trace screenshots and
|
|
26
|
+
feedback candidate evidence. Missing, unsafe or invalid referenced files fail.
|
|
27
|
+
Explicitly raw frames retain `local_only`, including partial traces and a raw
|
|
28
|
+
frame under a conflicting blurred declaration. Empty nonimage feedback files
|
|
29
|
+
remain valid when no other consumer requires content. Missing or unknown
|
|
30
|
+
per-frame redaction metadata keeps existing compatibility behavior; this is
|
|
31
|
+
not a pixel audit or certification of absent metadata.
|
|
32
|
+
|
|
33
|
+
Static Observer renders now display their actual verification grade. HTML
|
|
34
|
+
attachments retain screenshot playback and grid thumbnails; generic artifact
|
|
35
|
+
links retain their containment restrictions.
|
|
36
|
+
|
|
37
|
+
The [workflow receipt](../goals/computer-use-actor/receipts/redacted-evidence-workflow-2026-09-07.md)
|
|
38
|
+
records four real sessions, 67 unchanged original files and 31 transformed frames.
|
|
39
|
+
All four moved workspaces passed published 0.83.2 verification and feedback
|
|
40
|
+
commands with the originals unavailable. Browser inspection covered bundle and
|
|
41
|
+
HTML playback at desktop and mobile sizes. This was an operator rehearsal using
|
|
42
|
+
a known TodoMVC repair; external maintainer adoption remains unproven.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Humanish 0.84.1: feedback commands work in exported workspaces
|
|
2
|
+
|
|
3
|
+
Feedback acceptance commands now call the installed `humanish` CLI directly.
|
|
4
|
+
They work from a standalone exported evidence workspace without a package
|
|
5
|
+
manifest or repository script:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
humanish verify --run RUN --json
|
|
9
|
+
humanish watch --run RUN --no-open
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Run them from the directory containing `.humanish/`, with the CLI on `PATH`.
|
|
13
|
+
The watch command serves the Observer until stopped. These commands do not
|
|
14
|
+
download a different package version.
|
|
15
|
+
|
|
16
|
+
Redrafting feedback from recognized first-party candidates also updates exact
|
|
17
|
+
legacy command templates. Custom acceptance instructions and all original
|
|
18
|
+
candidate evidence and receipts remain unchanged. Unusual run IDs are quoted
|
|
19
|
+
for shell use. The [feedback contract](../contracts/feedback.md) describes the
|
|
20
|
+
compatibility boundary.
|
package/package.json
CHANGED