humanish 0.106.1 → 0.108.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +38 -32
- package/CHANGELOG.md +28 -0
- package/CONTEXT.md +51 -41
- package/README.md +152 -174
- package/SECURITY.md +16 -26
- package/TELEMETRY.md +8 -6
- package/dist/actors/affordance.d.ts +4 -4
- package/dist/actors/affordance.js +12 -12
- package/dist/actors/agent-session.d.ts +2 -2
- package/dist/actors/agent-session.js +7 -7
- package/dist/actors/codex/app-server-actor-trace.d.ts +1 -1
- package/dist/actors/codex/app-server-actor-trace.js +1 -1
- package/dist/actors/codex/app-server-client.js +2 -1
- package/dist/actors/codex/app-server-trace.d.ts +0 -1
- package/dist/actors/codex/app-server-trace.js +1 -3
- package/dist/actors/codex/app-server-ui.js +1 -1
- package/dist/actors/codex/app-server.js +2 -1
- package/dist/actors/codex/codex-admission.d.ts +91 -0
- package/dist/actors/codex/codex-admission.js +150 -0
- package/dist/actors/codex/protocol-compat.d.ts +27 -0
- package/dist/actors/codex/protocol-compat.js +357 -0
- package/dist/actors/codex/protocol-contract.d.ts +61 -0
- package/dist/actors/codex/protocol-contract.js +471 -0
- package/dist/actors/codex/restricted-executable.d.ts +28 -4
- package/dist/actors/codex/restricted-executable.js +104 -29
- package/dist/actors/codex/restricted-launch.d.ts +9 -2
- package/dist/actors/codex/restricted-launch.js +43 -4
- package/dist/actors/codex/restricted-notifications.d.ts +101 -0
- package/dist/actors/codex/restricted-notifications.js +277 -0
- package/dist/actors/codex/restricted-participant.d.ts +30 -0
- package/dist/actors/codex/restricted-participant.js +66 -6
- package/dist/actors/codex/restricted-policy.d.ts +11 -3
- package/dist/actors/codex/restricted-policy.js +2 -2
- package/dist/actors/codex/restricted-session.d.ts +16 -3
- package/dist/actors/codex/restricted-session.js +60 -22
- package/dist/actors/codex/restricted-transport.d.ts +29 -0
- package/dist/actors/codex/restricted-transport.js +139 -27
- package/dist/actors/codex/restricted-turn.d.ts +19 -4
- package/dist/actors/codex/restricted-turn.js +43 -30
- package/dist/actors/computer-use/actor.d.ts +17 -17
- package/dist/actors/computer-use/actor.js +6 -6
- package/dist/actors/computer-use/admission-limit.d.ts +1 -1
- package/dist/actors/computer-use/admission-limit.js +1 -1
- package/dist/actors/computer-use/loop/actions.d.ts +3 -3
- package/dist/actors/computer-use/loop/actions.js +10 -10
- package/dist/actors/computer-use/loop/backstop.d.ts +3 -3
- package/dist/actors/computer-use/loop/backstop.js +15 -13
- package/dist/actors/computer-use/loop/ending.d.ts +7 -7
- package/dist/actors/computer-use/loop/ending.js +9 -9
- package/dist/actors/computer-use/loop/observation.d.ts +2 -2
- package/dist/actors/computer-use/loop/observation.js +9 -9
- package/dist/actors/computer-use/loop/provider-call.d.ts +1 -1
- package/dist/actors/computer-use/loop/provider-call.js +1 -1
- package/dist/actors/computer-use/loop/session.js +3 -3
- package/dist/actors/computer-use/loop/spend.d.ts +2 -2
- package/dist/actors/computer-use/loop/spend.js +4 -4
- package/dist/actors/computer-use/loop/trace.js +11 -10
- package/dist/actors/computer-use/loop/types.d.ts +37 -26
- package/dist/actors/computer-use/loop/usage.js +2 -2
- package/dist/actors/computer-use/loop.js +4 -4
- package/dist/actors/computer-use/openai-context.d.ts +37 -0
- package/dist/actors/computer-use/openai-context.js +214 -0
- package/dist/actors/computer-use/openai-provider.d.ts +12 -9
- package/dist/actors/computer-use/openai-provider.js +47 -36
- package/dist/actors/computer-use/openai-requests.d.ts +36 -10
- package/dist/actors/computer-use/openai-requests.js +82 -15
- package/dist/actors/computer-use/openai-wire.d.ts +19 -7
- package/dist/actors/computer-use/openai-wire.js +36 -34
- package/dist/actors/contract.d.ts +86 -49
- package/dist/actors/contract.js +29 -23
- package/dist/actors/local-agent/claude-session.d.ts +1 -1
- package/dist/actors/local-agent/claude-session.js +10 -9
- package/dist/actors/local-agent/cli.d.ts +8 -6
- package/dist/actors/local-agent/cli.js +24 -28
- package/dist/actors/local-agent/readiness.d.ts +2 -2
- package/dist/actors/local-agent/readiness.js +4 -4
- package/dist/actors/reasoning-effort.js +6 -6
- package/dist/actors/registry.d.ts +10 -10
- package/dist/actors/registry.js +18 -17
- package/dist/actors/scripted-browser/actor.d.ts +8 -8
- package/dist/actors/scripted-browser/actor.js +16 -16
- package/dist/actors/scripted-browser/browser-command.js +1 -1
- package/dist/actors/scripted-browser/journey.js +15 -4
- package/dist/actors/scripted-browser/steps.js +19 -1
- package/dist/actors/scripted-browser/types.d.ts +12 -2
- package/dist/actors/stop-conditions.d.ts +1 -1
- package/dist/actors/stop-conditions.js +1 -3
- package/dist/analysis/automatic-completion.d.ts +13 -8
- package/dist/analysis/automatic-completion.js +14 -8
- package/dist/analysis/automatic-config.d.ts +1 -1
- package/dist/analysis/automatic-config.js +2 -2
- package/dist/analysis/automatic.d.ts +10 -4
- package/dist/analysis/automatic.js +17 -13
- package/dist/analysis/codex-config.d.ts +6 -2
- package/dist/analysis/codex-config.js +22 -14
- package/dist/analysis/diagnostics.d.ts +23 -0
- package/dist/analysis/diagnostics.js +112 -0
- package/dist/analysis/evidence-sources.js +2 -2
- package/dist/analysis/evidence.js +6 -6
- package/dist/analysis/execute.d.ts +7 -1
- package/dist/analysis/execute.js +39 -12
- package/dist/analysis/job.d.ts +8 -5
- package/dist/analysis/job.js +15 -14
- package/dist/analysis/load.d.ts +1 -1
- package/dist/analysis/load.js +5 -5
- package/dist/analysis/provider.d.ts +9 -1
- package/dist/analysis/restricted-codex.d.ts +2 -0
- package/dist/analysis/restricted-codex.js +10 -1
- package/dist/analysis/service.d.ts +2 -0
- package/dist/analysis/service.js +35 -16
- package/dist/analysis/sharing.d.ts +2 -2
- package/dist/analysis/sharing.js +5 -5
- package/dist/analysis/store-executions.d.ts +5 -5
- package/dist/analysis/store-executions.js +12 -12
- package/dist/analysis/store.d.ts +4 -4
- package/dist/analysis/store.js +13 -13
- package/dist/cli/commands/analysis-signals.d.ts +2 -1
- package/dist/cli/commands/analysis-signals.js +4 -1
- package/dist/cli/commands/analyze.js +23 -18
- package/dist/cli/commands/codex.js +9 -9
- package/dist/cli/commands/comms.js +62 -34
- package/dist/cli/commands/feedback.js +20 -21
- package/dist/cli/commands/lab-format.d.ts +5 -4
- package/dist/cli/commands/lab-format.js +35 -23
- package/dist/cli/commands/lab-route-computer-use.d.ts +0 -2
- package/dist/cli/commands/lab-route-computer-use.js +32 -21
- package/dist/cli/commands/lab-route-preview.d.ts +1 -3
- package/dist/cli/commands/lab-route-preview.js +7 -7
- package/dist/cli/commands/lab-route-run.d.ts +6 -4
- package/dist/cli/commands/lab-route-run.js +6 -2
- package/dist/cli/commands/lab-route-scripted.d.ts +0 -2
- package/dist/cli/commands/lab-route-scripted.js +0 -1
- package/dist/cli/commands/lab-route-shared-world.d.ts +0 -2
- package/dist/cli/commands/lab-route-shared-world.js +3 -4
- package/dist/cli/commands/lab-route-terminal.d.ts +0 -2
- package/dist/cli/commands/lab-route-terminal.js +0 -1
- package/dist/cli/commands/lab-run.js +84 -54
- package/dist/cli/commands/lab-scorer.d.ts +2 -4
- package/dist/cli/commands/lab-scorer.js +1 -1
- package/dist/cli/commands/migrate.d.ts +4 -0
- package/dist/cli/commands/migrate.js +65 -0
- package/dist/cli/commands/observe.js +168 -107
- package/dist/cli/commands/run-command.d.ts +10 -0
- package/dist/cli/commands/run-command.js +85 -0
- package/dist/cli/commands/run-signals.d.ts +30 -0
- package/dist/cli/commands/run-signals.js +146 -0
- package/dist/cli/commands/runs.js +137 -136
- package/dist/cli/commands/setup.d.ts +2 -2
- package/dist/cli/commands/setup.js +26 -21
- package/dist/cli/commands/study.d.ts +3 -0
- package/dist/cli/commands/study.js +182 -0
- package/dist/cli/commands/tui.d.ts +4 -4
- package/dist/cli/commands/tui.js +21 -21
- package/dist/cli/commands/watch.js +64 -77
- package/dist/cli/deprecations.d.ts +18 -0
- package/dist/cli/deprecations.js +48 -0
- package/dist/cli/doctor.d.ts +18 -5
- package/dist/cli/doctor.js +111 -48
- package/dist/cli/first-run-path.d.ts +12 -10
- package/dist/cli/first-run-path.js +30 -28
- package/dist/cli/io.d.ts +46 -10
- package/dist/cli/io.js +109 -30
- package/dist/cli/observer-follow.d.ts +2 -2
- package/dist/cli/observer-follow.js +5 -6
- package/dist/cli/orientation.d.ts +6 -3
- package/dist/cli/orientation.js +43 -39
- package/dist/cli/product-sentence.d.ts +6 -0
- package/dist/cli/product-sentence.js +6 -0
- package/dist/cli/program.d.ts +6 -1
- package/dist/cli/program.js +112 -43
- package/dist/cli/telemetry.d.ts +17 -17
- package/dist/cli/telemetry.js +49 -41
- package/dist/cli.js +1 -1
- package/dist/comms/capture-surface.d.ts +14 -13
- package/dist/comms/capture-surface.js +23 -22
- package/dist/comms/catch-host.d.ts +8 -8
- package/dist/comms/catch-host.js +14 -14
- package/dist/comms/connections.js +4 -4
- package/dist/comms/email-catch.d.ts +3 -3
- package/dist/comms/email-catch.js +8 -8
- package/dist/comms/external-evidence.d.ts +27 -0
- package/dist/comms/external-evidence.js +93 -0
- package/dist/comms/extract.js +2 -2
- package/dist/comms/fake-inbox.d.ts +2 -2
- package/dist/comms/fake-inbox.js +2 -2
- package/dist/comms/lease-store.js +7 -7
- package/dist/comms/receiving-render.d.ts +1 -1
- package/dist/comms/receiving-render.js +2 -2
- package/dist/comms/sandbox-catch-script.d.ts +6 -6
- package/dist/comms/sandbox-catch-script.js +6 -6
- package/dist/comms/sandbox-catch.d.ts +36 -37
- package/dist/comms/sandbox-catch.js +34 -35
- package/dist/comms/setup.js +42 -8
- package/dist/comms/thread-evidence.d.ts +1 -1
- package/dist/comms/thread-evidence.js +6 -6
- package/dist/comms/types.d.ts +6 -6
- package/dist/comms/types.js +4 -4
- package/dist/evidence/browser-hygiene.d.ts +1 -1
- package/dist/evidence/browser-hygiene.js +1 -1
- package/dist/evidence/frame-signature.d.ts +1 -1
- package/dist/evidence/frame-signature.js +4 -4
- package/dist/evidence/redaction.d.ts +3 -3
- package/dist/evidence/redaction.js +5 -5
- package/dist/evidence/secret-scrub.d.ts +9 -0
- package/dist/evidence/secret-scrub.js +96 -0
- package/dist/feedback/draft.js +41 -85
- package/dist/feedback/export-bundle.js +5 -5
- package/dist/feedback/export.d.ts +5 -1
- package/dist/feedback/export.js +16 -17
- package/dist/feedback/feedback.d.ts +3 -3
- package/dist/feedback/feedback.js +21 -3
- package/dist/guest/chromium-text.js +2 -2
- package/dist/guest/desktop-native.d.ts +1 -1
- package/dist/guest/runtime.js +1 -1
- package/dist/index.d.ts +14 -15
- package/dist/index.js +10 -11
- package/dist/keys/key-resolution.d.ts +7 -5
- package/dist/keys/key-resolution.js +40 -38
- package/dist/lab/adapter-extension.d.ts +35 -13
- package/dist/lab/adapter-extension.js +50 -134
- package/dist/lab/adapter-scorer-loader.d.ts +32 -12
- package/dist/lab/adapter-scorer-loader.js +56 -32
- package/dist/lab/composition-rules.js +58 -58
- package/dist/lab/config.js +85 -43
- package/dist/lab/deprecated-fields.d.ts +10 -0
- package/dist/lab/deprecated-fields.js +24 -0
- package/dist/lab/device-presets.d.ts +10 -10
- package/dist/lab/device-presets.js +11 -11
- package/dist/lab/discover.d.ts +13 -9
- package/dist/lab/discover.js +118 -60
- package/dist/lab/doctor.d.ts +53 -11
- package/dist/lab/doctor.js +193 -47
- package/dist/lab/init-plan.js +1 -3
- package/dist/lab/init-templates.js +147 -147
- package/dist/lab/init.d.ts +1 -1
- package/dist/lab/init.js +41 -9
- package/dist/lab/keys.d.ts +2 -0
- package/dist/lab/keys.js +43 -9
- package/dist/lab/lab-deps.d.ts +80 -0
- package/dist/lab/lab-deps.js +4 -0
- package/dist/lab/parse/actors.js +17 -16
- package/dist/lab/parse/comms.js +8 -7
- package/dist/lab/parse/execution.js +15 -14
- package/dist/lab/parse/study-v3.d.ts +23 -0
- package/dist/lab/parse/study-v3.js +259 -0
- package/dist/lab/parse/subject-state.d.ts +7 -7
- package/dist/lab/parse/subject-state.js +18 -17
- package/dist/lab/parse/subject.js +30 -29
- package/dist/lab/parse/values.d.ts +1 -2
- package/dist/lab/parse/values.js +3 -6
- package/dist/lab/persona-resolve.d.ts +7 -7
- package/dist/lab/persona-resolve.js +8 -8
- package/dist/lab/persona.js +1 -3
- package/dist/lab/plan-base.d.ts +0 -2
- package/dist/lab/plan-base.js +6 -4
- package/dist/lab/plan-participants.d.ts +7 -7
- package/dist/lab/plan-participants.js +2 -2
- package/dist/lab/plan-types.d.ts +26 -8
- package/dist/lab/plan.d.ts +4 -18
- package/dist/lab/plan.js +24 -79
- package/dist/lab/preflight-probes.js +11 -11
- package/dist/lab/preflight-result.d.ts +2 -1
- package/dist/lab/preflight-result.js +5 -6
- package/dist/lab/preflight.d.ts +7 -8
- package/dist/lab/preflight.js +6 -6
- package/dist/lab/requirements.d.ts +20 -0
- package/dist/lab/requirements.js +54 -0
- package/dist/lab/route-inputs.d.ts +23 -12
- package/dist/lab/route-inputs.js +48 -51
- package/dist/lab/routing.d.ts +42 -41
- package/dist/lab/routing.js +66 -68
- package/dist/lab/run-lab-events.d.ts +3 -11
- package/dist/lab/run-lab-events.js +2 -16
- package/dist/lab/run-lab-homes.d.ts +76 -0
- package/dist/lab/run-lab-homes.js +7 -0
- package/dist/lab/run-lab-options.d.ts +12 -66
- package/dist/lab/run-lab-options.js +58 -285
- package/dist/lab/summary.d.ts +15 -9
- package/dist/lab/summary.js +24 -17
- package/dist/lab/tasks.d.ts +15 -15
- package/dist/lab/tasks.js +14 -14
- package/dist/lab/types.d.ts +201 -195
- package/dist/lab/types.js +2 -0
- package/dist/lab/validation.d.ts +21 -21
- package/dist/lab/validation.js +61 -59
- package/dist/lab/warnings.d.ts +10 -0
- package/dist/lab/warnings.js +70 -41
- package/dist/library-aliases.d.ts +56 -0
- package/dist/library-aliases.js +22 -0
- package/dist/observer/artifact.d.ts +2 -2
- package/dist/observer/artifact.js +9 -9
- package/dist/observer/data.d.ts +6 -6
- package/dist/observer/data.js +7 -6
- package/dist/observer/exposure.d.ts +1 -1
- package/dist/observer/exposure.js +11 -11
- package/dist/observer/http.js +1 -1
- package/dist/observer/library.d.ts +1 -1
- package/dist/observer/library.js +4 -2
- package/dist/observer/listen.js +5 -4
- package/dist/observer/render.d.ts +1 -1
- package/dist/observer/render.js +12 -7
- package/dist/observer/run-routes.d.ts +4 -4
- package/dist/observer/run-routes.js +6 -6
- package/dist/observer/serve.d.ts +17 -0
- package/dist/observer/serve.js +41 -6
- package/dist/observer/tunnel.js +1 -1
- package/dist/observer-app.html +4 -4
- package/dist/routes/computer-use/bundle-parts.d.ts +9 -9
- package/dist/routes/computer-use/bundle-parts.js +24 -17
- package/dist/routes/computer-use/bundle.d.ts +4 -11
- package/dist/routes/computer-use/bundle.js +12 -18
- package/dist/routes/computer-use/diagnostics.d.ts +1 -1
- package/dist/routes/computer-use/diagnostics.js +1 -1
- package/dist/routes/computer-use/e2b-desktop/comms.d.ts +11 -11
- package/dist/routes/computer-use/e2b-desktop/comms.js +24 -27
- package/dist/routes/computer-use/e2b-desktop/desktop.d.ts +2 -2
- package/dist/routes/computer-use/e2b-desktop/desktop.js +8 -11
- package/dist/routes/computer-use/e2b-desktop/fidelity.d.ts +16 -15
- package/dist/routes/computer-use/e2b-desktop/fidelity.js +20 -19
- package/dist/routes/computer-use/e2b-desktop/prepare.d.ts +3 -3
- package/dist/routes/computer-use/e2b-desktop/prepare.js +40 -43
- package/dist/routes/computer-use/e2b-desktop/start.d.ts +1 -1
- package/dist/routes/computer-use/e2b-desktop/start.js +32 -30
- package/dist/routes/computer-use/e2b-desktop/state.d.ts +5 -4
- package/dist/routes/computer-use/e2b-desktop/state.js +5 -3
- package/dist/routes/computer-use/e2b-desktop/teardown.d.ts +1 -1
- package/dist/routes/computer-use/e2b-desktop/teardown.js +33 -20
- package/dist/routes/computer-use/external-comms.d.ts +4 -4
- package/dist/routes/computer-use/external-comms.js +19 -43
- package/dist/routes/computer-use/fanout-bundle.d.ts +3 -3
- package/dist/routes/computer-use/fanout-bundle.js +38 -42
- package/dist/routes/computer-use/{fanout-lanes.js → fanout-records.js} +33 -28
- package/dist/routes/computer-use/in-process-desktop.d.ts +3 -10
- package/dist/routes/computer-use/in-process-desktop.js +3 -9
- package/dist/routes/computer-use/live-flush.d.ts +7 -5
- package/dist/routes/computer-use/live-flush.js +20 -28
- package/dist/routes/computer-use/{run-lanes.d.ts → live-phase.d.ts} +4 -2
- package/dist/routes/computer-use/{run-lanes.js → live-phase.js} +17 -16
- package/dist/routes/computer-use/local-tree-pack.d.ts +3 -3
- package/dist/routes/computer-use/local-tree-pack.js +4 -5
- package/dist/routes/computer-use/local-vm.d.ts +11 -8
- package/dist/routes/computer-use/local-vm.js +40 -67
- package/dist/routes/computer-use/participant-desktop.d.ts +8 -23
- package/dist/routes/computer-use/participant-desktop.js +5 -25
- package/dist/routes/computer-use/{lanes.d.ts → participant-execution.d.ts} +11 -11
- package/dist/routes/computer-use/{lanes.js → participant-execution.js} +39 -26
- package/dist/routes/computer-use/participant-facts.d.ts +7 -1
- package/dist/routes/computer-use/participant-facts.js +12 -1
- package/dist/routes/computer-use/participant-model.d.ts +25 -11
- package/dist/routes/computer-use/participant-model.js +76 -34
- package/dist/routes/computer-use/participant-prompt.d.ts +13 -13
- package/dist/routes/computer-use/participant-prompt.js +8 -8
- package/dist/routes/computer-use/participant-runs.d.ts +11 -11
- package/dist/routes/computer-use/participant-runs.js +18 -18
- package/dist/routes/computer-use/plan.d.ts +21 -29
- package/dist/routes/computer-use/plan.js +70 -78
- package/dist/routes/computer-use/preflight.d.ts +3 -5
- package/dist/routes/computer-use/preflight.js +40 -36
- package/dist/routes/computer-use/rerun-selection.js +11 -7
- package/dist/routes/computer-use/result.d.ts +1 -1
- package/dist/routes/computer-use/result.js +48 -38
- package/dist/routes/computer-use/route.d.ts +5 -5
- package/dist/routes/computer-use/route.js +36 -33
- package/dist/routes/computer-use/self-report.d.ts +8 -8
- package/dist/routes/computer-use/self-report.js +33 -33
- package/dist/routes/computer-use/setup.d.ts +9 -15
- package/dist/routes/computer-use/setup.js +106 -83
- package/dist/routes/computer-use/single-bundle.d.ts +13 -16
- package/dist/routes/computer-use/single-bundle.js +46 -53
- package/dist/routes/computer-use/subject-projection.d.ts +6 -8
- package/dist/routes/computer-use/subject-projection.js +24 -23
- package/dist/routes/computer-use/types.d.ts +195 -238
- package/dist/routes/computer-use/types.js +21 -13
- package/dist/routes/preview.d.ts +8 -2
- package/dist/routes/preview.js +8 -5
- package/dist/routes/scripted/bundle.d.ts +5 -8
- package/dist/routes/scripted/bundle.js +23 -27
- package/dist/routes/scripted/plan.d.ts +6 -8
- package/dist/routes/scripted/plan.js +15 -13
- package/dist/routes/scripted/result.d.ts +4 -1
- package/dist/routes/scripted/result.js +15 -11
- package/dist/routes/scripted/route.js +15 -17
- package/dist/routes/scripted/scenario.d.ts +1 -1
- package/dist/routes/scripted/scenario.js +3 -3
- package/dist/routes/scripted/setup.d.ts +3 -2
- package/dist/routes/scripted/setup.js +27 -26
- package/dist/routes/scripted/subject.d.ts +8 -3
- package/dist/routes/scripted/subject.js +10 -6
- package/dist/routes/scripted/surface-records.js +4 -4
- package/dist/routes/scripted/surface-sessions.d.ts +2 -2
- package/dist/routes/scripted/surface-sessions.js +4 -4
- package/dist/routes/scripted/types.d.ts +21 -40
- package/dist/routes/scripted/types.js +2 -3
- package/dist/routes/shared-world/{seat-records.js → bundle-records.js} +17 -16
- package/dist/routes/shared-world/bundle.d.ts +7 -7
- package/dist/routes/shared-world/bundle.js +60 -62
- package/dist/routes/shared-world/checkpoints.d.ts +5 -5
- package/dist/routes/shared-world/checkpoints.js +5 -5
- package/dist/routes/shared-world/comms.d.ts +8 -7
- package/dist/routes/shared-world/comms.js +38 -51
- package/dist/routes/shared-world/external-public.d.ts +6 -5
- package/dist/routes/shared-world/external-public.js +28 -25
- package/dist/routes/shared-world/handoff.d.ts +10 -9
- package/dist/routes/shared-world/handoff.js +89 -81
- package/dist/routes/shared-world/lobby-code.d.ts +7 -7
- package/dist/routes/shared-world/lobby-code.js +22 -22
- package/dist/routes/shared-world/{seats.d.ts → participant-specs.d.ts} +15 -12
- package/dist/routes/shared-world/{seats.js → participant-specs.js} +65 -63
- package/dist/routes/shared-world/plan.d.ts +2 -6
- package/dist/routes/shared-world/plan.js +8 -9
- package/dist/routes/shared-world/provenance.d.ts +4 -4
- package/dist/routes/shared-world/provenance.js +4 -4
- package/dist/routes/shared-world/provisioned.d.ts +3 -2
- package/dist/routes/shared-world/provisioned.js +55 -48
- package/dist/routes/shared-world/result.js +47 -36
- package/dist/routes/shared-world/route.js +54 -57
- package/dist/routes/shared-world/setup.d.ts +6 -5
- package/dist/routes/shared-world/setup.js +16 -18
- package/dist/routes/shared-world/types.d.ts +70 -141
- package/dist/routes/shared-world/types.js +5 -5
- package/dist/routes/terminal/adapter.d.ts +10 -10
- package/dist/routes/terminal/adapter.js +32 -129
- package/dist/routes/terminal/bundle.d.ts +10 -15
- package/dist/routes/terminal/bundle.js +43 -52
- package/dist/routes/terminal/credentials.d.ts +4 -4
- package/dist/routes/terminal/credentials.js +20 -20
- package/dist/routes/terminal/dry-run.d.ts +1 -1
- package/dist/routes/terminal/dry-run.js +13 -15
- package/dist/routes/terminal/encoding.d.ts +1 -1
- package/dist/routes/terminal/encoding.js +4 -4
- package/dist/routes/terminal/ledger.d.ts +8 -8
- package/dist/routes/terminal/ledger.js +22 -22
- package/dist/routes/terminal/live-finish.d.ts +1 -2
- package/dist/routes/terminal/live-finish.js +24 -23
- package/dist/routes/terminal/live-sandbox.d.ts +3 -2
- package/dist/routes/terminal/live-sandbox.js +31 -32
- package/dist/routes/terminal/participant-text.d.ts +23 -0
- package/dist/routes/terminal/participant-text.js +165 -0
- package/dist/routes/terminal/persona.js +1 -1
- package/dist/routes/terminal/plan.d.ts +2 -6
- package/dist/routes/terminal/plan.js +23 -19
- package/dist/routes/terminal/recorder.d.ts +6 -1
- package/dist/routes/terminal/recorder.js +12 -4
- package/dist/routes/terminal/result.js +12 -12
- package/dist/routes/terminal/route.js +30 -31
- package/dist/routes/terminal/runtime.d.ts +3 -2
- package/dist/routes/terminal/runtime.js +3 -3
- package/dist/routes/terminal/sandbox.d.ts +4 -4
- package/dist/routes/terminal/sandbox.js +10 -10
- package/dist/routes/terminal/session.js +22 -19
- package/dist/routes/terminal/token-usage.d.ts +1 -1
- package/dist/routes/terminal/token-usage.js +10 -11
- package/dist/routes/terminal/trace.d.ts +7 -10
- package/dist/routes/terminal/trace.js +11 -66
- package/dist/routes/terminal/types.d.ts +104 -114
- package/dist/routes/terminal/types.js +12 -7
- package/dist/run/active-runs.d.ts +13 -0
- package/dist/run/active-runs.js +12 -0
- package/dist/run/bundle-shape.d.ts +2 -1
- package/dist/run/bundle-shape.js +7 -7
- package/dist/run/bundle.d.ts +99 -92
- package/dist/run/bundle.js +10 -8
- package/dist/run/cost-summary.js +6 -5
- package/dist/run/costs.d.ts +6 -6
- package/dist/run/costs.js +17 -11
- package/dist/run/detail.d.ts +9 -9
- package/dist/run/detail.js +10 -10
- package/dist/run/dry-run-inputs.js +1 -1
- package/dist/run/dry-run.js +23 -30
- package/dist/run/{study-files.d.ts → evidence-files.d.ts} +4 -4
- package/dist/run/{study-files.js → evidence-files.js} +5 -5
- package/dist/run/feedback-shape.js +1 -1
- package/dist/run/judge.d.ts +34 -16
- package/dist/run/judge.js +41 -14
- package/dist/run/locate.d.ts +2 -0
- package/dist/run/locate.js +3 -1
- package/dist/run/outcomes.d.ts +3 -3
- package/dist/run/outcomes.js +3 -3
- package/dist/run/participant-records.d.ts +2 -2
- package/dist/run/participant-records.js +2 -2
- package/dist/run/paths.d.ts +1 -1
- package/dist/run/paths.js +2 -2
- package/dist/run/pricing.d.ts +30 -15
- package/dist/run/pricing.js +49 -30
- package/dist/run/projection.d.ts +27 -27
- package/dist/run/projection.js +23 -23
- package/dist/run/reclaim.d.ts +6 -0
- package/dist/run/reclaim.js +15 -5
- package/dist/run/results.d.ts +5 -5
- package/dist/run/run-index.d.ts +9 -7
- package/dist/run/run-index.js +24 -25
- package/dist/run/run-not-found.d.ts +5 -0
- package/dist/run/run-not-found.js +15 -0
- package/dist/run/run.d.ts +7 -4
- package/dist/run/run.js +10 -6
- package/dist/run/sandbox-receipts.d.ts +5 -5
- package/dist/run/sandbox-receipts.js +6 -6
- package/dist/run/shared-world-evidence.d.ts +67 -66
- package/dist/run/shared-world-evidence.js +4 -4
- package/dist/run/shared-world-shape.d.ts +3 -3
- package/dist/run/shared-world-shape.js +16 -16
- package/dist/run/stats.d.ts +17 -11
- package/dist/run/stats.js +124 -66
- package/dist/run/status.d.ts +21 -32
- package/dist/run/status.js +34 -33
- package/dist/run/stored-runs.js +2 -1
- package/dist/run/stream-shape.js +1 -1
- package/dist/run/streams.d.ts +29 -22
- package/dist/run/study-provenance.d.ts +47 -0
- package/dist/run/study-provenance.js +63 -0
- package/dist/run/study-result.d.ts +16 -0
- package/dist/run/study-result.js +9 -0
- package/dist/run/terminal-contract.d.ts +5 -5
- package/dist/run/terminal-contract.js +4 -4
- package/dist/run/text.d.ts +2 -0
- package/dist/run/text.js +4 -0
- package/dist/run/transient-comms-secrets.d.ts +5 -0
- package/dist/run/transient-comms-secrets.js +12 -0
- package/dist/run-lab.d.ts +40 -38
- package/dist/run-lab.js +42 -40
- package/dist/study/convert.d.ts +33 -0
- package/dist/study/convert.js +432 -0
- package/dist/study/field-paths.d.ts +12 -0
- package/dist/study/field-paths.js +126 -0
- package/dist/study/files.d.ts +26 -0
- package/dist/study/files.js +43 -0
- package/dist/study/migrate.d.ts +48 -0
- package/dist/study/migrate.js +408 -0
- package/dist/study/owned-files.d.ts +38 -0
- package/dist/study/owned-files.js +182 -0
- package/dist/subject/clone.d.ts +1 -1
- package/dist/subject/desktop-cli.d.ts +2 -2
- package/dist/subject/desktop-cli.js +3 -3
- package/dist/subject/local-tree-archive.d.ts +1 -1
- package/dist/subject/local-tree-archive.js +5 -5
- package/dist/subject/local-tree.d.ts +3 -3
- package/dist/subject/local-tree.js +1 -1
- package/dist/subject/node-bootstrap.d.ts +1 -1
- package/dist/subject/node-bootstrap.js +4 -4
- package/dist/subject/runtime.js +10 -11
- package/dist/subject/serve.d.ts +1 -1
- package/dist/subject/serve.js +4 -4
- package/dist/subject/state.d.ts +1 -1
- package/dist/subject/steps.d.ts +8 -8
- package/dist/subject/steps.js +7 -7
- package/dist/substrates/command-failure.d.ts +3 -3
- package/dist/substrates/command-failure.js +3 -3
- package/dist/substrates/detached.d.ts +6 -6
- package/dist/substrates/detached.js +7 -7
- package/dist/substrates/e2b/cdp-probe.d.ts +11 -11
- package/dist/substrates/e2b/cdp-probe.js +15 -18
- package/dist/substrates/e2b/desktop-browser.d.ts +5 -5
- package/dist/substrates/e2b/desktop-browser.js +12 -12
- package/dist/substrates/e2b/desktop-cdp.d.ts +15 -15
- package/dist/substrates/e2b/desktop-cdp.js +11 -11
- package/dist/substrates/e2b/desktop-executor.d.ts +1 -1
- package/dist/substrates/e2b/desktop-executor.js +1 -1
- package/dist/substrates/e2b/desktop-geometry.d.ts +6 -6
- package/dist/substrates/e2b/desktop-geometry.js +9 -9
- package/dist/substrates/e2b/desktop-media.d.ts +1 -1
- package/dist/substrates/e2b/desktop-media.js +3 -3
- package/dist/substrates/e2b/desktop-screenshot-cleanup.d.ts +3 -3
- package/dist/substrates/e2b/desktop-screenshot-cleanup.js +3 -3
- package/dist/substrates/e2b/sandbox.d.ts +1 -1
- package/dist/substrates/e2b/sandbox.js +2 -2
- package/dist/substrates/e2b/sdk.d.ts +11 -11
- package/dist/substrates/e2b/sdk.js +8 -8
- package/dist/substrates/local/runtime-host.d.ts +2 -0
- package/dist/substrates/local/runtime-host.js +6 -0
- package/dist/tui/actions.d.ts +8 -6
- package/dist/tui/actions.js +31 -22
- package/dist/tui/contract.d.ts +16 -16
- package/dist/tui/contract.js +10 -10
- package/dist/tui/launch.d.ts +4 -4
- package/dist/tui/launch.js +18 -19
- package/dist/tui/project.js +5 -5
- package/dist/tui-app.js +83 -83
- package/dist/verify/actor.d.ts +14 -14
- package/dist/verify/actor.js +45 -45
- package/dist/verify/artifacts.d.ts +3 -3
- package/dist/verify/artifacts.js +6 -6
- package/dist/verify/context-growth.d.ts +9 -0
- package/dist/verify/context-growth.js +62 -0
- package/dist/verify/costs.d.ts +7 -7
- package/dist/verify/costs.js +9 -9
- package/dist/verify/liveness.d.ts +1 -1
- package/dist/verify/liveness.js +4 -1
- package/dist/verify/rerun.d.ts +1 -1
- package/dist/verify/rerun.js +1 -1
- package/dist/verify/shared-world-concurrent.d.ts +2 -2
- package/dist/verify/shared-world-concurrent.js +79 -76
- package/dist/verify/shared-world.d.ts +2 -2
- package/dist/verify/shared-world.js +18 -18
- package/dist/verify/subject.d.ts +4 -4
- package/dist/verify/subject.js +18 -18
- package/dist/verify/verify.js +98 -49
- package/docs/README.md +26 -33
- package/docs/architecture/actor-contract.md +105 -98
- package/docs/architecture/desktop-sessions.md +14 -14
- package/docs/architecture/external-public-shared-world.md +66 -59
- package/docs/architecture/github-feedback-loop.md +1 -4
- package/docs/architecture/guest-desktop.md +2 -2
- package/docs/architecture/observer.md +37 -37
- package/docs/architecture/restricted-codex-analysis.md +70 -30
- package/docs/architecture/serve.md +34 -37
- package/docs/architecture/state-driven-executor.md +55 -59
- package/docs/architecture/task-protocol-support.md +7 -9
- package/docs/architecture/{terminal-product-lane.md → terminal-product-route.md} +83 -115
- package/docs/contracts/README.md +24 -0
- package/docs/contracts/adapter-admission.md +3 -3
- package/docs/contracts/adapter-fixtures.md +2 -5
- package/docs/contracts/core.md +1 -3
- package/docs/contracts/errors.md +62 -0
- package/docs/contracts/feedback.md +8 -9
- package/docs/contracts/policy.md +7 -12
- package/docs/contracts/run-bundle.md +54 -51
- package/docs/contracts/schemas.md +505 -390
- package/docs/contracts/study-analysis.md +26 -2
- package/docs/contracts/study-costs.md +11 -7
- package/docs/decisions/0001-run-bundle-is-the-source-of-truth.md +1 -1
- package/docs/decisions/0002-observer-is-one-self-contained-file.md +2 -2
- package/docs/decisions/0003-contained-paths-and-cleanup-authority.md +3 -3
- package/docs/decisions/0004-participant-desktops-stay-in-the-route.md +2 -1
- package/docs/principles/actor-fidelity.md +4 -4
- package/docs/principles/engineering.md +3 -3
- package/docs/principles/invariants-and-defaults.md +38 -38
- package/docs/principles/self-driving-harness.md +1 -5
- package/docs/principles/three-roles.md +1 -1
- package/docs/product/automatic-analysis.md +8 -7
- package/examples/participant/README.md +5 -5
- package/examples/participant/run.mjs +11 -10
- package/examples/scorer/README.md +3 -3
- package/examples/scorer/run.mjs +11 -12
- package/package.json +16 -17
- package/skills/humanish/SKILL.md +63 -60
- package/skills/humanish/agents/openai.yaml +1 -1
- package/AGENTS.md +0 -99
- package/CONTRIBUTING.md +0 -148
- package/dist/actors/codex/qualified-versions.d.ts +0 -45
- package/dist/actors/codex/qualified-versions.js +0 -87
- package/dist/cli/commands/lab.d.ts +0 -3
- package/dist/cli/commands/lab.js +0 -193
- package/dist/deprecated.d.ts +0 -90
- package/dist/deprecated.js +0 -106
- package/dist/lab/bag-overrides.d.ts +0 -18
- package/dist/lab/bag-overrides.js +0 -121
- package/dist/observer/static.d.ts +0 -39
- package/dist/observer/static.js +0 -369
- package/dist/routes/computer-use/legacy-lane-spec.d.ts +0 -62
- package/dist/routes/computer-use/legacy-lane-spec.js +0 -39
- package/docs/architecture/comms-inbox.md +0 -122
- package/docs/architecture/desktop-recording.md +0 -80
- package/docs/architecture/local-browser-runtime.md +0 -178
- package/docs/architecture/observer-review.md +0 -144
- package/docs/architecture/participant-media.md +0 -90
- package/docs/architecture/project-layout.md +0 -62
- package/docs/architecture/real-email-receiving.md +0 -136
- package/docs/assets/humanish-drawdb-hero.png +0 -0
- package/docs/assets/humanish-observer-hero.png +0 -0
- package/docs/goals/current.md +0 -207
- package/docs/product/lobby-trivia-3player-external-public.md +0 -77
- package/docs/product/open-source-install-experience.md +0 -240
- package/docs/ramp/README.md +0 -294
- package/docs/release/open-source-readiness.md +0 -222
- package/docs/release/public-readiness-standard.md +0 -210
- package/docs/roadmap/world-class-open-source-v0.md +0 -311
- /package/dist/routes/computer-use/{fanout-lanes.d.ts → fanout-records.d.ts} +0 -0
- /package/dist/routes/shared-world/{seat-records.d.ts → bundle-records.d.ts} +0 -0
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
# Optional participant media
|
|
2
|
-
|
|
3
|
-
Media belongs to the desktop. The participant still works through screenshots
|
|
4
|
-
and the shared computer-use loop, using one continuing Codex conversation for
|
|
5
|
-
clicks, listening and spoken replies.
|
|
6
|
-
|
|
7
|
-
```yaml
|
|
8
|
-
actors:
|
|
9
|
-
- type: local-agent
|
|
10
|
-
localAgent: codex
|
|
11
|
-
execution:
|
|
12
|
-
target: local
|
|
13
|
-
desktop:
|
|
14
|
-
media:
|
|
15
|
-
camera: { source: synthetic }
|
|
16
|
-
microphone: { source: speech }
|
|
17
|
-
policies:
|
|
18
|
-
mediaPermission: prompt
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
Omit `media` and `recording` for ordinary browser studies. They keep the smaller
|
|
22
|
-
browser image and start no audio server, camera producer or speech worker. Camera and speech
|
|
23
|
-
can also be requested separately. Local media setup uses a separately pinned
|
|
24
|
-
image, prepared by the first live study or `humanish runtime setup --media`.
|
|
25
|
-
|
|
26
|
-
The local camera is an animated test pattern behind a native V4L2 device. Speech
|
|
27
|
-
uses a synthetic microphone and a separate speaker sink. Chromium uses its
|
|
28
|
-
ordinary devices and permission dialog. `mediaPermission: granted` bypasses the
|
|
29
|
-
dialog explicitly; it does not replace the devices.
|
|
30
|
-
|
|
31
|
-
## Speaking and listening
|
|
32
|
-
|
|
33
|
-
With speech enabled, `humanish_ui` accepts `{kind: "speak", text: "..."}` in
|
|
34
|
-
addition to browser actions. It plays into the microphone; the participant must
|
|
35
|
-
join and unmute through the app. Tool narration is never automatically spoken.
|
|
36
|
-
Keep each utterance within 400 characters. Playback acknowledgement establishes
|
|
37
|
-
local microphone input, not delivery to another caller.
|
|
38
|
-
|
|
39
|
-
The desktop captures actual speaker audio. Finalized English transcriptions
|
|
40
|
-
arrive as `heardSpeech` observations with an utterance ID, `speaker_audio` source
|
|
41
|
-
and duration. A participant can use the existing `wait` action while listening.
|
|
42
|
-
Hearing something counts as progress even when the screen stays unchanged.
|
|
43
|
-
|
|
44
|
-
Transcription and synthetic speech run inside the Linux desktop, without a
|
|
45
|
-
speech API key or a host Python installation. Codex inference still runs remotely
|
|
46
|
-
using the selected account. The first voice uses espeak-ng and sounds robotic;
|
|
47
|
-
whisper.cpp uses the pinned English `base.en` model for recognition. This is bounded turn-taking, with recognition
|
|
48
|
-
latency and possible transcription errors, not a streaming voice conversation
|
|
49
|
-
with interruption handling.
|
|
50
|
-
|
|
51
|
-
Spoken text and heard observations pass through the existing evidence redaction
|
|
52
|
-
before being retained in the trace. Analysis reads that evidence alongside screenshots and actions; it does not
|
|
53
|
-
inspect raw audio or video. Raw audio is not saved by default. [Optional desktop recording](desktop-recording.md)
|
|
54
|
-
can retain actual screen and audio playback alongside this evidence.
|
|
55
|
-
|
|
56
|
-
## Hosted desktops
|
|
57
|
-
|
|
58
|
-
The same worker and participant loop support hosted speech. humanish selects a
|
|
59
|
-
versioned public E2B media template when speech is requested; ordinary browser
|
|
60
|
-
studies keep the stock desktop. The usual E2B credentials and Codex login are
|
|
61
|
-
sufficient. `execution.desktop.template` remains an explicit override for your
|
|
62
|
-
own compatible image; see the [build recipe](https://github.com/danielgwilson/humanish/blob/main/runtime/browser-media/E2B.md).
|
|
63
|
-
The host starts the worker through the SDK's streaming command interface, and
|
|
64
|
-
model credentials stay on the host. Missing dependencies fail desktop preparation
|
|
65
|
-
before a participant starts.
|
|
66
|
-
|
|
67
|
-
Existing hosted synthetic cameras use Chromium's fake-device flags. Those flags
|
|
68
|
-
also replace its microphone, so hosted camera and speech cannot currently be
|
|
69
|
-
combined. Use a local native-media desktop for both, or a hosted audio-only
|
|
70
|
-
study. Microphone files and speech through other participant providers are not
|
|
71
|
-
supported. A template alone cannot add camera support to a kernel without V4L2.
|
|
72
|
-
|
|
73
|
-
## Runtime maintenance
|
|
74
|
-
|
|
75
|
-
`runtime/local-firecracker/build.py --media` extends the maintained browser image
|
|
76
|
-
with native devices and the speech worker. The published media image must carry
|
|
77
|
-
`to.humanish.runtime.media=1`; a cached browser image cannot satisfy a media
|
|
78
|
-
request. Source builds can select an already-built media image with
|
|
79
|
-
`HUMANISH_LOCAL_MEDIA_RUNTIME_IMAGE`.
|
|
80
|
-
|
|
81
|
-
The media worker owns its subprocesses and buffers. Failed speech recognition,
|
|
82
|
-
worker exit and queue overflow stop the media session instead of appearing as
|
|
83
|
-
successful silence. Closing the desktop stops media and reclaims its isolated
|
|
84
|
-
state. No conferencing vendor or room-specific behavior is implemented in core.
|
|
85
|
-
|
|
86
|
-
Retain the matching media sources and package notices when publishing runtime
|
|
87
|
-
assets. Pass `--media-browser` and `--media-inputs` to the existing
|
|
88
|
-
`runtime/local-firecracker/sources.py` collector alongside its ordinary inputs.
|
|
89
|
-
Hardware capacity and conferencing topology require their own measured proof;
|
|
90
|
-
requesting media does not qualify twenty concurrent participants or TURN.
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# Project Layout
|
|
2
|
-
|
|
3
|
-
`humanish init` gives a project two roots:
|
|
4
|
-
|
|
5
|
-
```text
|
|
6
|
-
humanish/ # committed lab source
|
|
7
|
-
.humanish/ # ignored runtime state, evidence and local overrides
|
|
8
|
-
```
|
|
9
|
-
|
|
10
|
-
## Committed lab source: `humanish/`
|
|
11
|
-
|
|
12
|
-
`init` writes:
|
|
13
|
-
|
|
14
|
-
```text
|
|
15
|
-
humanish/
|
|
16
|
-
README.md
|
|
17
|
-
labs/
|
|
18
|
-
first-run.yaml # keyless preview
|
|
19
|
-
try-live.yaml # first live lab
|
|
20
|
-
cua-browser.yaml # computer-use participants on a hosted desktop
|
|
21
|
-
local-browser.yaml # computer-use participants on a local desktop
|
|
22
|
-
lobby-trivia-3player.yaml
|
|
23
|
-
personas/
|
|
24
|
-
synthetic-new-user.yaml
|
|
25
|
-
skeptical-power-user.yaml
|
|
26
|
-
scenarios/
|
|
27
|
-
first-run-smoke.yaml
|
|
28
|
-
onboarding-regression.yaml
|
|
29
|
-
coverage-map.md
|
|
30
|
-
coverage-matrix.md
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
Labs select their subject, actors, personas, scenarios, tasks, budgets and
|
|
34
|
-
policies. Personas and scenarios are referenced by id. An adopter scorer is an
|
|
35
|
-
`.mjs` module that a lab names under `review.scorer.ref`.
|
|
36
|
-
|
|
37
|
-
Keep this directory reviewable and reproducible from a clean clone. Everything in
|
|
38
|
-
it is public-safe: synthetic personas and fixtures, env var names without values.
|
|
39
|
-
|
|
40
|
-
## Ignored runtime state: `.humanish/`
|
|
41
|
-
|
|
42
|
-
```text
|
|
43
|
-
.humanish/
|
|
44
|
-
runs/ # run bundles, screenshots, transcripts, Observer output
|
|
45
|
-
labs/ # private labs; a committed lab with the same id wins
|
|
46
|
-
local/labs/ # machine-local labs
|
|
47
|
-
local/personas/ # machine-local personas; a committed persona with the same id wins
|
|
48
|
-
cache/ tmp/ logs/
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
Never commit run bundles, raw screenshots, transcripts, local overrides or
|
|
52
|
-
secrets. `init` adds `.humanish/` to `.gitignore`.
|
|
53
|
-
|
|
54
|
-
## Formats
|
|
55
|
-
|
|
56
|
-
- `.yaml` for human-authored source: labs, personas, scenarios.
|
|
57
|
-
Prefer `.yaml` over `.yml`.
|
|
58
|
-
- `.mjs` for executable adopter scorers.
|
|
59
|
-
- `.json` for generated artifacts and synthetic fixtures; `.ndjson` for
|
|
60
|
-
appendable event and transcript streams.
|
|
61
|
-
- `.yml` only where an outside tool expects it, such as
|
|
62
|
-
`.github/workflows/*.yml`.
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
# Real email receiving
|
|
2
|
-
|
|
3
|
-
A supported browser study can give each participant a fresh AgentMail inbox. The
|
|
4
|
-
application sends real email to that address; humanish polls it on the host and
|
|
5
|
-
publishes a private inbox surface on that participant's desktop. The participant
|
|
6
|
-
can read the original email, switch to a plain view and follow an approved link.
|
|
7
|
-
|
|
8
|
-
Use local capture when you can redirect the app's send configuration and want to
|
|
9
|
-
avoid hosted mail. Use real receiving when the app must send normally or delivery
|
|
10
|
-
itself is part of the flow. These are separate modes; do not combine their settings.
|
|
11
|
-
SMS and participant outbound mail are not supported.
|
|
12
|
-
|
|
13
|
-
## Setup
|
|
14
|
-
|
|
15
|
-
Open `humanish tui`, press **c** for Connections, and choose **Add API key** to add an
|
|
16
|
-
AgentMail key. Hidden entry saves it in the existing user key store and checks
|
|
17
|
-
authentication without creating an inbox; Ctrl+C cancels entry and returns to the TUI.
|
|
18
|
-
The project profile, `.humanish/local/comms.yaml`, stores only the provider and
|
|
19
|
-
environment-variable name.
|
|
20
|
-
Environment and explicit env-file values retain precedence over saved keys.
|
|
21
|
-
A rejected or unavailable authentication check does not delete the saved key.
|
|
22
|
-
Authentication does not prove inbox creation/deletion permissions, quota or delivery.
|
|
23
|
-
This release requires an organization-scoped key.
|
|
24
|
-
|
|
25
|
-
Connections can preview and save a receiving-enabled local lab copy. The preview
|
|
26
|
-
discloses hosted email, model processing, local review and separate provider charges.
|
|
27
|
-
The original manifest is preserved. Select the new exact path when launching.
|
|
28
|
-
|
|
29
|
-
The same operations are available to agents:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
humanish keys set agentmail
|
|
33
|
-
humanish comms connections add agentmail --json
|
|
34
|
-
humanish comms check --online --json
|
|
35
|
-
humanish comms configure --lab humanish/labs/signup.yaml --json
|
|
36
|
-
# Review the returned path, disclosures and planToken, then:
|
|
37
|
-
humanish comms configure --lab humanish/labs/signup.yaml --apply --plan-token <digest> --json
|
|
38
|
-
humanish lab run .humanish/local/labs/signup-receiving.yaml --json --no-open
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Direct manifest authoring selects a saved connection:
|
|
42
|
-
|
|
43
|
-
```yaml
|
|
44
|
-
comms:
|
|
45
|
-
email:
|
|
46
|
-
connection: agentmail
|
|
47
|
-
# Optional: additional trusted email-link destinations, exact origins only.
|
|
48
|
-
allowedOrigins:
|
|
49
|
-
- https://accounts.example.test
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
The target origin is automatically allowed. On provisioned subjects, the declared
|
|
53
|
-
serve origin and optional `linkOrigin` use the existing target-origin rewrite.
|
|
54
|
-
Review additional origins as destinations the participant is allowed to open from
|
|
55
|
-
mail. This policy governs the inbox surface, not all later browser navigation.
|
|
56
|
-
|
|
57
|
-
Supported execution is hosted computer use with app-url, clone or local-tree
|
|
58
|
-
subjects, including shared-world studies. Local-agent, scripted, terminal, desktop-cli, in-process and local-app routes reject
|
|
59
|
-
real receiving before allocation. Connection mode cannot declare capture options,
|
|
60
|
-
recipients or borrowed mailbox IDs. A fresh address is not an existing account;
|
|
61
|
-
assignments must allow signup or arranging mail to the new identity.
|
|
62
|
-
|
|
63
|
-
## What a run does
|
|
64
|
-
|
|
65
|
-
1. Resolve the selected connection and host credential. Reject forwarding that
|
|
66
|
-
management credential through target environment names, aliases or literals.
|
|
67
|
-
2. Authenticate and durably record each acquisition intent in private host state.
|
|
68
|
-
Acquire all participant addresses before starting desktops.
|
|
69
|
-
3. Give each participant its address and loopback inbox URL. No management key or
|
|
70
|
-
other participant's mailbox is installed in its desktop. Each surface has only
|
|
71
|
-
its own list/message/plain/JSON routes, with no send endpoint or aggregate inbox.
|
|
72
|
-
4. Poll received mail, register scrub targets, sanitize/render and atomically
|
|
73
|
-
publish the complete inbox snapshot. Repeated reads can fill temporarily missing
|
|
74
|
-
bodies and inline images without changing local message identity.
|
|
75
|
-
5. Before desktop teardown, perform a bounded final read, save evidence, stop the
|
|
76
|
-
inbox surface and request deletion. Confirm provider absence; otherwise retain
|
|
77
|
-
unresolved cleanup for recovery. Provider deletion is not an erasure guarantee.
|
|
78
|
-
|
|
79
|
-
The original view preserves supported email structure and inline PNG/JPEG/GIF/WebP
|
|
80
|
-
images. Parsed HTML removes active content; response CSP blocks scripts, forms,
|
|
81
|
-
frames and remote assets. Remote images show an explicit unavailable placeholder.
|
|
82
|
-
Links use the same origin policy in original, plain and JSON views. Attachment
|
|
83
|
-
bytes are fetched only through the fixed provider API and its observed CDN host;
|
|
84
|
-
provider authorization never goes to the CDN. General attachments, arbitrary remote
|
|
85
|
-
images and raw-MIME fallback are unsupported. Raster checks are bounded signature
|
|
86
|
-
checks, not a guarantee that every malformed image will decode in a browser.
|
|
87
|
-
|
|
88
|
-
Collection is bounded by request time, request/page count, bytes, images and a
|
|
89
|
-
100-message retained inbox limit. Limits, failed reads, blocked content and failed
|
|
90
|
-
publication are recorded as coverage limitations. Inbox pages require reload to
|
|
91
|
-
show later messages. No webhook/public mail ingress is required on the host.
|
|
92
|
-
|
|
93
|
-
## Evidence and publication
|
|
94
|
-
|
|
95
|
-
`comms/receiving.json` uses `humanish.comms-receiving.v2`. It records local IDs,
|
|
96
|
-
counts, timestamps and lifecycle/coverage status, without raw mail, provider IDs,
|
|
97
|
-
addresses or stable content digests. The final run bundle embeds that projection.
|
|
98
|
-
Receipt, successful inbox publication, participant reading and target success are
|
|
99
|
-
separate claims; analysis receives this distinction and the harness limitations.
|
|
100
|
-
A missing message alone does not establish that the application failed to send.
|
|
101
|
-
Immediate automatic analysis scrubs known exact values from generated narration
|
|
102
|
-
using a bounded, invocation-local registry. It never saves that registry. Later
|
|
103
|
-
analysis cannot reconstruct it; screenshots may still expose mail content, and the
|
|
104
|
-
publication restriction applies to both immediate and later findings.
|
|
105
|
-
|
|
106
|
-
Mail is hosted by AgentMail. Its content can reach the hosted desktop, actor model,
|
|
107
|
-
screenshots, narration and analysis model. Such runs carry a durable
|
|
108
|
-
`real-communications` publication restriction: verification returns `local_only`,
|
|
109
|
-
public feedback/exposure and shareable exports remain gated, and screenshot
|
|
110
|
-
blurring does not clear the restriction. Local Observer review and explicitly local
|
|
111
|
-
HTML export remain available. Local-only publication is not local-only processing.
|
|
112
|
-
|
|
113
|
-
## Interrupted-run recovery
|
|
114
|
-
|
|
115
|
-
Process interruption can bypass normal final reads and teardown. Inspect recovery
|
|
116
|
-
state after stopping a run; do not assume Ctrl+C or killing a process deleted its
|
|
117
|
-
inboxes:
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
humanish comms recover --json
|
|
121
|
-
humanish comms recover --run <run-id> --apply --json
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
Connections also exposes pending cleanup. Recovery only uses private host journals
|
|
125
|
-
under `$XDG_STATE_HOME/humanish/comms` (default `~/.local/state/humanish/comms`),
|
|
126
|
-
with private directories/files and bound project, connection, account and scope.
|
|
127
|
-
A live or unknown owner blocks takeover. The adapter checks resource/client identity
|
|
128
|
-
before deletion; it cannot delete an inbox named only in a run artifact. Lost
|
|
129
|
-
creation responses can be reconciled through the recorded idempotent client ID.
|
|
130
|
-
Do not delete private journals while resources remain unresolved. Moving/replacing
|
|
131
|
-
the project or changing account/scope can intentionally prevent recovery.
|
|
132
|
-
|
|
133
|
-
If final evidence persistence fails, the provider inbox is retained as unresolved
|
|
134
|
-
rather than discarding the last retrievable copy. Explicit recovery is a deletion
|
|
135
|
-
operation, not message-history reconstruction. Sandbox reclamation remains a
|
|
136
|
-
separate operation.
|
|
Binary file
|
|
Binary file
|
package/docs/goals/current.md
DELETED
|
@@ -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.
|