humanish 0.0.1 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/AGENTS.md +77 -0
  2. package/CONTRIBUTING.md +39 -0
  3. package/LICENSE +21 -0
  4. package/README.md +435 -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 +356 -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 +327 -0
  32. package/dist/codex-app-server-ui.js.map +1 -0
  33. package/dist/codex-app-server.d.ts +141 -0
  34. package/dist/codex-app-server.js +747 -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 +1092 -0
  50. package/dist/concurrent-shared-world-lab.js.map +1 -0
  51. package/dist/core/git-state.d.ts +31 -0
  52. package/dist/core/git-state.js +142 -0
  53. package/dist/core/git-state.js.map +1 -0
  54. package/dist/core/index.d.ts +4 -0
  55. package/dist/core/index.js +3 -0
  56. package/dist/core/index.js.map +1 -0
  57. package/dist/core/run-primitives.d.ts +66 -0
  58. package/dist/core/run-primitives.js +120 -0
  59. package/dist/core/run-primitives.js.map +1 -0
  60. package/dist/cua-actor-lab.d.ts +620 -0
  61. package/dist/cua-actor-lab.js +2834 -0
  62. package/dist/cua-actor-lab.js.map +1 -0
  63. package/dist/device-presets.d.ts +67 -0
  64. package/dist/device-presets.js +50 -0
  65. package/dist/device-presets.js.map +1 -0
  66. package/dist/e2b-desktop-executor.d.ts +101 -0
  67. package/dist/e2b-desktop-executor.js +309 -0
  68. package/dist/e2b-desktop-executor.js.map +1 -0
  69. package/dist/e2b-desktop-launch.d.ts +144 -0
  70. package/dist/e2b-desktop-launch.js +59 -0
  71. package/dist/e2b-desktop-launch.js.map +1 -0
  72. package/dist/e2b-detached.d.ts +53 -0
  73. package/dist/e2b-detached.js +130 -0
  74. package/dist/e2b-detached.js.map +1 -0
  75. package/dist/e2b-terminal-lab.d.ts +345 -0
  76. package/dist/e2b-terminal-lab.js +1467 -0
  77. package/dist/e2b-terminal-lab.js.map +1 -0
  78. package/dist/env-file.d.ts +14 -0
  79. package/dist/env-file.js +108 -0
  80. package/dist/env-file.js.map +1 -0
  81. package/dist/feedback.d.ts +51 -0
  82. package/dist/feedback.js +313 -0
  83. package/dist/feedback.js.map +1 -0
  84. package/dist/image-evidence.d.ts +2 -0
  85. package/dist/image-evidence.js +33 -0
  86. package/dist/image-evidence.js.map +1 -0
  87. package/dist/index.d.ts +63 -0
  88. package/dist/index.js +33 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/init-templates.d.ts +12 -0
  91. package/dist/init-templates.js +369 -0
  92. package/dist/init-templates.js.map +1 -0
  93. package/dist/init.d.ts +26 -0
  94. package/dist/init.js +343 -0
  95. package/dist/init.js.map +1 -0
  96. package/dist/lab-app-runner.d.ts +78 -0
  97. package/dist/lab-app-runner.js +403 -0
  98. package/dist/lab-app-runner.js.map +1 -0
  99. package/dist/lab-config.d.ts +578 -0
  100. package/dist/lab-config.js +1751 -0
  101. package/dist/lab-config.js.map +1 -0
  102. package/dist/lab-engine.d.ts +77 -0
  103. package/dist/lab-engine.js +216 -0
  104. package/dist/lab-engine.js.map +1 -0
  105. package/dist/lab-preflight.d.ts +67 -0
  106. package/dist/lab-preflight.js +385 -0
  107. package/dist/lab-preflight.js.map +1 -0
  108. package/dist/labs.d.ts +53 -0
  109. package/dist/labs.js +176 -0
  110. package/dist/labs.js.map +1 -0
  111. package/dist/observer-assets.d.ts +2 -0
  112. package/dist/observer-assets.js +2630 -0
  113. package/dist/observer-assets.js.map +1 -0
  114. package/dist/observer-data.d.ts +63 -0
  115. package/dist/observer-data.js +145 -0
  116. package/dist/observer-data.js.map +1 -0
  117. package/dist/observer-static.d.ts +39 -0
  118. package/dist/observer-static.js +192 -0
  119. package/dist/observer-static.js.map +1 -0
  120. package/dist/observer.d.ts +46 -0
  121. package/dist/observer.js +353 -0
  122. package/dist/observer.js.map +1 -0
  123. package/dist/openai-responses-cu.d.ts +113 -0
  124. package/dist/openai-responses-cu.js +531 -0
  125. package/dist/openai-responses-cu.js.map +1 -0
  126. package/dist/oss-lab.d.ts +52 -0
  127. package/dist/oss-lab.js +299 -0
  128. package/dist/oss-lab.js.map +1 -0
  129. package/dist/oss-meta-lab-scoring.d.ts +15 -0
  130. package/dist/oss-meta-lab-scoring.js +145 -0
  131. package/dist/oss-meta-lab-scoring.js.map +1 -0
  132. package/dist/oss-meta-lab.d.ts +279 -0
  133. package/dist/oss-meta-lab.js +4889 -0
  134. package/dist/oss-meta-lab.js.map +1 -0
  135. package/dist/oss-remote-telemetry.d.ts +77 -0
  136. package/dist/oss-remote-telemetry.js +403 -0
  137. package/dist/oss-remote-telemetry.js.map +1 -0
  138. package/dist/persona.d.ts +35 -0
  139. package/dist/persona.js +133 -0
  140. package/dist/persona.js.map +1 -0
  141. package/dist/pi-agent-core.d.ts +77 -0
  142. package/dist/pi-agent-core.js +203 -0
  143. package/dist/pi-agent-core.js.map +1 -0
  144. package/dist/program.d.ts +54 -0
  145. package/dist/program.js +2347 -0
  146. package/dist/program.js.map +1 -0
  147. package/dist/redaction.d.ts +90 -0
  148. package/dist/redaction.js +292 -0
  149. package/dist/redaction.js.map +1 -0
  150. package/dist/run.d.ts +784 -0
  151. package/dist/run.js +4555 -0
  152. package/dist/run.js.map +1 -0
  153. package/dist/scripted-browser-actor.d.ts +294 -0
  154. package/dist/scripted-browser-actor.js +1286 -0
  155. package/dist/scripted-browser-actor.js.map +1 -0
  156. package/dist/scripted-browser-lab.d.ts +107 -0
  157. package/dist/scripted-browser-lab.js +738 -0
  158. package/dist/scripted-browser-lab.js.map +1 -0
  159. package/dist/shared-world-lab.d.ts +208 -0
  160. package/dist/shared-world-lab.js +1048 -0
  161. package/dist/shared-world-lab.js.map +1 -0
  162. package/dist/source-archive.d.ts +82 -0
  163. package/dist/source-archive.js +365 -0
  164. package/dist/source-archive.js.map +1 -0
  165. package/dist/stop-conditions.d.ts +26 -0
  166. package/dist/stop-conditions.js +66 -0
  167. package/dist/stop-conditions.js.map +1 -0
  168. package/dist/terminal-agent-actor.d.ts +36 -0
  169. package/dist/terminal-agent-actor.js +23 -0
  170. package/dist/terminal-agent-actor.js.map +1 -0
  171. package/docs/architecture/actor-contract.md +431 -0
  172. package/docs/architecture/github-feedback-loop.md +189 -0
  173. package/docs/architecture/local-codex-tui-actor.md +213 -0
  174. package/docs/architecture/observer.md +118 -0
  175. package/docs/architecture/oss-lab-poc.md +242 -0
  176. package/docs/architecture/project-layout.md +166 -0
  177. package/docs/architecture/state-driven-executor.md +203 -0
  178. package/docs/architecture/terminal-product-lane.md +148 -0
  179. package/docs/contracts/adapter-fixtures.md +80 -0
  180. package/docs/contracts/core.md +71 -0
  181. package/docs/contracts/feedback.md +145 -0
  182. package/docs/contracts/policy.md +305 -0
  183. package/docs/contracts/run-bundle.md +358 -0
  184. package/docs/contracts/schemas.md +984 -0
  185. package/docs/goals/current.md +409 -0
  186. package/docs/principles/invariants-and-defaults.md +135 -0
  187. package/docs/principles/self-driving-harness.md +129 -0
  188. package/docs/product/open-source-install-experience.md +229 -0
  189. package/docs/ramp/README.md +200 -0
  190. package/docs/release/open-source-readiness.md +208 -0
  191. package/docs/release/public-readiness-standard.md +205 -0
  192. package/docs/roadmap/world-class-open-source-v0.md +311 -0
  193. package/package.json +102 -8
  194. package/skills/humanish/SKILL.md +244 -0
  195. package/skills/humanish/agents/openai.yaml +7 -0
  196. 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,229 @@
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
+ ## Product Promise
8
+
9
+ Drop Humanish into an app and let a coding agent set up realistic persona
10
+ simulations, run them safely, watch them in a polished observer, and turn
11
+ friction into public-safe issue drafts.
12
+
13
+ The first experience should feel like a mature one-command simulation harness,
14
+ but with an open-source-safe package shape:
15
+
16
+ ```bash
17
+ npm i -D humanish
18
+ npx humanish init
19
+ npm run humanish:doctor
20
+ npm run humanish:watch
21
+ npm run humanish:verify
22
+ npx humanish feedback issue --run latest --repo example/app --format markdown
23
+ ```
24
+
25
+ ## Two-Part Distribution
26
+
27
+ ### NPM Package
28
+
29
+ The npm package owns executable behavior:
30
+
31
+ - binary: `humanish`;
32
+ - CLI framework: `commander`;
33
+ - commands: `init`, `doctor`, `run`, `watch`, `review`, `verify`,
34
+ `lab`, `feedback`;
35
+ - schemas and validators;
36
+ - synthetic starter templates;
37
+ - observer static assets;
38
+ - artifact and run-bundle utilities;
39
+ - redaction and public issue-draft generation.
40
+
41
+ ### Agent Skill
42
+
43
+ The agent skill owns installation guidance and repo adaptation:
44
+
45
+ ```bash
46
+ npx skills add danielgwilson/humanish --skill humanish
47
+ ```
48
+
49
+ Installable repo skill: [`skills/humanish/SKILL.md`](../../skills/humanish/SKILL.md).
50
+
51
+ The skill should teach the user's coding agent how to:
52
+
53
+ - install `humanish`;
54
+ - run `humanish init`;
55
+ - inspect the target app's routes and dev command;
56
+ - create synthetic personas and scenarios;
57
+ - create public-safe `humanish/labs/*.yaml` lab manifests;
58
+ - keep private/local labs under ignored `.humanish/labs/*.yaml` or
59
+ `.humanish/local/labs/*.yaml`;
60
+ - configure local app targets;
61
+ - document E2B and OpenAI env var names without storing values;
62
+ - use `--env-file <path>` for explicit local env hydration without persisting
63
+ values into artifacts;
64
+ - run `doctor`, `watch`, `verify`, and `feedback issue`;
65
+ - avoid PII, PHI, secrets, real customer data, and private artifacts.
66
+
67
+ The skill should not hide critical behavior in chat memory. It should point to
68
+ repo-owned `humanish/` files and package-owned docs.
69
+
70
+ ## Project File Formats
71
+
72
+ New projects should get a boring, legible format stack:
73
+
74
+ - `.yaml` for human-authored Humanish source such as personas, scenarios,
75
+ policies, labs, and review vocabulary;
76
+ - `.ts` for executable integration such as `humanish/config.ts` and adapters;
77
+ - `.json` and `.ndjson` for generated run artifacts, Observer data, review
78
+ output, event streams, and synthetic fixtures.
79
+
80
+ Use `.yml` only where an outside ecosystem convention already expects it, for
81
+ example GitHub Actions workflows. Do not scaffold `.yml` for Humanish source and
82
+ do not use TOML unless a future scalar global-config case clearly needs it.
83
+
84
+ ## First-Run Principles
85
+
86
+ - No keys required for the first wow moment.
87
+ - No live GitHub mutation.
88
+ - No hosted queues or private infrastructure.
89
+ - No real customer/user/patient data.
90
+ - No generated personas from tickets, logs, transcripts, screenshots, or
91
+ production analytics.
92
+ - Safe dry-run should produce a valid synthetic run bundle and observer view.
93
+ - The user should see what changed in git.
94
+
95
+ ## Lab Manifest Shape
96
+
97
+ Labs are the public-safe way to name a reusable simulation run. A starter app
98
+ gets a committed synthetic lab:
99
+
100
+ ```yaml
101
+ schema: humanish.lab.v2
102
+ id: first-run
103
+ title: First-run synthetic Observer
104
+ description: Public-safe starter lab that generates a synthetic run bundle and Observer without provider spend.
105
+ subject:
106
+ source: this-repo
107
+ actors:
108
+ - type: synthetic-persona
109
+ count: 4
110
+ scenario:
111
+ mode: dry-run
112
+ defaults:
113
+ open: true
114
+ ```
115
+
116
+ Resolution order:
117
+
118
+ 1. `humanish/labs/<id>.yaml` for committed, reproducible labs.
119
+ 2. `.humanish/labs/<id>.yaml` for ignored local labs.
120
+ 3. `.humanish/local/labs/<id>.yaml` for ignored machine-specific overlays.
121
+ 4. explicit `.yaml` path, for example
122
+ `.humanish/labs/local-dogfood.yaml`.
123
+
124
+ Private repo targets, local env references, and maintainer dogfood variants
125
+ belong in ignored lab manifests and should be invoked with explicit
126
+ `--env-file`; do not make them package defaults.
127
+
128
+ ## `humanish init`
129
+
130
+ `humanish init` should:
131
+
132
+ 1. Detect package manager and app framework when possible.
133
+ 2. Create committed starter files under `humanish/`.
134
+ 3. Create ignored runtime state under `.humanish/`.
135
+ 4. Add `.humanish/` and secret/local overlays to `.gitignore`.
136
+ 5. Patch `package.json` scripts only after showing the intended diff or when
137
+ `--yes` is passed.
138
+ 6. Create only synthetic public-safe personas and scenarios.
139
+ 7. Write credential references as env var names only.
140
+ 8. Run a dry-run verification if dependencies are available.
141
+
142
+ Suggested scripts:
143
+
144
+ ```json
145
+ {
146
+ "scripts": {
147
+ "humanish": "humanish",
148
+ "humanish:doctor": "humanish doctor",
149
+ "humanish:run": "humanish run --dry-run",
150
+ "humanish:watch": "humanish watch",
151
+ "humanish:lab:list": "humanish lab list",
152
+ "humanish:watch:ci": "humanish watch --json --no-open",
153
+ "humanish:verify": "humanish verify"
154
+ }
155
+ }
156
+ ```
157
+
158
+ ## Command Ladder
159
+
160
+ | Command | Purpose | First version should |
161
+ | --- | --- | --- |
162
+ | `humanish init` | Set up project-owned harness files | Scaffold committed `humanish/`, ignored `.humanish/`, package scripts |
163
+ | `humanish doctor` | Explain readiness | Check config, gitignore, app target, browser, env var names, redaction policy |
164
+ | `humanish run --dry-run` | Prove contract without app/browser/keys | Write synthetic run bundle |
165
+ | `humanish verify` | Validate bundle and public-safety gates | Fail closed on schema/evidence/redaction errors |
166
+ | `humanish review` | Build review packet from evidence | Summarize verdicts without inventing product proof |
167
+ | `humanish watch` | Run sims and watch the observer | Create a fresh four-lane bundle, render Observer, open it, and keep the shell attached |
168
+ | `humanish watch [lab]` | Run a named lab and watch it | Resolve committed or ignored `.yaml` lab manifests, then open/follow Observer |
169
+ | `humanish watch --json --no-open` | Agent/CI proof path | Create the same bundle and Observer artifacts without browser open or attached watch server |
170
+ | `humanish lab list` | Discover available labs | List committed labs and ignored local labs with origin labels |
171
+ | `humanish lab inspect <lab>` | Read a lab manifest | Print the parsed lab config, origin, path, and warnings without executing |
172
+ | `humanish lab preflight <lab>` | Check lab readiness before spend | Validate routing and optionally probe declared targets from a hosted desktop without launching actors |
173
+ | `humanish lab run <lab>` | Run a lab manifest | Human or JSON execution path for synthetic, OSS meta, and smoke labs |
174
+ | `humanish lab run oss` | Maintainer dogfood example | Open the Observer-of-Observers with headed desktop lanes assigned by `--repos`, target app windows, nested Observers, runtime-only stream URLs, and redacted durable evidence for token-backed runs |
175
+ | `humanish lab run oss-smoke` | Maintainer smoke example | Shallow clone lightweight GitHub repos, run setup/proof/verify, report, and remove clones |
176
+ | `humanish feedback issue` | Produce public-safe issue draft | Print Markdown or prefilled issue URL, no GitHub API mutation |
177
+
178
+ ## Live Capability Ladder
179
+
180
+ Live execution should be staged after the dry-run path is boring:
181
+
182
+ 1. Synthetic dry-run bundle.
183
+ 2. Local app reachability and browser smoke.
184
+ 3. Scripted browser scenario.
185
+ 4. Observer over real screenshots/traces.
186
+ 5. Computer-use / OpenAI actor.
187
+ 6. E2B substrate.
188
+ 7. Multi-persona matrix.
189
+ 8. Optional maintainer-only issue sync tooling.
190
+
191
+ Do not make E2B, OpenAI, or GitHub credentials part of the first successful
192
+ run.
193
+
194
+ For step 3, app-specific browser scenarios are authored as `.yaml` source under
195
+ `humanish/scenarios/*.yaml`:
196
+
197
+ ```yaml
198
+ schema: humanish.scenario.v1
199
+ id: core-browser-flow
200
+ title: Core browser flow
201
+ persona: synthetic-new-user
202
+ goal: Reach the first meaningful product state with synthetic data.
203
+ mode: browser
204
+ browser:
205
+ startPath: /
206
+ steps:
207
+ - id: open-home
208
+ label: Open the app
209
+ action: goto
210
+ path: /
211
+ expect:
212
+ text: "Get started"
213
+ - id: submit-primary-action
214
+ label: Submit the primary action
215
+ action: click
216
+ selector: "button[type='submit']"
217
+ expect:
218
+ stateChanged: true
219
+ ```
220
+
221
+ `humanish run --app-url <loopback-url>` uses the first executable browser
222
+ scenario it finds. If no executable browser steps exist, Humanish falls back to
223
+ the built-in two-step browser persona proof and says so in warnings/review.
224
+
225
+ Live E2B desktop labs are an optional advanced path. Target projects that need
226
+ them should install `@e2b/desktop` explicitly instead of receiving that
227
+ substrate as part of the default Humanish package install. When a GitHub token is
228
+ present, repo labels are redacted in durable artifacts by default; live stream
229
+ auth URLs are used only by the attached watch server and are not persisted.
@@ -0,0 +1,200 @@
1
+ # Humanish Ramp
2
+
3
+ Status: public-safe contributor and agent ramp.
4
+
5
+ Use this page when you are starting cold on `humanish`. It is meant to be
6
+ useful without chat history, private notes, local machine paths, or maintainer
7
+ context.
8
+
9
+ ## First Read
10
+
11
+ Read these in order:
12
+
13
+ 1. [`AGENTS.md`](../../AGENTS.md) for public boundary and engineering rules.
14
+ 2. [`docs/principles/invariants-and-defaults.md`](../principles/invariants-and-defaults.md) — the constitution: which rules are invariants and which are overridable defaults.
15
+ 3. [`README.md`](../../README.md) for install, commands, and package shape.
16
+ 4. [`docs/goals/current.md`](../goals/current.md) for the active product goal.
17
+ 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).
18
+ 6. [`docs/product/open-source-install-experience.md`](../product/open-source-install-experience.md) for first-run UX.
19
+ 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).
20
+ 8. [`docs/architecture/observer.md`](../architecture/observer.md) for Observer architecture.
21
+ 9. [`docs/contracts/run-bundle.md`](../contracts/run-bundle.md) and [`docs/contracts/policy.md`](../contracts/policy.md) for proof contracts.
22
+ 10. [`docs/release/public-readiness-standard.md`](../release/public-readiness-standard.md) before deciding what must be scrubbed.
23
+ 11. [`docs/release/open-source-readiness.md`](../release/open-source-readiness.md) before touching public packaging or repository visibility.
24
+
25
+ ## Mental Model
26
+
27
+ Humanish is a persona simulation harness for apps, CLIs, and agent-facing product
28
+ flows.
29
+
30
+ - `humanish/` is committed source: personas, scenarios, policy, adapters, and
31
+ lab manifests.
32
+ - `.humanish/` is ignored runtime state: runs, Observer output, transcripts,
33
+ reviews, temporary clones, and local evidence.
34
+ - Humanish source uses `.yaml` for human-authored simulation intent, `.ts` for
35
+ executable integration, and JSON/NDJSON for generated artifacts.
36
+ - A run bundle is the source of truth.
37
+ - The Observer is the projection that makes that truth reviewable.
38
+ - Feedback commands turn verified evidence into public-safe issue drafts.
39
+
40
+ If a change does not improve one of those loops, it probably belongs elsewhere.
41
+
42
+ ## Current State
43
+
44
+ Humanish has a working public package shape and a safe first-run path:
45
+
46
+ ```bash
47
+ pnpm install --frozen-lockfile
48
+ pnpm release:check
49
+ pnpm humanish -- watch --json --no-open
50
+ pnpm humanish -- verify --run latest --json
51
+ ```
52
+
53
+ Implemented:
54
+
55
+ - `commander` CLI with stable command help;
56
+ - `init`, `doctor`, `run`, `watch`, `verify`, `review`, `runs`, and `feedback`;
57
+ - synthetic run bundles;
58
+ - public-safety verification with machine-readable `shareSafety.status`
59
+ (`share_ready`, `local_only`, or `blocked`);
60
+ - mission-control Observer over UI, CLI, TUI, and Codex UI stream contracts;
61
+ - public-safe feedback issue drafts without GitHub API mutation, gated on
62
+ `share_ready` evidence;
63
+ - skills.sh-compatible agent skill;
64
+ - first-class lab manifest resolution through `humanish/labs/*.yaml` and
65
+ ignored `.humanish/labs/*.yaml` overlays — `humanish.lab.v2` compositions
66
+ (`src/lab-config.ts`), one engine, no hardcoded lab kinds;
67
+ - a pluggable actor registry with four registered actors
68
+ (`src/actor-registry.ts`); on the computer-use routes `actors[0].type` is a
69
+ real dispatch key;
70
+ - a computer-use route and clone subject provider: `subject.source: app-url`
71
+ drives a lab-owner loopback app in a hosted desktop, and `subject.source:
72
+ clone` + `serve` clones, installs, and serves a real app in-sandbox from
73
+ config before the actor drives it (`src/cua-actor-lab.ts`);
74
+ - experimental maintainer OSS meta-lab and disposable OSS smoke harness;
75
+ - OSS dogfood setup-quality filesystem artifacts rendered from the Observer Files
76
+ tab with private-run previews suppressed by default.
77
+
78
+ Still not good enough:
79
+
80
+ - live `--app-url` browser proof now supports app-specific executable
81
+ `browser.steps` in `humanish/scenarios/*.yaml`, with headed provider-backed
82
+ public proof against two app/tool targets;
83
+ - live PTY and Codex UI lanes need stronger completion health;
84
+ - OSS lab lanes can report nested Observer health, target app readiness, actor
85
+ evidence, setup-quality filesystem checks, and nested browser step summaries
86
+ when a target app starts, but need repeated fresh-agent trials across more
87
+ disposable public apps;
88
+ - Observer evidence has real screenshots/traces for browser app proof; richer
89
+ multi-step product journeys and broader multi-persona matrices remain the next
90
+ gap.
91
+
92
+ ## First Commands
93
+
94
+ From a clean checkout:
95
+
96
+ ```bash
97
+ git status --short --branch
98
+ pnpm install --frozen-lockfile
99
+ pnpm release:check
100
+ pnpm humanish -- watch --json --no-open
101
+ pnpm humanish -- runs --json
102
+ pnpm humanish -- lab list
103
+ ```
104
+
105
+ For local product feel:
106
+
107
+ ```bash
108
+ pnpm humanish -- watch
109
+ ```
110
+
111
+ For public OSS dogfood without credentials:
112
+
113
+ ```bash
114
+ pnpm humanish -- lab run oss --dry-run --json --no-open
115
+ pnpm humanish -- lab run oss-smoke --limit 1 --json
116
+ ```
117
+
118
+ For private/local dogfood, author an ignored lab manifest under
119
+ `.humanish/labs/` or `.humanish/local/labs/`, then invoke it explicitly with an
120
+ ignored env file:
121
+
122
+ ```bash
123
+ pnpm humanish -- watch .humanish/labs/local-dogfood.yaml --env-file .humanish/local/provider.env
124
+ ```
125
+
126
+ ## How To Pick Work
127
+
128
+ Start from [`docs/goals/current.md`](../goals/current.md).
129
+
130
+ Prefer work that makes Humanish more believable to a new maintainer:
131
+
132
+ - a command becomes easier to run;
133
+ - a run bundle becomes more truthful;
134
+ - Observer evidence becomes more inspectable;
135
+ - verification catches a real bad state;
136
+ - feedback drafts become more actionable;
137
+ - public-safety gates catch a class of leak or stale residue.
138
+
139
+ If no GitHub issue exists for substantial work, draft one with the repo issue
140
+ template before building. Use labels to communicate authority, area, risk, and
141
+ required proof.
142
+
143
+ ## Quality Bar
144
+
145
+ Do not close a change on narrative alone.
146
+
147
+ Useful proof includes:
148
+
149
+ - `pnpm release:check`;
150
+ - focused unit or contract tests;
151
+ - a generated run bundle under ignored `.humanish/`;
152
+ - Observer screenshots or health output;
153
+ - `humanish verify` results;
154
+ - public-surface scan output;
155
+ - fresh clone checks for packaging or release work.
156
+
157
+ A green subset is not the same thing as complete coverage. If something is not
158
+ covered, name it as a gap.
159
+
160
+ ## Public Boundary
161
+
162
+ Assume this repository is public even when local or remote visibility says it is
163
+ private.
164
+
165
+ Never commit or paste:
166
+
167
+ - PII or PHI;
168
+ - secrets, keys, tokens, cookies, or raw env files;
169
+ - raw private transcripts;
170
+ - private screenshots;
171
+ - private customer or patient data;
172
+ - local machine paths;
173
+ - private upstream code or operational details.
174
+
175
+ Use synthetic examples, redacted evidence, and env var names without values.
176
+
177
+ ## Embarrassment Filter
178
+
179
+ Before committing, ask:
180
+
181
+ - Would this make sense to someone who found the repo through npm?
182
+ - Would I be comfortable with this file quoted in a public issue?
183
+ - Does this depend on private chat memory?
184
+ - Does it mention removed docs, private machine paths, or internal-only names?
185
+ - Does it claim product proof when it only proves a contract?
186
+
187
+ If the answer is uncomfortable, rewrite it, synthesize it, or keep it out of the
188
+ repo.
189
+
190
+ ## Hand-Off Format
191
+
192
+ End substantial work with:
193
+
194
+ - what changed;
195
+ - what proof passed;
196
+ - what remains uncertain;
197
+ - the next best issue or command.
198
+
199
+ Future agents should be able to continue from the repo, not from the previous
200
+ chat transcript.