mimetic-cli 0.1.4 → 0.1.5

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 (49) hide show
  1. package/README.md +67 -12
  2. package/dist/env-file.d.ts +14 -0
  3. package/dist/env-file.js +108 -0
  4. package/dist/env-file.js.map +1 -0
  5. package/dist/feedback.d.ts +7 -5
  6. package/dist/feedback.js +61 -4
  7. package/dist/feedback.js.map +1 -1
  8. package/dist/init-templates.js +29 -0
  9. package/dist/init-templates.js.map +1 -1
  10. package/dist/lab-app-runner.d.ts +78 -0
  11. package/dist/lab-app-runner.js +403 -0
  12. package/dist/lab-app-runner.js.map +1 -0
  13. package/dist/labs.d.ts +67 -0
  14. package/dist/labs.js +257 -0
  15. package/dist/labs.js.map +1 -0
  16. package/dist/observer-assets.js +473 -25
  17. package/dist/observer-assets.js.map +1 -1
  18. package/dist/observer.d.ts +6 -0
  19. package/dist/observer.js +49 -8
  20. package/dist/observer.js.map +1 -1
  21. package/dist/oss-lab.d.ts +1 -1
  22. package/dist/oss-lab.js +6 -6
  23. package/dist/oss-lab.js.map +1 -1
  24. package/dist/oss-meta-lab.d.ts +113 -1
  25. package/dist/oss-meta-lab.js +2753 -200
  26. package/dist/oss-meta-lab.js.map +1 -1
  27. package/dist/oss-remote-telemetry.d.ts +77 -0
  28. package/dist/oss-remote-telemetry.js +393 -0
  29. package/dist/oss-remote-telemetry.js.map +1 -0
  30. package/dist/program.d.ts +8 -0
  31. package/dist/program.js +668 -70
  32. package/dist/program.js.map +1 -1
  33. package/dist/run.d.ts +105 -3
  34. package/dist/run.js +684 -22
  35. package/dist/run.js.map +1 -1
  36. package/docs/architecture/local-codex-tui-actor.md +9 -6
  37. package/docs/architecture/oss-lab-poc.md +119 -47
  38. package/docs/architecture/project-layout.md +40 -6
  39. package/docs/contracts/feedback.md +15 -12
  40. package/docs/contracts/policy.md +9 -2
  41. package/docs/contracts/run-bundle.md +62 -0
  42. package/docs/contracts/schemas.md +21 -0
  43. package/docs/goals/current.md +50 -17
  44. package/docs/product/open-source-install-experience.md +63 -8
  45. package/docs/ramp/README.md +26 -8
  46. package/docs/roadmap/world-class-open-source-v0.md +41 -20
  47. package/package.json +8 -6
  48. package/skills/mimetic-cli/SKILL.md +89 -4
  49. package/skills/mimetic-cli/agents/openai.yaml +1 -1
@@ -1,48 +1,51 @@
1
- # OSS Lab POC
1
+ # Maintainer OSS Meta-Lab
2
2
 
3
3
  Date: 2026-06-01
4
4
 
5
- Status: implemented as an experimental meta-lab command plus a retained smoke
6
- harness.
5
+ Status: implemented as an experimental repo-owned lab manifest plus
6
+ compatibility aliases.
7
7
 
8
8
  ## Decision
9
9
 
10
- `mimetic lab oss` is the public-OSS meta-simulation loop.
10
+ `mimetic/labs/oss.yaml` is this repo's authorized-repo meta-simulation
11
+ dogfood loop. It is intentionally a lab manifest, not the canonical consumer
12
+ shape. Consumer projects should author their own `mimetic/labs/*.yaml` files
13
+ and run them with `mimetic watch <lab>` or `mimetic lab run <lab>`.
11
14
 
12
- The command should feel like `mimetic watch`: it opens the Observer and, for
13
- human output, keeps the shell attached. Its top-level Observer is an
14
- Observer-of-Observers: each lane represents a headed E2B desktop that will run
15
- Codex TUI against a different lightweight public GitHub repository. Inside each
16
- desktop, Codex should clone the repo, get it into local dev mode where feasible,
17
- install and initialize Mimetic, author plausible public-safe personas/scenarios,
18
- run nested Mimetic proof commands, attempt a Codex TUI pass, and leave that
19
- nested Observer visible in the E2B browser.
15
+ The lab should feel like `mimetic watch`: it opens the Observer and, for human
16
+ output, keeps the shell attached. Its top-level Observer is an
17
+ Observer-of-Observers: each lane represents a headed E2B desktop assigned to a
18
+ GitHub `owner/repo` slug. Inside each desktop, the bootstrap clones the repo,
19
+ gets it into local dev mode where feasible, installs and initializes Mimetic,
20
+ runs nested Mimetic proof commands, starts the target app when a runnable
21
+ script is present, opens desktop/mobile app windows plus the nested Observer in
22
+ the E2B browser, and starts a nonblocking Codex actor attempt.
20
23
 
21
24
  The previous clone/discard proof loop remains useful, but it is now explicitly
22
- named `mimetic lab oss-smoke`.
25
+ named `mimetic/labs/oss-smoke.yaml`.
23
26
 
24
27
  ## Commands
25
28
 
26
29
  Main operator path:
27
30
 
28
31
  ```bash
29
- mimetic lab oss
30
- mimetic lab oss --repos developit/mitt,lukeed/clsx,sindresorhus/is-plain-obj,ai/nanoid
31
- mimetic lab oss --repo developit/mitt --repo lukeed/clsx --count 4
32
+ mimetic watch oss
33
+ mimetic lab run oss
34
+ mimetic lab run oss --repos CorentinTh/it-tools,drawdb-io/drawdb,maciekt07/TodoApp,lissy93/dashy
35
+ mimetic lab run oss --repo CorentinTh/it-tools --repo drawdb-io/drawdb --count 4
32
36
  ```
33
37
 
34
38
  Agent/CI contract path:
35
39
 
36
40
  ```bash
37
- mimetic lab oss --dry-run --json --no-open
41
+ mimetic lab run oss --dry-run --json --no-open
38
42
  ```
39
43
 
40
44
  Disposable clone smoke path:
41
45
 
42
46
  ```bash
43
- mimetic lab oss-smoke
44
- mimetic lab oss-smoke --limit 1 --keep
45
- mimetic lab oss --smoke --limit 1 --keep
47
+ mimetic lab run oss-smoke
48
+ mimetic lab run oss-smoke --limit 1 --keep
46
49
  ```
47
50
 
48
51
  Local dogfood shortcuts:
@@ -55,17 +58,47 @@ pnpm mimetic:lab:oss:smoke
55
58
 
56
59
  ## Repo Selection
57
60
 
58
- The default public targets are intentionally small JavaScript packages:
61
+ The default public targets are product-like, locally runnable apps/tools:
59
62
 
60
- - `developit/mitt`
61
- - `lukeed/clsx`
62
- - `sindresorhus/is-plain-obj`
63
- - `ai/nanoid`
63
+ - `CorentinTh/it-tools`
64
+ - `drawdb-io/drawdb`
65
+ - `maciekt07/TodoApp`
66
+ - `lissy93/dashy`
67
+
68
+ Target selection should minimize distance from a real user-facing journey.
69
+ Good defaults expose an app, CLI, or agent-facing tool that can be tried out of
70
+ the box, preferably with a local dev script and no account setup. Libraries,
71
+ frameworks, starters, and infrastructure packages belong only in scenarios that
72
+ explicitly test developer experience. They are poor defaults for proving
73
+ Mimetic as a user-simulation harness because they add another abstract setup
74
+ layer before any product behavior is visible.
64
75
 
65
76
  `--repos` accepts a comma-separated list. Repeated `--repo` is also supported.
66
77
  If `--count` is larger than the repo list, assignments cycle through the repo
67
- pool. Inputs must be public GitHub `owner/repo` slugs. Arbitrary URLs, local
68
- paths, tokens, SSH remotes, and private GitHub references are rejected.
78
+ pool. Inputs must be GitHub `owner/repo` slugs. Arbitrary URLs, local paths,
79
+ tokens, and SSH remotes are rejected. Private repos are maintainer-only and
80
+ require an authorized `GH_TOKEN` or `GITHUB_TOKEN` at runtime; no token value is
81
+ written to committed source or public issue text.
82
+
83
+ ## Private Product Labs
84
+
85
+ Private products can be used for local maintainer dogfood, but they must stay
86
+ out of the public package surface. Do not commit private repo names as defaults,
87
+ fixtures, screenshots, README examples, npm assets, skill examples, or issue
88
+ draft text.
89
+
90
+ The safe local shape is:
91
+
92
+ ```bash
93
+ mimetic watch .mimetic/labs/private-app.yaml --env-file .mimetic/local/provider.env
94
+ ```
95
+
96
+ with an authorized runtime GitHub token and default repo redaction enabled.
97
+ Do not pass `--no-redact-repos` for a private target. Public receipts for
98
+ those runs should say `authorized private app target` and point only to ignored
99
+ local artifact paths, redacted statuses, and verifier results. Never publish
100
+ private screenshots, logs, app URLs, source snippets, branch names, issue
101
+ names, stream URLs, or operational details.
69
102
 
70
103
  ## Runtime Shape
71
104
 
@@ -85,19 +118,45 @@ The meta-lab writes ignored local Observer evidence:
85
118
 
86
119
  Each stream lane records:
87
120
 
88
- - assigned repo slug;
89
- - live E2B desktop stream URL when keys are present;
90
- - Codex TUI bootstrap prompt;
91
- - current live-readiness state;
121
+ - assigned repo slug for public runs, or a redacted lane label for token-backed
122
+ maintainer/private runs;
123
+ - whether a live E2B desktop stream exists; auth-bearing stream URLs are
124
+ runtime-only for the attached Observer server and are not persisted;
125
+ - target app URL/status when a runnable script becomes HTTP-ready inside the
126
+ sandbox;
127
+ - nested Observer presence and nested verification status;
128
+ - headed desktop visual-window status and browser window count;
129
+ - Codex actor status, optionally moved before deterministic setup with
130
+ `MIMETIC_OSS_META_ACTOR_FIRST=1` and required through
131
+ `MIMETIC_OSS_META_REQUIRE_ACTOR=1`;
132
+ - setup-quality filesystem evidence: shallow tree, Mimetic setup checks,
133
+ package scripts, study-quality rating, and allowlisted previews for public
134
+ runs;
135
+ - public-safe remote bootstrap log tail;
92
136
  - public-safe gaps and events.
93
137
 
94
138
  The current implementation launches live E2B desktop streams when
95
- `E2B_API_KEY` and `OPENAI_API_KEY` are present, embeds those streams into the
96
- top-level Observer, and marks missing key or launch failures in-lane. It also
97
- packs the local Mimetic package, uploads it into each sandbox, raises a visible
98
- bootstrap terminal, clones the assigned public repo, runs nested Mimetic setup
99
- and proof commands, attempts a Codex TUI pass, and opens the nested Observer in
100
- the sandbox browser.
139
+ `E2B_API_KEY` and `OPENAI_API_KEY` are present, overlays those stream URLs only
140
+ in the attached Observer server, and marks missing key or launch failures
141
+ in-lane. It also packs the local Mimetic package, uploads it into each sandbox,
142
+ raises a visible bootstrap terminal, clones the assigned repo, runs nested
143
+ Mimetic setup and proof commands, starts the target app, opens desktop/mobile
144
+ app windows, opens the nested Observer in the sandbox browser, arranges visible
145
+ browser windows for screenshot proof, and starts the Codex actor attempt. By
146
+ default the actor remains nonblocking and runs after deterministic readback; with
147
+ `MIMETIC_OSS_META_ACTOR_FIRST=1`, the actor attempts setup/use before
148
+ deterministic validation; with `MIMETIC_OSS_META_REQUIRE_ACTOR=1`, the bootstrap
149
+ waits up to `MIMETIC_OSS_META_ACTOR_TIMEOUT_MS` for terminal actor readback and
150
+ will not mark the lane passed unless the actor exits cleanly.
151
+
152
+ When the remote bootstrap completes, the host persists a local
153
+ `setup-quality/<stream>-setup-quality.json` artifact. The Observer Files tab can
154
+ render it inline from the served Observer. Static `file://` observers keep the
155
+ artifact link openable but do not hydrate it inline. Token-backed/private runs
156
+ suppress raw file previews by default while preserving the setup checks and
157
+ tree shape. They also preserve `studyQuality` structural signals so an actor
158
+ that merely installs Mimetic receives a `ceremonial` rating instead of being
159
+ treated as successful user-study leverage.
101
160
 
102
161
  The live desktop substrate is an optional peer dependency. Install it in the
103
162
  project that runs live labs:
@@ -106,13 +165,13 @@ project that runs live labs:
106
165
  npm i -D @e2b/desktop
107
166
  ```
108
167
 
109
- Remaining substrate work: poll remote bootstrap completion and nested Observer
110
- health back into the top-level bundle instead of leaving completion review to
111
- the live desktop stream.
168
+ Remaining substrate work: upgrade the nested `--app-url` browser proof into
169
+ provider-backed personas that actually drive multi-step target-app journeys,
170
+ and live-prove actor-first setup/use, not only deterministic bootstrap readback.
112
171
 
113
172
  ## Smoke Harness Runtime
114
173
 
115
- `mimetic lab oss-smoke` shallow clones lightweight public GitHub repos into
174
+ `mimetic lab run oss-smoke` shallow clones lightweight public GitHub repos into
116
175
  ignored runtime state, applies Mimetic setup inside each throwaway clone, runs
117
176
  the synthetic four-lane proof path, verifies the generated bundle, records
118
177
  git-status evidence, writes an ignored report, and removes cloned repos by
@@ -140,7 +199,13 @@ ignored `.mimetic/lab/oss/<run-id>/`.
140
199
 
141
200
  ## Safety Rules
142
201
 
143
- - Public GitHub `owner/repo` slugs only.
202
+ - GitHub `owner/repo` slugs only.
203
+ - Private repos require an authorized runtime token. Token-backed runs redact
204
+ repo labels in durable artifacts by default and must not appear in committed
205
+ fixtures, docs examples, public issue text, or published media.
206
+ - pnpm dependency build scripts may be allowed only inside the disposable E2B
207
+ lab so target app surfaces can start. Never use this as a host install
208
+ default.
144
209
  - No credential prompts; smoke clone calls set `GIT_TERMINAL_PROMPT=0`.
145
210
  - No commits, pushes, branches, tags, GitHub API mutation, deploys, or issue
146
211
  filing.
@@ -151,11 +216,13 @@ ignored `.mimetic/lab/oss/<run-id>/`.
151
216
  ## What This Proves
152
217
 
153
218
  The meta-lab proves the operator control surface and artifact contract for
154
- watching multiple Codex/E2B OSS setup attempts at once. The live path now proves
155
- E2B desktop fanout, visible bootstrap terminals, local-package upload, disposable
156
- public-repo setup, nested Mimetic proof generation, and nested Observer opening.
157
- It does not yet prove remote completion polling or a general provider-backed
158
- target-app persona runtime.
219
+ watching multiple Codex/E2B setup attempts at once. The live path now detects
220
+ E2B desktop fanout, visible bootstrap terminals, local-package upload,
221
+ disposable authorized-repo setup, target app HTTP readiness when a runnable
222
+ script is present, headed browser-window layout, nested live `--app-url`
223
+ desktop/mobile browser proof when the target app runs, nested Observer opening,
224
+ and top-level lane completion from remote evidence. It does not yet prove a
225
+ general provider-backed multi-step target-app persona runtime.
159
226
 
160
227
  The smoke harness proves first-run Mimetic package compatibility against
161
228
  arbitrary public JavaScript repositories:
@@ -168,3 +235,8 @@ arbitrary public JavaScript repositories:
168
235
 
169
236
  Neither path may claim private product behavior proof without live, redacted,
170
237
  public-safe evidence.
238
+
239
+ Feedback candidates are derived from this evidence when a lane records concrete
240
+ setup-quality gaps, ceremonial/absent study quality, or actor-reported Mimetic
241
+ CLI blockers. `mimetic feedback` uses those candidates before falling back to
242
+ generic dry-run follow-up drafts.
@@ -13,9 +13,9 @@ mimetic/ # committed source of simulation intent
13
13
  .mimetic/ # ignored runtime state, evidence, local overlays, and secrets
14
14
  ```
15
15
 
16
- Do not gitignore all Mimetic state. Personas, scenarios, policies, adapters,
17
- coverage maps, and review vocabulary are the harness. They must be versioned,
18
- reviewed, and reproducible from a clean clone.
16
+ Do not gitignore all Mimetic state. Labs, personas, scenarios, policies,
17
+ adapters, coverage maps, and review vocabulary are the harness. They must be
18
+ versioned, reviewed, and reproducible from a clean clone.
19
19
 
20
20
  Do not commit run bundles, raw screenshots, browser traces, transcripts,
21
21
  draft issue bodies before verification, local auth, local overrides, or secrets.
@@ -34,6 +34,8 @@ mimetic/
34
34
  scenarios/
35
35
  first-run-smoke.yaml
36
36
  onboarding-regression.yaml
37
+ labs/
38
+ first-run.yaml
37
39
  policies/
38
40
  redaction.yaml
39
41
  network.yaml
@@ -49,6 +51,29 @@ mimetic/
49
51
  synthetic-login-state.json
50
52
  ```
51
53
 
54
+ ## Mimetic Format Stack
55
+
56
+ Use formats based on who edits the file and how it is consumed:
57
+
58
+ - `.yaml` for human-authored Mimetic source: personas, scenarios, policies,
59
+ labs, review vocabulary, and review milestones. Prefer `.yaml` over `.yml`
60
+ for Mimetic-owned source files.
61
+ - `.ts` for executable project integration: `mimetic/config.ts`, adapters,
62
+ route catalogs, app launch plans, and logic that benefits from imports or
63
+ type checking.
64
+ - `.json` for generated machine artifacts and synthetic fixtures: run bundles,
65
+ observer data, review JSON, latest/history pointers, and fixture records.
66
+ - `.ndjson` for appendable event or transcript streams.
67
+ - `.yml` is acceptable for ecosystem files that conventionally use it, such as
68
+ `.github/workflows/*.yml`; do not use `.yml` for Mimetic-owned authored
69
+ source.
70
+
71
+ Do not convert personas or scenarios to JSON because parser implementation is
72
+ easier. Keep authored simulation intent readable, then validate it through
73
+ schemas and CLI checks. TOML is not part of the current Mimetic stack; add it
74
+ only if a concrete scalar global-config need appears that is better served by
75
+ TOML than YAML, TypeScript, or JSON.
76
+
52
77
  Committed files must be public-safe:
53
78
 
54
79
  - synthetic personas only;
@@ -79,7 +104,11 @@ visible in PR review.
79
104
  cache/
80
105
  tmp/
81
106
  logs/
107
+ labs/
82
108
  local/
109
+ labs/
110
+ personas/
111
+ policies/
83
112
  secrets/
84
113
  ```
85
114
 
@@ -99,11 +128,16 @@ When a team needs private local personas or credentials, use ignored overlays:
99
128
  ```text
100
129
  .mimetic/local/personas/*.yaml
101
130
  .mimetic/local/policies/*.yaml
131
+ .mimetic/local/labs/*.yaml
132
+ .mimetic/labs/*.yaml
102
133
  .mimetic/secrets/*
103
134
  ```
104
135
 
105
- The CLI should warn that local overlays cannot be used for reproducible CI or
106
- public issue drafts unless redacted into committed synthetic equivalents.
136
+ Committed `mimetic/labs/*.yaml` should be useful to anyone with a clean clone.
137
+ Ignored `.mimetic/labs/*.yaml` and `.mimetic/local/labs/*.yaml` are for
138
+ machine-specific or private dogfood labs. The CLI should warn that local
139
+ overlays cannot be used for reproducible CI or public issue drafts unless
140
+ redacted into committed synthetic equivalents.
107
141
 
108
142
  ## CI And Reproducibility
109
143
 
@@ -113,6 +147,7 @@ CI should reproduce proof from committed inputs:
113
147
  - `mimetic-cli` version;
114
148
  - `mimetic/config.ts`;
115
149
  - scenario and persona catalog;
150
+ - lab manifest;
116
151
  - policy files;
117
152
  - synthetic fixtures;
118
153
  - declared env var names.
@@ -129,4 +164,3 @@ weakened personas or dropped hard paths.
129
164
  A partially tracked dotdir is possible but worse UX. Dotdirs read as local,
130
165
  editors hide them, and negated gitignore rules are easy to break. A visible
131
166
  `mimetic/` source root plus ignored `.mimetic/` runtime root is clearer.
132
-
@@ -2,7 +2,7 @@
2
2
 
3
3
  Date: 2026-06-01
4
4
 
5
- Status: v0 dry-run contract implemented for local issue draft generation.
5
+ Status: v0 local issue draft generation with run-candidate support.
6
6
 
7
7
  ## Purpose
8
8
 
@@ -42,12 +42,17 @@ mimetic feedback issue-url --run latest --repo owner/repo
42
42
 
43
43
  ### `list`
44
44
 
45
- Reads feedback candidates from the run bundle. Does not mutate.
45
+ Reads feedback candidates from the run bundle. Does not mutate. Candidates are
46
+ generated by lab/adapters when actor evidence identifies a concrete
47
+ setup-quality gap, ceremonial/absent study quality, target-app blocker, or
48
+ Mimetic CLI blocker. The OSS
49
+ meta-lab is one maintainer dogfood example, not the only candidate source.
46
50
 
47
51
  ### `draft`
48
52
 
49
- Builds structured feedback from review output and raw evidence pointers. Writes
50
- a draft under the run bundle, not GitHub.
53
+ Builds structured feedback from the strongest run candidate first. If no
54
+ candidate is present, falls back to the dry-run contract follow-up. Writes a
55
+ draft under the run bundle, not GitHub.
51
56
 
52
57
  ### `verify`
53
58
 
@@ -75,20 +80,20 @@ mimetic_feedback:
75
80
  persona_id: "<persona-id-or-class>"
76
81
  actor: "<actor-runtime>"
77
82
  substrate: "<substrate>"
78
- failure_owner: "product_ux|agent_runtime|executor_substrate|payment_provider|model_provider|harness|unknown"
83
+ failure_owner: "harness|target-app|actor|environment|unknown"
79
84
  summary: "<public-safe concrete summary>"
80
85
  expected: "<public-safe expected behavior>"
81
86
  actual: "<public-safe observed behavior>"
82
87
  source_bundle: "<path-or-url>"
83
88
  evidence:
84
89
  - path: "<relative artifact pointer>"
85
- kind: "screenshot|terminal|browser|state|media|review|trace"
90
+ kind: "screenshot|state|review|trace|log|filesystem"
86
91
  note: "<public-safe note>"
87
92
  redaction:
88
93
  status: "passed|failed|not_applicable"
89
94
  notes: "<public-safe note>"
90
95
  idempotency_key: "<stable-key>"
91
- proposed_next_state: "watch|needs_spec|spec_ready|agent_ready|blocked|wontfix"
96
+ proposed_next_state: "watch|adapter-hardening|target-app-setup|actor-auth|setup-quality-review|study-quality-review"
92
97
  acceptance_proof:
93
98
  - "<command or artifact that would close this>"
94
99
  ```
@@ -97,12 +102,10 @@ mimetic_feedback:
97
102
 
98
103
  | Owner | Meaning |
99
104
  | --- | --- |
100
- | `product_ux` | The product confused, blocked, or failed the user/persona. |
101
- | `agent_runtime` | The actor model/tool runtime failed independent of product UX. |
102
- | `executor_substrate` | E2B, local browser, shell, filesystem, or network substrate failed. |
103
- | `payment_provider` | Hosted payment/provider behavior blocked the run. |
104
- | `model_provider` | Model/media provider behavior blocked the run. |
105
105
  | `harness` | Mimetic or adapter logic produced invalid evidence or execution. |
106
+ | `target-app` | The target app setup, dev server, or local surface blocked the run. |
107
+ | `actor` | The coding-agent/persona actor failed to complete a requested setup or usage path. |
108
+ | `environment` | E2B, local browser, shell, filesystem, network, or dependency substrate failed. |
106
109
  | `unknown` | Evidence is useful but ownership is not yet clear. |
107
110
 
108
111
  ## Issue Draft Gates
@@ -73,6 +73,7 @@ for credentials.
73
73
  | `no_network` | No external network calls. | contract docs, local unit tests |
74
74
  | `local_only` | Localhost and loopback only. | Observer, local fixtures |
75
75
  | `public_oss` | Public GitHub clone/fetch of owner/repo slugs only. | disposable OSS smoke |
76
+ | `authorized_private` | Token-backed clone/fetch of repos the maintainer is already authorized to access, with repo labels redacted by default. | local maintainer dogfood only |
76
77
  | `provider_substrate` | Explicit provider substrate such as hosted desktop streams. | live OSS lab with keys |
77
78
  | `custom_allowlist` | Adapter-declared public hosts. | target-specific adapters |
78
79
 
@@ -85,7 +86,8 @@ mode: public_oss
85
86
  allowedHosts:
86
87
  - github.com
87
88
  allowedRepoSlugs:
88
- - developit/mitt
89
+ - CorentinTh/it-tools
90
+ - drawdb-io/drawdb
89
91
  denied:
90
92
  - private remotes
91
93
  - SSH remotes
@@ -93,6 +95,11 @@ denied:
93
95
  - target repo mutation
94
96
  ```
95
97
 
98
+ Private maintainer dogfood must use `authorized_private` plus a redaction gate.
99
+ The repo name, screenshots, logs, source snippets, branch names, issue names,
100
+ and stream URLs remain local-only. Public receipts may include only redacted
101
+ labels, ignored artifact paths, and verifier status.
102
+
96
103
  ## Spend Policy
97
104
 
98
105
  Spend policy names when provider costs may be incurred.
@@ -114,7 +121,7 @@ providerClasses:
114
121
  - model
115
122
  - desktop_substrate
116
123
  operatorIntent:
117
- command: mimetic lab oss --json --no-open
124
+ command: mimetic lab run oss --json --no-open
118
125
  explicit: true
119
126
  budget:
120
127
  limit: unspecified
@@ -50,6 +50,13 @@ artifacts:
50
50
  review:
51
51
  schema: mimetic.review.v1
52
52
  verdict: "contract_proof_only|pass|fail|blocked|timed_out"
53
+ feedbackCandidates:
54
+ - schema: mimetic.feedback-candidate.v1
55
+ id: "<stable candidate id>"
56
+ failure_owner: "harness|target-app|actor|environment|unknown"
57
+ evidence:
58
+ - path: "<relative run artifact path>"
59
+ kind: "review|state|log|trace|screenshot|filesystem"
53
60
  ```
54
61
 
55
62
  ## Relative Artifact Layout
@@ -68,6 +75,61 @@ For run id `example-2026-06-02t10-00-00-000z-proof`, the core layout is:
68
75
  Absolute paths, traversal segments, remotes, hosted logs, and private artifact
69
76
  URLs are not part of the core layout.
70
77
 
78
+ ## Filesystem Evidence
79
+
80
+ Filesystem setup evidence is first-class when a lane asks an actor to install
81
+ or configure Mimetic inside another project. It is not a repo dump.
82
+
83
+ The durable artifact kind is `filesystem`. The current schema is:
84
+
85
+ ```yaml
86
+ schema: mimetic.setup-quality.v1
87
+ status: "passed|needs_review|blocked"
88
+ redaction:
89
+ status: "passed"
90
+ rawPreviews: "included|suppressed"
91
+ checks:
92
+ - id: "mimetic-config"
93
+ ok: true
94
+ tree:
95
+ - path: "mimetic/config.ts"
96
+ type: "file"
97
+ previews:
98
+ - path: "mimetic/config.ts"
99
+ language: "typescript"
100
+ studyQuality:
101
+ schema: mimetic.study-quality.v1
102
+ rating: "none|ceremonial|useful|high_leverage"
103
+ checks:
104
+ - id: "coverage-customized"
105
+ ok: true
106
+ signals:
107
+ appUrlProofBlocked: false
108
+ appUrlProofMentioned: true
109
+ actorInsightCaptured: true
110
+ coverageCustomized: true
111
+ personaCustomized: true
112
+ scenarioCustomized: true
113
+ packageScripts:
114
+ mimetic: "mimetic watch"
115
+ mimetic:
116
+ configPresent: true
117
+ personaCount: 1
118
+ scenarioCount: 1
119
+ packageScriptPresent: true
120
+ gitignoreContainsRuntimeIgnore: true
121
+ ```
122
+
123
+ For public OSS runs, previews may include allowlisted setup files such as
124
+ `package.json`, `.gitignore`, `mimetic/config.ts`, and
125
+ `mimetic/labs/*.yaml` / `mimetic/personas/*.yaml` /
126
+ `mimetic/scenarios/*.yaml`. For token-backed or private maintainer runs, raw
127
+ previews are suppressed by default. Generated state, `.git`, `.env*`, `.npmrc`,
128
+ browser profiles, `node_modules`, `.mimetic/`, and arbitrary source files are
129
+ not included. `studyQuality` is deliberately structural: it stores booleans,
130
+ checks, and a rating so private runs can preserve the useful quality signal
131
+ without committing raw private persona, scenario, or coverage text.
132
+
71
133
  ## Latest And History
72
134
 
73
135
  The latest pointer is a small local index:
@@ -27,6 +27,7 @@ workflow without leaking private upstream truth into core.
27
27
  | --- | --- | --- |
28
28
  | Run bundle | `mimetic.run-bundle.v1` | `synthetic-run-bundle` |
29
29
  | Adapter | `mimetic.adapter.v1` | `synthetic-cli-adapter` |
30
+ | Lab | `mimetic.lab.v1` | `first-run` |
30
31
  | Persona | `mimetic.persona.v1` | `synthetic-maintainer` |
31
32
  | Scenario | `mimetic.scenario.v1` | `first-run-smoke` |
32
33
  | Actor | `mimetic.actor.v1` | `synthetic-dry-run-actor` |
@@ -37,6 +38,26 @@ workflow without leaking private upstream truth into core.
37
38
  | Policy | `mimetic.policy.v1` | `public-safety-policy` |
38
39
  | Feedback | `mimetic.feedback.v1` | `public-safe-feedback` |
39
40
 
41
+ ## Lab Manifest
42
+
43
+ Lab manifests name reusable runs. They are human-authored `.yaml` source under
44
+ `mimetic/labs/*.yaml` for committed public-safe labs, or ignored
45
+ `.mimetic/labs/*.yaml` / `.mimetic/local/labs/*.yaml` for private local
46
+ dogfood.
47
+
48
+ Synthetic fixture:
49
+
50
+ ```yaml
51
+ schema: mimetic.lab.v1
52
+ id: first-run
53
+ kind: synthetic
54
+ title: First-run synthetic Observer
55
+ sims: 4
56
+ defaults:
57
+ dryRun: true
58
+ open: true
59
+ ```
60
+
40
61
  ## Run Bundle
41
62
 
42
63
  Run bundles are the canonical evidence record. Observer data, review Markdown,
@@ -1,6 +1,6 @@
1
1
  # Current Goals
2
2
 
3
- Status date: 2026-06-02
3
+ Status date: 2026-06-05
4
4
 
5
5
  This page is the current public-safe operating goal for `mimetic-cli`. Keep it
6
6
  short enough to reread before a coding session and concrete enough that future
@@ -24,9 +24,10 @@ A world-class Mimetic run should eventually provide:
24
24
  - multiple synthetic personas with different goals, patience, and skill levels;
25
25
  - UI, CLI, TUI, and code-agent lanes in one mission-control Observer;
26
26
  - real evidence: screenshots, terminal transcripts, lifecycle events, traces,
27
- artifacts, and verifier output;
27
+ filesystem setup-quality snapshots, artifacts, and verifier output;
28
28
  - clear pass, fail, blocked, and gap states;
29
29
  - public-safe feedback issue drafts that do not mutate GitHub by default;
30
+ - first-class `.yaml` lab manifests for reusable simulation runs;
30
31
  - adapter contracts that let projects customize behavior without forking core;
31
32
  - release gates that prevent PII, PHI, secrets, private artifacts, and stale
32
33
  internal residue from reaching the public repo or package.
@@ -39,10 +40,11 @@ Make the public package and repo credible enough that an external maintainer can
39
40
  2. install `mimetic-cli`;
40
41
  3. run `mimetic init`;
41
42
  4. run `mimetic watch`;
42
- 5. inspect Observer evidence;
43
- 6. verify the bundle;
44
- 7. produce a public-safe feedback draft;
45
- 8. understand the next live-adapter path without reading chat history.
43
+ 5. run `mimetic watch first-run` or another lab manifest;
44
+ 6. inspect Observer evidence;
45
+ 7. verify the bundle;
46
+ 8. produce a public-safe feedback draft;
47
+ 9. understand the next live-adapter path without reading chat history.
46
48
 
47
49
  ## Near-Term Goals
48
50
 
@@ -115,17 +117,40 @@ Minimum acceptance:
115
117
  - Observer polling reflects lane completion;
116
118
  - no raw private transcript or credential values.
117
119
 
118
- ### 6. OSS Lab Health Readback
120
+ ### 6. Lab Manifest Shape
119
121
 
120
- Make `mimetic lab oss` report nested lane health back into the top-level
121
- Observer instead of relying on a human watching the desktops.
122
+ Make reusable simulations feel like source artifacts, not hardcoded command
123
+ branches.
122
124
 
123
125
  Minimum acceptance:
124
126
 
125
- - each lane records setup status;
126
- - each lane records nested Observer URL or absence;
127
- - each lane records nested verification status or blocker;
128
- - top-level Observer updates lane verdicts from evidence.
127
+ - `mimetic/labs/*.yaml` is the committed lab source convention;
128
+ - `.mimetic/labs/*.yaml` and `.mimetic/local/labs/*.yaml` are ignored local
129
+ overlays;
130
+ - `mimetic watch [lab]`, `mimetic lab list`, `mimetic lab inspect <lab>`, and
131
+ `mimetic lab run <lab>` are supported;
132
+ - `--env-file <path>` loads local values for the current command without
133
+ persisting values into artifacts;
134
+ - maintainer dogfood labs such as `oss` are examples, not the canonical
135
+ consumer taxonomy.
136
+
137
+ ### 7. OSS Lab Health Readback
138
+
139
+ Make the maintainer `oss` lab report nested lane health back into the
140
+ top-level Observer instead of relying on a human watching the desktops.
141
+
142
+ Minimum acceptance:
143
+
144
+ - each lane records setup status; `done`
145
+ - each lane records target app status/URL or blocker; `done`
146
+ - each lane records nested Observer presence; `done`
147
+ - each lane records nested verification status or blocker; `done`
148
+ - each lane records setup-quality filesystem evidence and Observer can inspect
149
+ it; `done`
150
+ - top-level Observer updates lane verdicts from evidence; `done`
151
+ - feedback candidates are derived from setup-quality/actor evidence; `done`
152
+ - next gap: provider-backed browser personas must drive multi-step target-app
153
+ journeys instead of relying on nested app-url render proof.
129
154
 
130
155
  ## Non-Goals
131
156
 
@@ -150,14 +175,22 @@ Stop and correct course if:
150
175
  - Observer gets prettier without stronger evidence;
151
176
  - feedback drafts imply product proof from synthetic contract proof;
152
177
  - tests pass while generated artifacts are not inspectable;
178
+ - actor setup/use trials produce findings that never become feedback candidates;
153
179
  - live labs require private infrastructure to look impressive;
154
180
  - package docs link to files that are not shipped;
155
181
  - public-safety gates become optional.
156
182
 
157
183
  ## Best Next Work
158
184
 
159
- The next most useful engineering slice is fresh-agent install proof against a
160
- disposable public app fixture, followed by the first real browser adapter.
185
+ The next most useful engineering slice is repeated agent dogfood against real
186
+ apps and tools, while preserving the public-safety boundary:
187
+
188
+ - public/open-source fixture proof for publishable examples;
189
+ - private maintainer dogfood through the repo-only public-safe packet, which is
190
+ intentionally not part of the npm payload, at
191
+ [`docs/goals/private-repo-agent-dogfood/goal.md`](https://github.com/danielgwilson/mimetic-cli/blob/main/docs/goals/private-repo-agent-dogfood/goal.md);
192
+ - then the first provider-backed multi-step browser persona adapter.
161
193
 
162
- That sequence keeps the package honest: first prove a new maintainer can start,
163
- then prove Mimetic can observe real product behavior.
194
+ That sequence keeps the package honest: first prove a new maintainer or agent
195
+ can start, then prove Mimetic can observe real product behavior, then use the
196
+ failures to improve the harness.