humanish 0.0.1 → 0.15.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.
Files changed (205) hide show
  1. package/AGENTS.md +77 -0
  2. package/CONTRIBUTING.md +39 -0
  3. package/LICENSE +21 -0
  4. package/README.md +437 -8
  5. package/SECURITY.md +34 -0
  6. package/dist/actor-contract.d.ts +107 -0
  7. package/dist/actor-contract.js +286 -0
  8. package/dist/actor-contract.js.map +1 -0
  9. package/dist/actor-registry.d.ts +73 -0
  10. package/dist/actor-registry.js +93 -0
  11. package/dist/actor-registry.js.map +1 -0
  12. package/dist/adapter-extension.d.ts +54 -0
  13. package/dist/adapter-extension.js +214 -0
  14. package/dist/adapter-extension.js.map +1 -0
  15. package/dist/argv.d.ts +1 -0
  16. package/dist/argv.js +8 -0
  17. package/dist/argv.js.map +1 -0
  18. package/dist/artifact-reference.d.ts +22 -0
  19. package/dist/artifact-reference.js +47 -0
  20. package/dist/artifact-reference.js.map +1 -0
  21. package/dist/browser-evidence-hygiene.d.ts +7 -0
  22. package/dist/browser-evidence-hygiene.js +40 -0
  23. package/dist/browser-evidence-hygiene.js.map +1 -0
  24. package/dist/claude-agent-sdk.d.ts +94 -0
  25. package/dist/claude-agent-sdk.js +363 -0
  26. package/dist/claude-agent-sdk.js.map +1 -0
  27. package/dist/cli.d.ts +2 -0
  28. package/dist/cli.js +5 -0
  29. package/dist/cli.js.map +1 -0
  30. package/dist/codex-app-server-ui.d.ts +39 -0
  31. package/dist/codex-app-server-ui.js +357 -0
  32. package/dist/codex-app-server-ui.js.map +1 -0
  33. package/dist/codex-app-server.d.ts +144 -0
  34. package/dist/codex-app-server.js +754 -0
  35. package/dist/codex-app-server.js.map +1 -0
  36. package/dist/command-failure.d.ts +29 -0
  37. package/dist/command-failure.js +54 -0
  38. package/dist/command-failure.js.map +1 -0
  39. package/dist/computer-use-actor.d.ts +52 -0
  40. package/dist/computer-use-actor.js +48 -0
  41. package/dist/computer-use-actor.js.map +1 -0
  42. package/dist/computer-use.d.ts +232 -0
  43. package/dist/computer-use.js +615 -0
  44. package/dist/computer-use.js.map +1 -0
  45. package/dist/concurrency.d.ts +1 -0
  46. package/dist/concurrency.js +27 -0
  47. package/dist/concurrency.js.map +1 -0
  48. package/dist/concurrent-shared-world-lab.d.ts +115 -0
  49. package/dist/concurrent-shared-world-lab.js +1094 -0
  50. package/dist/concurrent-shared-world-lab.js.map +1 -0
  51. package/dist/core/git-state.d.ts +33 -0
  52. package/dist/core/git-state.js +277 -0
  53. package/dist/core/git-state.js.map +1 -0
  54. package/dist/core/git-workspace.d.ts +31 -0
  55. package/dist/core/git-workspace.js +447 -0
  56. package/dist/core/git-workspace.js.map +1 -0
  57. package/dist/core/index.d.ts +4 -0
  58. package/dist/core/index.js +3 -0
  59. package/dist/core/index.js.map +1 -0
  60. package/dist/core/run-primitives.d.ts +66 -0
  61. package/dist/core/run-primitives.js +120 -0
  62. package/dist/core/run-primitives.js.map +1 -0
  63. package/dist/cua-actor-lab.d.ts +621 -0
  64. package/dist/cua-actor-lab.js +2845 -0
  65. package/dist/cua-actor-lab.js.map +1 -0
  66. package/dist/device-presets.d.ts +67 -0
  67. package/dist/device-presets.js +50 -0
  68. package/dist/device-presets.js.map +1 -0
  69. package/dist/e2b-desktop-executor.d.ts +101 -0
  70. package/dist/e2b-desktop-executor.js +309 -0
  71. package/dist/e2b-desktop-executor.js.map +1 -0
  72. package/dist/e2b-desktop-launch.d.ts +144 -0
  73. package/dist/e2b-desktop-launch.js +59 -0
  74. package/dist/e2b-desktop-launch.js.map +1 -0
  75. package/dist/e2b-detached.d.ts +53 -0
  76. package/dist/e2b-detached.js +130 -0
  77. package/dist/e2b-detached.js.map +1 -0
  78. package/dist/e2b-terminal-lab.d.ts +345 -0
  79. package/dist/e2b-terminal-lab.js +1532 -0
  80. package/dist/e2b-terminal-lab.js.map +1 -0
  81. package/dist/env-file.d.ts +14 -0
  82. package/dist/env-file.js +108 -0
  83. package/dist/env-file.js.map +1 -0
  84. package/dist/feedback.d.ts +51 -0
  85. package/dist/feedback.js +351 -0
  86. package/dist/feedback.js.map +1 -0
  87. package/dist/image-evidence.d.ts +2 -0
  88. package/dist/image-evidence.js +33 -0
  89. package/dist/image-evidence.js.map +1 -0
  90. package/dist/index.d.ts +63 -0
  91. package/dist/index.js +33 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/init-templates.d.ts +12 -0
  94. package/dist/init-templates.js +369 -0
  95. package/dist/init-templates.js.map +1 -0
  96. package/dist/init.d.ts +26 -0
  97. package/dist/init.js +429 -0
  98. package/dist/init.js.map +1 -0
  99. package/dist/lab-app-runner.d.ts +78 -0
  100. package/dist/lab-app-runner.js +403 -0
  101. package/dist/lab-app-runner.js.map +1 -0
  102. package/dist/lab-config.d.ts +583 -0
  103. package/dist/lab-config.js +1789 -0
  104. package/dist/lab-config.js.map +1 -0
  105. package/dist/lab-engine.d.ts +77 -0
  106. package/dist/lab-engine.js +216 -0
  107. package/dist/lab-engine.js.map +1 -0
  108. package/dist/lab-preflight.d.ts +67 -0
  109. package/dist/lab-preflight.js +385 -0
  110. package/dist/lab-preflight.js.map +1 -0
  111. package/dist/labs.d.ts +53 -0
  112. package/dist/labs.js +382 -0
  113. package/dist/labs.js.map +1 -0
  114. package/dist/observer-assets.d.ts +2 -0
  115. package/dist/observer-assets.js +2630 -0
  116. package/dist/observer-assets.js.map +1 -0
  117. package/dist/observer-data.d.ts +63 -0
  118. package/dist/observer-data.js +145 -0
  119. package/dist/observer-data.js.map +1 -0
  120. package/dist/observer-static.d.ts +39 -0
  121. package/dist/observer-static.js +306 -0
  122. package/dist/observer-static.js.map +1 -0
  123. package/dist/observer.d.ts +46 -0
  124. package/dist/observer.js +550 -0
  125. package/dist/observer.js.map +1 -0
  126. package/dist/openai-responses-cu.d.ts +113 -0
  127. package/dist/openai-responses-cu.js +545 -0
  128. package/dist/openai-responses-cu.js.map +1 -0
  129. package/dist/oss-lab.d.ts +52 -0
  130. package/dist/oss-lab.js +344 -0
  131. package/dist/oss-lab.js.map +1 -0
  132. package/dist/oss-meta-lab-scoring.d.ts +15 -0
  133. package/dist/oss-meta-lab-scoring.js +145 -0
  134. package/dist/oss-meta-lab-scoring.js.map +1 -0
  135. package/dist/oss-meta-lab.d.ts +277 -0
  136. package/dist/oss-meta-lab.js +4529 -0
  137. package/dist/oss-meta-lab.js.map +1 -0
  138. package/dist/oss-remote-telemetry.d.ts +77 -0
  139. package/dist/oss-remote-telemetry.js +403 -0
  140. package/dist/oss-remote-telemetry.js.map +1 -0
  141. package/dist/persona.d.ts +35 -0
  142. package/dist/persona.js +133 -0
  143. package/dist/persona.js.map +1 -0
  144. package/dist/pi-agent-core.d.ts +77 -0
  145. package/dist/pi-agent-core.js +203 -0
  146. package/dist/pi-agent-core.js.map +1 -0
  147. package/dist/program.d.ts +54 -0
  148. package/dist/program.js +2349 -0
  149. package/dist/program.js.map +1 -0
  150. package/dist/redaction.d.ts +90 -0
  151. package/dist/redaction.js +292 -0
  152. package/dist/redaction.js.map +1 -0
  153. package/dist/run-paths.d.ts +56 -0
  154. package/dist/run-paths.js +340 -0
  155. package/dist/run-paths.js.map +1 -0
  156. package/dist/run.d.ts +794 -0
  157. package/dist/run.js +4844 -0
  158. package/dist/run.js.map +1 -0
  159. package/dist/scripted-browser-actor.d.ts +297 -0
  160. package/dist/scripted-browser-actor.js +1399 -0
  161. package/dist/scripted-browser-actor.js.map +1 -0
  162. package/dist/scripted-browser-lab.d.ts +107 -0
  163. package/dist/scripted-browser-lab.js +788 -0
  164. package/dist/scripted-browser-lab.js.map +1 -0
  165. package/dist/selected-output-paths.d.ts +49 -0
  166. package/dist/selected-output-paths.js +354 -0
  167. package/dist/selected-output-paths.js.map +1 -0
  168. package/dist/shared-world-lab.d.ts +208 -0
  169. package/dist/shared-world-lab.js +1049 -0
  170. package/dist/shared-world-lab.js.map +1 -0
  171. package/dist/source-archive.d.ts +82 -0
  172. package/dist/source-archive.js +408 -0
  173. package/dist/source-archive.js.map +1 -0
  174. package/dist/stop-conditions.d.ts +26 -0
  175. package/dist/stop-conditions.js +66 -0
  176. package/dist/stop-conditions.js.map +1 -0
  177. package/dist/terminal-agent-actor.d.ts +36 -0
  178. package/dist/terminal-agent-actor.js +23 -0
  179. package/dist/terminal-agent-actor.js.map +1 -0
  180. package/docs/architecture/actor-contract.md +431 -0
  181. package/docs/architecture/github-feedback-loop.md +189 -0
  182. package/docs/architecture/local-codex-tui-actor.md +213 -0
  183. package/docs/architecture/observer.md +118 -0
  184. package/docs/architecture/oss-lab-poc.md +250 -0
  185. package/docs/architecture/project-layout.md +166 -0
  186. package/docs/architecture/state-driven-executor.md +203 -0
  187. package/docs/architecture/terminal-product-lane.md +148 -0
  188. package/docs/contracts/adapter-fixtures.md +80 -0
  189. package/docs/contracts/core.md +71 -0
  190. package/docs/contracts/feedback.md +145 -0
  191. package/docs/contracts/policy.md +311 -0
  192. package/docs/contracts/run-bundle.md +358 -0
  193. package/docs/contracts/schemas.md +984 -0
  194. package/docs/goals/current.md +428 -0
  195. package/docs/principles/invariants-and-defaults.md +135 -0
  196. package/docs/principles/self-driving-harness.md +129 -0
  197. package/docs/product/open-source-install-experience.md +237 -0
  198. package/docs/ramp/README.md +207 -0
  199. package/docs/release/open-source-readiness.md +208 -0
  200. package/docs/release/public-readiness-standard.md +205 -0
  201. package/docs/roadmap/world-class-open-source-v0.md +311 -0
  202. package/package.json +102 -8
  203. package/skills/humanish/SKILL.md +244 -0
  204. package/skills/humanish/agents/openai.yaml +7 -0
  205. package/index.js +0 -1
@@ -0,0 +1,129 @@
1
+ # Self-Driving Harness Principles
2
+
3
+ Date: 2026-06-01
4
+
5
+ Status: initial repo doctrine for `humanish`.
6
+
7
+ ## Thesis
8
+
9
+ `humanish` should be a closed-loop product simulation system, not just a
10
+ CLI that launches agents.
11
+
12
+ The operating loop is:
13
+
14
+ ```text
15
+ persona scenario run
16
+ -> durable evidence bundle
17
+ -> review and verification
18
+ -> structured feedback
19
+ -> GitHub issue or project queue
20
+ -> scoped implementation
21
+ -> rerun and compare
22
+ ```
23
+
24
+ The hard part is not getting an agent to do something. The hard part is making
25
+ the result verifiable, repeatable, safe to file, and useful to the next
26
+ agent with no chat context.
27
+
28
+ ## Public Boundary
29
+
30
+ This repo must be designed as if it will become public.
31
+
32
+ No PII, PHI, secrets, keys, tokens, raw private transcripts, real patient data,
33
+ real customer data, or private product artifacts belong here. Examples,
34
+ fixtures, screenshots, personas, run bundles, issue bodies, and docs must be
35
+ synthetic or redacted.
36
+
37
+ ## Principles
38
+
39
+ ### 1. Model, Harness, Environment
40
+
41
+ Reliable agentic work is the composition of model, harness, and environment.
42
+ `humanish` owns the harness layer: replay, invariants, observability,
43
+ policy, artifacts, review, and feedback routing.
44
+
45
+ ### 2. Verifiability Defines Throughput
46
+
47
+ Autonomy stalls when outcomes cannot be classified as red, yellow, or green.
48
+ Every claim a run makes should point to retrievable evidence: bundle files,
49
+ screenshots, terminal transcripts, state proofs, event streams, review packets,
50
+ or issue links.
51
+
52
+ ### 3. Run Bundles Are Source Of Truth
53
+
54
+ The observer is a projection. The GitHub Project is a cockpit. The issue queue
55
+ is a work surface. The run bundle is the canonical evidence record.
56
+
57
+ ### 4. Coverage Is The Product
58
+
59
+ Serious adapters need discovery maps and coverage matrices. Hidden
60
+ undercoverage is worse than visible gaps. A partial matrix with named gaps is
61
+ more useful than three green happy paths pretending to prove the whole product.
62
+
63
+ ### 5. Product Trial Beats Tracker Truth
64
+
65
+ Tracker fields, issue comments, PR summaries, and author receipts are not
66
+ acceptance. A product claim needs a product trial or a precise explanation of
67
+ why the run is only contract proof.
68
+
69
+ ### 6. Staged Autonomy Beats Binary Replacement
70
+
71
+ Authority should progress through stages:
72
+
73
+ ```text
74
+ observe -> draft feedback -> draft issue -> draft spec -> draft PR -> steward PR -> release assist
75
+ ```
76
+
77
+ Each stage requires stricter proof, narrower write scope, and clearer stop
78
+ conditions.
79
+
80
+ ### 7. Idempotent Closed Loops Beat Heroic Retries
81
+
82
+ Every run and feedback issue-draft path needs idempotency keys, duplicate
83
+ prevention, explicit terminal states, cleanup proof, and safe re-run behavior.
84
+ Retries without loop closure create queue debt.
85
+
86
+ ### 8. Feedback Is A First-Class Artifact
87
+
88
+ Friction found by a persona or agent should not be buried in prose. It should
89
+ be structured, evidence-linked, dedupable, public-safe, and reviewable. For an
90
+ open-source CLI, the default output should be an issue draft and filing
91
+ instructions, not live GitHub mutation.
92
+
93
+ ### 9. Product Nouns Belong In Adapters
94
+
95
+ Core owns schema, lifecycle, actors, substrates, evidence streams, history,
96
+ review, verification, redaction, and feedback mechanics. Adapters own product
97
+ routes, personas, app topology, milestones, vocabulary, environment allowlists,
98
+ and product-specific proof.
99
+
100
+ ### 10. Credential Boundaries Are Architecture
101
+
102
+ Executor auth, product auth, provider auth, spend policy, network policy, and
103
+ repo/GitHub authority are separate boundaries. A run must name what was
104
+ available and prove that sensitive values were not persisted.
105
+
106
+ ### 11. Dry-Run Is Contract Proof
107
+
108
+ Dry-run proves scenario selection, bundle shape, review generation, and CLI
109
+ semantics. It does not prove product behavior. Review output must preserve that
110
+ distinction.
111
+
112
+ ### 12. Green Requires Reviewer Acceptance
113
+
114
+ The builder of a harness is not the final judge of the harness. `review` can
115
+ summarize, `verify` can validate contracts, but acceptance requires a reviewer
116
+ or reviewer-like gate that checks coverage, evidence, and product relevance.
117
+
118
+ ## Anti-Patterns
119
+
120
+ - Treating the best model as a substitute for harness quality.
121
+ - Using screenshots as vibes without state or transcript evidence.
122
+ - Letting product-specific nouns leak into generic core.
123
+ - Generating GitHub issue drafts from vague summaries without bundle links.
124
+ - Closing issues because a PR exists, not because product proof exists.
125
+ - Giving autonomous agents broad write authority before observe/draft stages
126
+ are reliable.
127
+ - Letting project fields become canonical state.
128
+ - Retrying failed issue submission paths until duplicates appear.
129
+ - Storing private data in examples because it was convenient during extraction.
@@ -0,0 +1,237 @@
1
+ # Open-Source Install Experience
2
+
3
+ Date: 2026-06-01
4
+
5
+ Status: product target for the first world-class `humanish` implementation.
6
+
7
+ Safety amendment (2026-07-14): the `0.15.1` package binds managed run and
8
+ output storage to validated physical paths, treats provider IDs persisted in a
9
+ run bundle as evidence rather than cleanup authority, and disables live OSS
10
+ meta-lab execution until repository-derived instructions have an isolated
11
+ credential boundary. The historical product target below remains useful for
12
+ intent and sequencing, but current behavior is defined by the README and
13
+ [`docs/goals/current.md`](../goals/current.md).
14
+
15
+ ## Product Promise
16
+
17
+ Drop Humanish into an app and let a coding agent set up realistic persona
18
+ simulations, run them safely, watch them in a polished observer, and turn
19
+ friction into public-safe issue drafts.
20
+
21
+ The first experience should feel like a mature one-command simulation harness,
22
+ but with an open-source-safe package shape:
23
+
24
+ ```bash
25
+ npm i -D humanish
26
+ npx humanish init
27
+ npm run humanish:doctor
28
+ npm run humanish:watch
29
+ npm run humanish:verify
30
+ npx humanish feedback issue --run latest --repo example/app --format markdown
31
+ ```
32
+
33
+ ## Two-Part Distribution
34
+
35
+ ### NPM Package
36
+
37
+ The npm package owns executable behavior:
38
+
39
+ - binary: `humanish`;
40
+ - CLI framework: `commander`;
41
+ - commands: `init`, `doctor`, `run`, `watch`, `review`, `verify`,
42
+ `lab`, `feedback`;
43
+ - schemas and validators;
44
+ - synthetic starter templates;
45
+ - observer static assets;
46
+ - artifact and run-bundle utilities;
47
+ - redaction and public issue-draft generation.
48
+
49
+ ### Agent Skill
50
+
51
+ The agent skill owns installation guidance and repo adaptation:
52
+
53
+ ```bash
54
+ npx skills add danielgwilson/humanish --skill humanish
55
+ ```
56
+
57
+ Installable repo skill: [`skills/humanish/SKILL.md`](../../skills/humanish/SKILL.md).
58
+
59
+ The skill should teach the user's coding agent how to:
60
+
61
+ - install `humanish`;
62
+ - run `humanish init`;
63
+ - inspect the target app's routes and dev command;
64
+ - create synthetic personas and scenarios;
65
+ - create public-safe `humanish/labs/*.yaml` lab manifests;
66
+ - keep private/local labs under ignored `.humanish/labs/*.yaml` or
67
+ `.humanish/local/labs/*.yaml`;
68
+ - configure local app targets;
69
+ - document E2B and OpenAI env var names without storing values;
70
+ - use `--env-file <path>` for explicit local env hydration without persisting
71
+ values into artifacts;
72
+ - run `doctor`, `watch`, `verify`, and `feedback issue`;
73
+ - avoid PII, PHI, secrets, real customer data, and private artifacts.
74
+
75
+ The skill should not hide critical behavior in chat memory. It should point to
76
+ repo-owned `humanish/` files and package-owned docs.
77
+
78
+ ## Project File Formats
79
+
80
+ New projects should get a boring, legible format stack:
81
+
82
+ - `.yaml` for human-authored Humanish source such as personas, scenarios,
83
+ policies, labs, and review vocabulary;
84
+ - `.ts` for executable integration such as `humanish/config.ts` and adapters;
85
+ - `.json` and `.ndjson` for generated run artifacts, Observer data, review
86
+ output, event streams, and synthetic fixtures.
87
+
88
+ Use `.yml` only where an outside ecosystem convention already expects it, for
89
+ example GitHub Actions workflows. Do not scaffold `.yml` for Humanish source and
90
+ do not use TOML unless a future scalar global-config case clearly needs it.
91
+
92
+ ## First-Run Principles
93
+
94
+ - No keys required for the first wow moment.
95
+ - No live GitHub mutation.
96
+ - No hosted queues or private infrastructure.
97
+ - No real customer/user/patient data.
98
+ - No generated personas from tickets, logs, transcripts, screenshots, or
99
+ production analytics.
100
+ - Safe dry-run should produce a valid synthetic run bundle and observer view.
101
+ - The user should see what changed in git.
102
+
103
+ ## Lab Manifest Shape
104
+
105
+ Labs are the public-safe way to name a reusable simulation run. A starter app
106
+ gets a committed synthetic lab:
107
+
108
+ ```yaml
109
+ schema: humanish.lab.v2
110
+ id: first-run
111
+ title: First-run synthetic Observer
112
+ description: Public-safe starter lab that generates a synthetic run bundle and Observer without provider spend.
113
+ subject:
114
+ source: this-repo
115
+ actors:
116
+ - type: synthetic-persona
117
+ count: 4
118
+ scenario:
119
+ mode: dry-run
120
+ defaults:
121
+ open: true
122
+ ```
123
+
124
+ Resolution order:
125
+
126
+ 1. `humanish/labs/<id>.yaml` for committed, reproducible labs.
127
+ 2. `.humanish/labs/<id>.yaml` for ignored local labs.
128
+ 3. `.humanish/local/labs/<id>.yaml` for ignored machine-specific overlays.
129
+ 4. explicit `.yaml` path, for example
130
+ `.humanish/labs/local-dogfood.yaml`.
131
+
132
+ Private repo targets, local env references, and maintainer dogfood variants
133
+ belong in ignored lab manifests and should be invoked with explicit
134
+ `--env-file`; do not make them package defaults.
135
+
136
+ ## `humanish init`
137
+
138
+ `humanish init` should:
139
+
140
+ 1. Detect package manager and app framework when possible.
141
+ 2. Create committed starter files under `humanish/`.
142
+ 3. Create ignored runtime state under `.humanish/`.
143
+ 4. Add `.humanish/` and secret/local overlays to `.gitignore`.
144
+ 5. Patch `package.json` scripts only after showing the intended diff or when
145
+ `--yes` is passed.
146
+ 6. Create only synthetic public-safe personas and scenarios.
147
+ 7. Write credential references as env var names only.
148
+ 8. Run a dry-run verification if dependencies are available.
149
+
150
+ Suggested scripts:
151
+
152
+ ```json
153
+ {
154
+ "scripts": {
155
+ "humanish": "humanish",
156
+ "humanish:doctor": "humanish doctor",
157
+ "humanish:run": "humanish run --dry-run",
158
+ "humanish:watch": "humanish watch",
159
+ "humanish:lab:list": "humanish lab list",
160
+ "humanish:watch:ci": "humanish watch --json --no-open",
161
+ "humanish:verify": "humanish verify"
162
+ }
163
+ }
164
+ ```
165
+
166
+ ## Command Ladder
167
+
168
+ | Command | Purpose | First version should |
169
+ | --- | --- | --- |
170
+ | `humanish init` | Set up project-owned harness files | Scaffold committed `humanish/`, ignored `.humanish/`, package scripts |
171
+ | `humanish doctor` | Explain readiness | Check config, gitignore, app target, browser, env var names, redaction policy |
172
+ | `humanish run --dry-run` | Prove contract without app/browser/keys | Write synthetic run bundle |
173
+ | `humanish verify` | Validate bundle and public-safety gates | Fail closed on schema/evidence/redaction errors |
174
+ | `humanish review` | Build review packet from evidence | Summarize verdicts without inventing product proof |
175
+ | `humanish watch` | Run sims and watch the observer | Create a fresh four-lane bundle, render Observer, open it, and keep the shell attached |
176
+ | `humanish watch [lab]` | Run a named lab and watch it | Resolve committed or ignored `.yaml` lab manifests, then open/follow Observer |
177
+ | `humanish watch --json --no-open` | Agent/CI proof path | Create the same bundle and Observer artifacts without browser open or attached watch server |
178
+ | `humanish lab list` | Discover available labs | List committed labs and ignored local labs with origin labels |
179
+ | `humanish lab inspect <lab>` | Read a lab manifest | Print the parsed lab config, origin, path, and warnings without executing |
180
+ | `humanish lab preflight <lab>` | Check lab readiness before spend | Validate routing and optionally probe declared targets from a hosted desktop without launching actors |
181
+ | `humanish lab run <lab>` | Run a lab manifest | Human or JSON execution path for synthetic, OSS meta, and smoke labs |
182
+ | `humanish lab run oss` | Maintainer contract example | Render a dry-run Observer-of-Observers contract for selected repo labels; live execution fails closed pending credential isolation |
183
+ | `humanish lab run oss-smoke` | Maintainer smoke example | Shallow clone lightweight GitHub repos, run setup/proof/verify, report, and remove clones |
184
+ | `humanish feedback issue` | Produce public-safe issue draft | Print Markdown or prefilled issue URL, no GitHub API mutation |
185
+
186
+ ## Live Capability Ladder
187
+
188
+ Live execution should be staged after the dry-run path is boring:
189
+
190
+ 1. Synthetic dry-run bundle.
191
+ 2. Local app reachability and browser smoke.
192
+ 3. Scripted browser scenario.
193
+ 4. Observer over real screenshots/traces.
194
+ 5. Computer-use / OpenAI actor.
195
+ 6. E2B substrate.
196
+ 7. Multi-persona matrix.
197
+ 8. Optional maintainer-only issue sync tooling.
198
+
199
+ Do not make E2B, OpenAI, or GitHub credentials part of the first successful
200
+ run.
201
+
202
+ For step 3, app-specific browser scenarios are authored as `.yaml` source under
203
+ `humanish/scenarios/*.yaml`:
204
+
205
+ ```yaml
206
+ schema: humanish.scenario.v1
207
+ id: core-browser-flow
208
+ title: Core browser flow
209
+ persona: synthetic-new-user
210
+ goal: Reach the first meaningful product state with synthetic data.
211
+ mode: browser
212
+ browser:
213
+ startPath: /
214
+ steps:
215
+ - id: open-home
216
+ label: Open the app
217
+ action: goto
218
+ path: /
219
+ expect:
220
+ text: "Get started"
221
+ - id: submit-primary-action
222
+ label: Submit the primary action
223
+ action: click
224
+ selector: "button[type='submit']"
225
+ expect:
226
+ stateChanged: true
227
+ ```
228
+
229
+ `humanish run --app-url <loopback-url>` uses the first executable browser
230
+ scenario it finds. If no executable browser steps exist, Humanish falls back to
231
+ the built-in two-step browser persona proof and says so in warnings/review.
232
+
233
+ Live E2B desktop labs are an optional advanced path. Target projects that need
234
+ them should install `@e2b/desktop` explicitly instead of receiving that
235
+ substrate as part of the default Humanish package install. When a GitHub token is
236
+ present, repo labels are redacted in durable artifacts by default; live stream
237
+ auth URLs are used only by the attached watch server and are not persisted.
@@ -0,0 +1,207 @@
1
+ # Humanish Ramp
2
+
3
+ Status: public-safe contributor and agent ramp.
4
+
5
+ Current safety state: `0.15.1` (2026-07-14). Managed run and output paths bind
6
+ to validated physical filesystem identities. Stored provider IDs are evidence,
7
+ not cleanup authority. The bundled OSS meta-lab is dry-run only until
8
+ repository-derived instructions have an isolated credential boundary.
9
+
10
+ Use this page when you are starting cold on `humanish`. It is meant to be
11
+ useful without chat history, private notes, local machine paths, or maintainer
12
+ context.
13
+
14
+ ## First Read
15
+
16
+ Read these in order:
17
+
18
+ 1. [`AGENTS.md`](../../AGENTS.md) for public boundary and engineering rules.
19
+ 2. [`docs/principles/invariants-and-defaults.md`](../principles/invariants-and-defaults.md) — the constitution: which rules are invariants and which are overridable defaults.
20
+ 3. [`README.md`](../../README.md) for install, commands, and package shape.
21
+ 4. [`docs/goals/current.md`](../goals/current.md) for the active product goal.
22
+ 5. [`docs/goals/proof-roadmap/goal.md`](https://github.com/danielgwilson/humanish/blob/main/docs/goals/proof-roadmap/goal.md) for the ratified proof architecture (repo-only; not shipped in the npm package, hence the absolute link).
23
+ 6. [`docs/product/open-source-install-experience.md`](../product/open-source-install-experience.md) for first-run UX.
24
+ 7. [`docs/roadmap/world-class-open-source-v0.md`](../roadmap/world-class-open-source-v0.md) for staged delivery history (historical; see its status banner).
25
+ 8. [`docs/architecture/observer.md`](../architecture/observer.md) for Observer architecture.
26
+ 9. [`docs/contracts/run-bundle.md`](../contracts/run-bundle.md) and [`docs/contracts/policy.md`](../contracts/policy.md) for proof contracts.
27
+ 10. [`docs/release/public-readiness-standard.md`](../release/public-readiness-standard.md) before deciding what must be scrubbed.
28
+ 11. [`docs/release/open-source-readiness.md`](../release/open-source-readiness.md) before touching public packaging or repository visibility.
29
+
30
+ ## Mental Model
31
+
32
+ Humanish is a persona simulation harness for apps, CLIs, and agent-facing product
33
+ flows.
34
+
35
+ - `humanish/` is committed source: personas, scenarios, policy, adapters, and
36
+ lab manifests.
37
+ - `.humanish/` is ignored runtime state: runs, Observer output, transcripts,
38
+ reviews, temporary clones, and local evidence.
39
+ - Humanish source uses `.yaml` for human-authored simulation intent, `.ts` for
40
+ executable integration, and JSON/NDJSON for generated artifacts.
41
+ - A run bundle is the source of truth.
42
+ - The Observer is the projection that makes that truth reviewable.
43
+ - Feedback commands turn verified evidence into public-safe issue drafts.
44
+
45
+ If a change does not improve one of those loops, it probably belongs elsewhere.
46
+
47
+ ## Current State
48
+
49
+ Humanish has a working public package shape and a safe first-run path:
50
+
51
+ ```bash
52
+ pnpm install --frozen-lockfile
53
+ pnpm release:check
54
+ pnpm humanish -- watch --json --no-open
55
+ pnpm humanish -- verify --run latest --json
56
+ ```
57
+
58
+ Implemented:
59
+
60
+ - `commander` CLI with stable command help;
61
+ - `init`, `doctor`, `run`, `watch`, `verify`, `review`, `runs`, and `feedback`;
62
+ - synthetic run bundles;
63
+ - public-safety verification with machine-readable `shareSafety.status`
64
+ (`share_ready`, `local_only`, or `blocked`);
65
+ - mission-control Observer over UI, CLI, TUI, and Codex UI stream contracts;
66
+ - public-safe feedback issue drafts without GitHub API mutation, gated on
67
+ `share_ready` evidence;
68
+ - skills.sh-compatible agent skill;
69
+ - first-class lab manifest resolution through `humanish/labs/*.yaml` and
70
+ ignored `.humanish/labs/*.yaml` overlays — `humanish.lab.v2` compositions
71
+ (`src/lab-config.ts`), one engine, no hardcoded lab kinds;
72
+ - a pluggable actor registry with four registered actors
73
+ (`src/actor-registry.ts`); on the computer-use routes `actors[0].type` is a
74
+ real dispatch key;
75
+ - a computer-use route and clone subject provider: `subject.source: app-url`
76
+ drives a lab-owner loopback app in a hosted desktop, and `subject.source:
77
+ clone` + `serve` clones, installs, and serves a real app in-sandbox from
78
+ config before the actor drives it (`src/cua-actor-lab.ts`);
79
+ - containment checks for managed run storage, Observer and feedback reads,
80
+ actor artifacts, lab discovery, Git metadata, and source archives;
81
+ - an OSS meta-lab dry-run contract and a separate disposable public-repo OSS
82
+ smoke harness;
83
+ - cleanup inspection receipts that do not treat mutable run-bundle IDs as
84
+ provider-mutation authority.
85
+
86
+ Still not good enough:
87
+
88
+ - live `--app-url` browser proof now supports app-specific executable
89
+ `browser.steps` in `humanish/scenarios/*.yaml`, with headed provider-backed
90
+ public proof against two app/tool targets;
91
+ - live PTY and Codex UI lanes need stronger completion health;
92
+ - live OSS meta-lab execution remains disabled until repository-derived
93
+ instructions have an isolated credential boundary; historical headed-lane
94
+ evidence does not make the current entrypoint available;
95
+ - Observer evidence has real screenshots/traces for browser app proof; richer
96
+ multi-step product journeys and broader multi-persona matrices remain the next
97
+ gap.
98
+
99
+ ## First Commands
100
+
101
+ From a clean checkout:
102
+
103
+ ```bash
104
+ git status --short --branch
105
+ pnpm install --frozen-lockfile
106
+ pnpm release:check
107
+ pnpm humanish -- watch --json --no-open
108
+ pnpm humanish -- runs --json
109
+ pnpm humanish -- lab list
110
+ ```
111
+
112
+ For local product feel:
113
+
114
+ ```bash
115
+ pnpm humanish -- watch
116
+ ```
117
+
118
+ For public OSS dogfood without credentials:
119
+
120
+ ```bash
121
+ pnpm humanish -- lab run oss --dry-run --json --no-open
122
+ pnpm humanish -- lab run oss-smoke --limit 1 --json
123
+ ```
124
+
125
+ For private/local dogfood, author an ignored lab manifest under
126
+ `.humanish/labs/` or `.humanish/local/labs/`, then invoke it explicitly with an
127
+ ignored env file:
128
+
129
+ ```bash
130
+ pnpm humanish -- watch .humanish/labs/local-dogfood.yaml --env-file .humanish/local/provider.env
131
+ ```
132
+
133
+ ## How To Pick Work
134
+
135
+ Start from [`docs/goals/current.md`](../goals/current.md).
136
+
137
+ Prefer work that makes Humanish more believable to a new maintainer:
138
+
139
+ - a command becomes easier to run;
140
+ - a run bundle becomes more truthful;
141
+ - Observer evidence becomes more inspectable;
142
+ - verification catches a real bad state;
143
+ - feedback drafts become more actionable;
144
+ - public-safety gates catch a class of leak or stale residue.
145
+
146
+ If no GitHub issue exists for substantial work, draft one with the repo issue
147
+ template before building. Use labels to communicate authority, area, risk, and
148
+ required proof.
149
+
150
+ ## Quality Bar
151
+
152
+ Do not close a change on narrative alone.
153
+
154
+ Useful proof includes:
155
+
156
+ - `pnpm release:check`;
157
+ - focused unit or contract tests;
158
+ - a generated run bundle under ignored `.humanish/`;
159
+ - Observer screenshots or health output;
160
+ - `humanish verify` results;
161
+ - public-surface scan output;
162
+ - fresh clone checks for packaging or release work.
163
+
164
+ A green subset is not the same thing as complete coverage. If something is not
165
+ covered, name it as a gap.
166
+
167
+ ## Public Boundary
168
+
169
+ Assume this repository is public even when local or remote visibility says it is
170
+ private.
171
+
172
+ Never commit or paste:
173
+
174
+ - PII or PHI;
175
+ - secrets, keys, tokens, cookies, or raw env files;
176
+ - raw private transcripts;
177
+ - private screenshots;
178
+ - private customer or patient data;
179
+ - local machine paths;
180
+ - private upstream code or operational details.
181
+
182
+ Use synthetic examples, redacted evidence, and env var names without values.
183
+
184
+ ## Embarrassment Filter
185
+
186
+ Before committing, ask:
187
+
188
+ - Would this make sense to someone who found the repo through npm?
189
+ - Would I be comfortable with this file quoted in a public issue?
190
+ - Does this depend on private chat memory?
191
+ - Does it mention removed docs, private machine paths, or internal-only names?
192
+ - Does it claim product proof when it only proves a contract?
193
+
194
+ If the answer is uncomfortable, rewrite it, synthesize it, or keep it out of the
195
+ repo.
196
+
197
+ ## Hand-Off Format
198
+
199
+ End substantial work with:
200
+
201
+ - what changed;
202
+ - what proof passed;
203
+ - what remains uncertain;
204
+ - the next best issue or command.
205
+
206
+ Future agents should be able to continue from the repo, not from the previous
207
+ chat transcript.