@treeseed/dsh-chapters 0.1.6 → 0.1.8

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.
@@ -69,8 +69,8 @@ scripts/bootstrap-dev-profile.sh --with-probe # scripted rounds only (probe se
69
69
  | unit | `npm test` (`tests/unit`) | node --test, no build, no network | pure core: registry, render, archive, notice, engine-core, tools, commands |
70
70
  | integration | (today: probe rounds — see spikes/probe/README pattern) | boots real hosts in scratch homes | host wiring, realm mounts, provider economics |
71
71
  | e2e (tape — the default loop) | `npm run test:e2e:replay` | same boots with `E2E_MODEL=replay`; model turns answered from `tests/fixtures/model-tape/<project>` via the record/replay proxy (`tests/e2e/model-proxy.ts`) — seconds, deterministic |
72
- | e2e (distillation — occasional) | `npm run test:e2e:record` | `E2E_MODEL=record`: forwards every exchange to the real Local model and appends the tape. Run once per scenario; wipe `var/model-tape` first for a clean corpus; tapes are isolated per project (seven: suite/heavy/arrival/fanout/enrich/rules/fork); re-record when scenarios, prompts, or thresholds change. The GPU model is the DISTILLER, never the test oracle (user directive 2026-09-19) |
73
- | e2e | `npm run test:e2e` (`tests/e2e`, SEVEN projects: suite/heavy/arrival/fanout/enrich/rules/fork) | Playwright + workspace-cached chromium vs a throwaway `var/e2e-home-<port>` rebuilt per boot (port-keyed so no boot can stomp another's state) (isolated from live agents — see FINDINGS 2026-09-19) | the browser: identity, fork button + switch, knowledge loop end-to-end, the oversized turn (mid-turn compactions), the subagent fan-out, arrival-time artifacting (low-floor project) |
72
+ | e2e (distillation — occasional) | `npm run test:e2e:record` | `E2E_MODEL=record`: forwards every exchange to the real Local model and appends the tape. Run once per scenario; wipe `var/model-tape` first for a clean corpus; tapes are isolated per project (eight: suite/heavy/arrival/fanout/enrich/rules/fork/plans); re-record when scenarios, prompts, or thresholds change. The GPU model is the DISTILLER, never the test oracle (user directive 2026-09-19) |
73
+ | e2e | `npm run test:e2e` (`tests/e2e`, EIGHT projects: suite/heavy/arrival/fanout/enrich/rules/fork/plans) | Playwright + workspace-cached chromium vs a throwaway `var/e2e-home-<port>` rebuilt per boot (port-keyed so no boot can stomp another's state) (isolated from live agents — see FINDINGS 2026-09-19) | the browser: identity, fork button + switch, knowledge loop end-to-end, the oversized turn (mid-turn compactions), the subagent fan-out, arrival-time artifacting (low-floor project) |
74
74
 
75
75
  The e2e layer exists because client-plane facts were being GUESSED (services, methods, tooltips,
76
76
  switching) and every guess cost the user a browser round-trip. Playwright answers those in seconds
@@ -134,7 +134,7 @@ Re-record discipline (learned the hard way 2026-09-22/23):
134
134
  sweep files rather than by lowering the bar.
135
135
  - `npm run coverage` — the same deterministic suite under node's native
136
136
  `--experimental-test-coverage` (a quick second opinion; no gate).
137
- - `npm run coverage:e2e` — replays the seven browser segments with
137
+ - `npm run coverage:e2e` — replays the eight browser segments with
138
138
  `E2E_COVERAGE=1`, which makes every boot write NODE_V8_COVERAGE profiles
139
139
  under `var/e2e-cov/<port>` (flushed on the boot's clean exit), then runs
140
140
  `scripts/e2e-coverage.mjs` → **c8 with real source maps** (tsconfig
@@ -169,10 +169,15 @@ ship; `0.1.0` itself carries no attestation.
169
169
 
170
170
  - **`ci.yml`** — two jobs. `test`: `npm ci` (all deps public on
171
171
  registry.npmjs.org — **no install secret**), typecheck, build,
172
- `coverage:ci` (the 85/85/85/85 gate). `e2e-replay`: installs the pinned
172
+ `bash scripts/ci-gate.sh` (the 85/85/85/85 gate — since 0.1.6 the gate
173
+ ANNOTATES its own failure: metric lines, the pass/fail tally, up to 24
174
+ failing-test lines and c8's threshold verdicts as `::error::`, because on the
175
+ 0.1.6 tag a red gate left nothing behind but "exit code 1" while every local
176
+ reproduction of the same SHA was green; the summary step now runs
177
+ `if: always()`). `e2e-replay`: installs the pinned
173
178
  host (`npm i -g @deepseek-ai/dsh@0.1.5-rc.1` — the SAME version as the
174
179
  gate line in `scripts/ci-replay.sh`, which fails loudly on mismatch) plus
175
- chromium's apt libs, then `scripts/ci-replay.sh` — seven browser segments
180
+ chromium's apt libs, then `scripts/ci-replay.sh` — eight browser segments
176
181
  served entirely from the committed tapes. **No LLM, no key, no GPU:** in
177
182
  replay mode `localModelUp()` short-circuits to true (specs RUN, they do not
178
183
  skip) and a tape miss is a loud proxy 503, so a scenario that legitimately
@@ -114,6 +114,19 @@ here. So the machine-readable home for the full facts is the **chapter record**
114
114
  zod-validated in the registry, `src/store.ts`), which is what the notice builder consumes; the
115
115
  frontmatter line is the human-visible claim of the same fact, and the prose lives in the body block.
116
116
 
117
+ Display bounds, added at 0.1.8 (two of them — the second is the same mistake one scale down):
118
+
119
+ - the OUTLINE line is an index, not the document: `PLAN_OUTLINE_MAX_ENTRIES` (12) at
120
+ `PLAN_OUTLINE_TITLE_MAX` (60) chars each, and when entries are dropped the block says
121
+ `+more (chapters_artifact 'toc' lists every heading)`. A silently shortened index is the lie this store
122
+ exists to avoid, so truncation is always announced and the full map is one query away.
123
+ - the TITLE is printed at most 120 characters
124
+ (`PLAN_TITLE_MAX`, `src/plans.ts`) — a 4 KB H1 would otherwise have been repeated in every chapter carrying it
125
+ AND in every child notice built from that path, unbounded and un-costed until the budget gate refused the
126
+ continuation. The artifact keeps the heading whole; only the display is bounded, which is the same
127
+ distinction `planInlineChars` draws for the body. Closed ATX headings (`# Title #`) lose their trailing
128
+ hashes in the title, not in the bytes.
129
+
117
130
  The sha256 anchor convention must hash what `parseChapterFile`
118
131
  returns — body **including** the trailing newline (`src/engine-core.ts:297-302`; the T9 lesson: a
119
132
  mismatch silently blocked enrichment for an era).
@@ -218,8 +231,43 @@ Registry note: **do not** use `state.plans` — that name is the compaction mani
218
231
  product prompt *is* edited (personas, tool descriptions, notice text), the rule stands: re-record
219
232
  **whole projects**, never one spec of a shared boot.
220
233
  - New e2e project `plans` (own boot, own `E2E_PORT`, throwaway home `var/e2e-home-<port>`, one journey =
221
- one boot — the fork- and fanout-carve-out lesson), recorded once with `npm run test:e2e:record`, then
222
- replayed. Prompts must be tool-free **in words the model obeys** (the RR2 OOM lesson).
234
+ one boot — the fork- and fanout-carve-out lesson), recorded once then replayed. Prompts must be
235
+ tool-free **in words the model obeys** (the RR2 OOM lesson). **LANDED 2026-10-10 as the eighth chain
236
+ project** — but NOT from the live model: the box's `:8080` server closed the stream mid-turn
237
+ (`turn/end` `reason {kind:"error", code:"TRANSPORT"}`), so the tape was distilled through the scripted
238
+ upstream `tests/e2e/stub-model.ts` (wire format copied form-for-form from recorded llama.cpp traffic).
239
+ `tests/fixtures/model-tape/plans/PROVENANCE.md` states what that proves (the whole carriage, in a real
240
+ browser, against the real review channel) and what it does not (a model choosing to plan), and carries
241
+ the re-record command that retires the stub.
242
+
243
+ ### What the browser plane corrected (this is why it exists)
244
+
245
+ Every item below was an assumption the deterministic plane had encoded — and the live run said otherwise:
246
+
247
+ - **`planMode:` at a plan's chapter end is `inactive`, not `active`.** Approving a plan EXITS plan mode,
248
+ and the host appends that flip at the next accepted pre-step — inside the same turn, before
249
+ `turn/end`. My expectation said `active`; the archived chapter said `inactive`, and both mode flips
250
+ printed. The fold was right; my belief was wrong.
251
+ - **The toolbar chip is an EXIT control only.** `PlanModeControl` renders when
252
+ `plan.pending ? !plan.active : plan.active` (`dsh-client-ui-plan/lib/client.js:39-41`), so there is no
253
+ "press to turn plan mode ON". Entry is `/plan <message>` in the composer, which appends
254
+ `plan/mode {active:true}` before the turn and steers the text as one real user message. Learning that
255
+ cost one 40-minute timeout on a locator that could never appear.
256
+ - **`text=Approve this plan…` hangs; `getByRole('region', {name: /Approve this plan/})` does not.** The
257
+ question is the review REGION's accessible name, not matchable element text — read off the failure
258
+ snapshot, which is the only honest way to find this out.
259
+ - **A seeded event read out of the session log is JSON-escaped.** `expect(raw).toMatch(/ACTIVE PLAN: "x"/)`
260
+ can pass as a substring and fail as a regex; parse the event and assert on `data.content[0].text`.
261
+ - **`expect.poll(..., {intervals: 3000})` throws a TypeError** — intervals is an array. Trivial, but it
262
+ killed the first two recording runs.
263
+ - **A scripted upstream that string-matches the message array lies confidently.** The stub's first
264
+ `decide()` searched all messages for `exit_plan_mode`/`approved` — both words live in the SYSTEM PROMPT
265
+ (tool catalog + plan policy), so every turn answered as if the review were done and the review card
266
+ never opened. The honest signal is the transcript's SHAPE (`role:'tool'` exists only once a tool ran).
267
+ Pinned by `tests/unit/stub-model.test.ts`, because a stub that answers wrongly records a tape of a
268
+ session that never planned.
269
+ - **Acceptance assertions must be scoped to the session tree the run created.** Scanning the whole store
270
+ lets a previous run's plan satisfy the next run — a green that proves nothing.
223
271
  - Coverage: `npm run coverage:ci` gate (≥85 all four) must stay green; `src/plans.ts` is pure and gets a
224
272
  full-branch row like the other planners, and the new `render.ts` arms need the success/refusal
225
273
  surface covered the way the 2026-09-23 sweep did it.
@@ -253,7 +301,9 @@ Registry note: **do not** use `state.plans` — that name is the compaction mani
253
301
  | 4 | `plansSection` in `assembleNotice` + wiring + config register | done — P5/P8/P9 |
254
302
  | 5 | Site docs (§9 anatomy, §16 tools, §17 configuration, §18 notice) | done in the same release |
255
303
  | — | Seven-segment tape replay | green WITHOUT re-recording (2026-10-09, `npm run test:e2e:replay`, EXIT=0) |
256
- | — | `plans` browser journey | spec written as the `plans-dev` project; **awaits its tape** (no live Local model on this box — it self-skips, and is deliberately outside the CI chain until recorded) |
304
+ | — | `plans` browser journey | LANDED as the eighth chain project (2026-10-10): `tests/e2e/plans.spec.ts` passes in 13 s against `tests/fixtures/model-tape/plans/`, and the full eight-project chain is `CHAIN_EXIT=0` / 9 tests. Its tape is scripted-upstream distilled — see § Tapes and `PROVENANCE.md` |
305
+ | — | Follow-up, not blocking | re-record the `plans` tape from the live model — ATTEMPTED TWICE on 2026-10-10 and both times the model container dropped the stream mid-turn (`TRANSPORT`), one after 15 minutes with zero tool calls; `PROVENANCE.md` says what to check first. The carriage evidence does not change, only the claim about model behaviour |
306
+ | — | Browser-plane ledger | `npm run coverage:e2e` over all EIGHT replays: **79.92 stmts / 64.64 branch / 76.28 funcs** — the non-gated plane, reported rather than tuned (the deterministic gate is the enforced one) |
257
307
 
258
308
  Deterministic ledger at landing: **549 unit+integration rows, zero failures** with the TreeDX container
259
309
  up (80 of them new, across `plans`, `render-plans`, `continue-plans`, `plans-segmentation`, `plans-tools`,
package/docs/verify.md CHANGED
@@ -150,7 +150,7 @@ renderer, the segmentation tool, and the child's notice.
150
150
  | P8 | A plan-less path is byte-identical to pre-feature | no `## Plans in this chapter` block, no `plans:`/`planMode:` frontmatter lines, no `## Plans` in the notice, and `chapters_segment` emits no `planHint` — the whole feature is conditional on there being a plan | unit `render-plans.test.ts`, `continue-plans.test.ts`, `plans-segmentation.test.ts`, `plans-tools.test.ts`; integration `plans-carriage.test.ts` |
151
151
  | P9 | Both carriage paths agree | the CONTINUATION path (`chapters_continue`) and the ENGINE path (in-place `summarize`/finalize) render the same block and the same record facts, including a verdict that lands past a composed chapter boundary — which is why `renderChapter` scans the whole event list, not its own range | unit `plans-engine.test.ts` (5) + `render-plans.test.ts`; zod round-trip of `plans`/`planMode` through the registry in `plans-engine.test.ts`, legacy rows gaining nothing |
152
152
  | P10 | Artifact citations resolve wherever they were written | a chapter's `artifacts/aa/<sha>.txt` reference resolves whether the blob sits at the STORE ROOT (arrival stubs) or inside the ANCESTRY TREE (`<store>/<root>/artifacts/…`, where `writeArchive` puts deferred results and every plan) — before this fix the second form was unreadable through `chapters_artifact`, which is what "every byte remains retrievable" actually promised | `artifact-query.test.ts` rows + integration `plans-carriage.test.ts` (`resolveArtifactWithMirror` over the real tree) |
153
- | P11 | The browser plane, once recorded | `/plan <message>` → model submits → user approves in the plan-review card → fork → the child's own log carries `ACTIVE PLAN: … APPROVED` and the plan blob exists with its full bytes | `tests/e2e/plans.spec.ts` (project `plans-dev`) — SELF-SKIPS without the live Local model; NOT in the CI chain until its tape is recorded on the GPU box (docs/plans-carriage.md § Tapes) |
153
+ | P11 | The browser plane RUNS in the chain | `/plan <message>` → a real `exit_plan_mode` call → the host's review card opened and answered by a CLICK → fork → the child's ONE seeded event calls the plan out, the chapter carries the block, the artifact holds the plan byte-for-byte, and the folded `planMode:` is `inactive` because approving EXITS plan mode | `tests/e2e/plans.spec.ts` = chain project `plans` (eighth), replayed from `tests/fixtures/model-tape/plans/` in 13 s with no LLM. **Provenance: that tape was distilled from the scripted upstream `tests/e2e/stub-model.ts`, not the live model** (the box's `:8080` dropped the stream mid-journey) — `tests/fixtures/model-tape/plans/PROVENANCE.md` says precisely what it does and does not prove, plus the re-record command that retires the stub. The stub's own turn policy is pinned by `tests/unit/stub-model.test.ts` (4 rows): a stub that answers wrongly records a tape of a session that never planned |
154
154
 
155
155
  ## The Cache Metric, Before You Trust a Number
156
156
 
package/lib/plans.d.ts CHANGED
@@ -66,12 +66,27 @@ export interface PlanScan {
66
66
  /** Last logged value wins (the host projection rule). Null when no event exists. */
67
67
  modeActive: boolean | null;
68
68
  }
69
- /** The first markdown heading at any level, or '' when the payload has none. */
69
+ /**
70
+ * The first markdown heading at any level, or '' when the payload has none. The
71
+ * DISPLAY title is bounded: a plan whose H1 is a 4KB paragraph would otherwise be
72
+ * printed in full in every chapter that carries it and again in every child notice
73
+ * built from that path. Bounded here, not at the call sites — and the artifact keeps
74
+ * the untouched heading, because the artifact keeps every byte.
75
+ */
76
+ export declare const PLAN_TITLE_MAX = 120;
70
77
  export declare function planTitleOf(text: string): string;
78
+ /** Outline budget: entries × chars. An outline is an INDEX, not the document — the
79
+ * full heading map with line numbers is one `chapters_artifact toc` call away, so
80
+ * printing 24 unbounded headings per plan (a 4 KB H2 is a real thing people write)
81
+ * would repeat the 0.1.8 mistake at a smaller scale. */
82
+ export declare const PLAN_OUTLINE_MAX_ENTRIES = 12;
83
+ export declare const PLAN_OUTLINE_TITLE_MAX = 60;
71
84
  /**
72
85
  * The plan's own table of contents: H2/H3 headings in document order, with fenced
73
86
  * blocks excluded so a `# comment` inside a code sample never poses as a heading
74
- * (the same discipline `artifact-query.buildToc` applies to stored blobs).
87
+ * (the same discipline `artifact-query.buildToc` applies to stored blobs). Each
88
+ * entry is bounded; when entries are dropped a trailing `+N more` says so — a
89
+ * silently shortened index is the lie this codebase exists to avoid.
75
90
  */
76
91
  export declare function planOutlineOf(text: string, maxEntries?: number): {
77
92
  outline: string[];
package/lib/plans.js CHANGED
@@ -5,23 +5,41 @@ export const PLAN_MODE_EVENT = 'plan/mode';
5
5
  const RE_APPROVED = /(?:\{\s*"?approved"?\s*:\s*true)|(?:plan approved\b)/i;
6
6
  const RE_DISMISSED = /dismissed the plan review|to speak instead/i;
7
7
  const RE_KEEP_PLANNING = /keep planning/i;
8
- /** The first markdown heading at any level, or '' when the payload has none. */
8
+ /**
9
+ * The first markdown heading at any level, or '' when the payload has none. The
10
+ * DISPLAY title is bounded: a plan whose H1 is a 4KB paragraph would otherwise be
11
+ * printed in full in every chapter that carries it and again in every child notice
12
+ * built from that path. Bounded here, not at the call sites — and the artifact keeps
13
+ * the untouched heading, because the artifact keeps every byte.
14
+ */
15
+ export const PLAN_TITLE_MAX = 120;
9
16
  export function planTitleOf(text) {
10
17
  for (const line of text.split('\n')) {
11
18
  const m = /^#{1,6}\s+(.+?)\s*$/.exec(line);
12
- if (m !== null)
13
- return m[1];
19
+ if (m === null)
20
+ continue;
21
+ const title = m[1].replace(/\s+#+\s*$/, ''); // closed ATX heading: "# Title #"
22
+ return title.length > PLAN_TITLE_MAX ? `${title.slice(0, PLAN_TITLE_MAX - 1).trimEnd()}…` : title;
14
23
  }
15
24
  return '';
16
25
  }
26
+ /** Outline budget: entries × chars. An outline is an INDEX, not the document — the
27
+ * full heading map with line numbers is one `chapters_artifact toc` call away, so
28
+ * printing 24 unbounded headings per plan (a 4 KB H2 is a real thing people write)
29
+ * would repeat the 0.1.8 mistake at a smaller scale. */
30
+ export const PLAN_OUTLINE_MAX_ENTRIES = 12;
31
+ export const PLAN_OUTLINE_TITLE_MAX = 60;
17
32
  /**
18
33
  * The plan's own table of contents: H2/H3 headings in document order, with fenced
19
34
  * blocks excluded so a `# comment` inside a code sample never poses as a heading
20
- * (the same discipline `artifact-query.buildToc` applies to stored blobs).
35
+ * (the same discipline `artifact-query.buildToc` applies to stored blobs). Each
36
+ * entry is bounded; when entries are dropped a trailing `+N more` says so — a
37
+ * silently shortened index is the lie this codebase exists to avoid.
21
38
  */
22
- export function planOutlineOf(text, maxEntries = 24) {
39
+ export function planOutlineOf(text, maxEntries = PLAN_OUTLINE_MAX_ENTRIES) {
23
40
  const outline = [];
24
41
  const levels = [];
42
+ let truncated = false;
25
43
  let inFence = false;
26
44
  let fenceChar = '';
27
45
  for (const line of text.split('\n')) {
@@ -41,11 +59,16 @@ export function planOutlineOf(text, maxEntries = 24) {
41
59
  const m = /^(#{2,3})\s+(.+?)\s*$/.exec(line);
42
60
  if (m === null)
43
61
  continue;
44
- if (outline.length >= maxEntries)
62
+ if (outline.length >= maxEntries) {
63
+ truncated = true;
45
64
  break;
46
- outline.push(m[2]);
65
+ }
66
+ const heading = m[2].replace(/\s+#+\s*$/, '');
67
+ outline.push(heading.length > PLAN_OUTLINE_TITLE_MAX ? `${heading.slice(0, PLAN_OUTLINE_TITLE_MAX - 1).trimEnd()}…` : heading);
47
68
  levels.push(m[1].length);
48
69
  }
70
+ if (truncated)
71
+ outline.push(`+more (chapters_artifact 'toc' lists every heading)`);
49
72
  return { outline, levels };
50
73
  }
51
74
  /**
package/lib/plans.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treeseed/dsh-chapters",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "dsh plugin: verbatim chapter archive + zero-token index for small-context models",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -45,7 +45,7 @@
45
45
  "build": "tsc -p tsconfig.json && tsdown -c tsdown.client.config.ts",
46
46
  "build:client": "tsdown -c tsdown.client.config.ts",
47
47
  "test:unit": "node --test tests/unit/*.test.ts",
48
- "test:e2e": "PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=suite playwright test -c tests/e2e/playwright.config.ts --project=suite && E2E_PORT=41733 E2E_THRESHOLD=0.5 E2E_FLOOR=1000000 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=heavy playwright test -c tests/e2e/playwright.config.ts --project=heavy && E2E_PORT=41732 E2E_THRESHOLD=0.9 E2E_FLOOR=500 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=arrival playwright test -c tests/e2e/playwright.config.ts --project=arrival && E2E_PORT=41734 E2E_THRESHOLD=0.9 E2E_ENRICH=1 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=enrich playwright test -c tests/e2e/playwright.config.ts --project=enrich && E2E_PORT=41736 E2E_THRESHOLD=0.75 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=fanout playwright test -c tests/e2e/playwright.config.ts --project=fanout && E2E_PORT=41735 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=rules playwright test -c tests/e2e/playwright.config.ts --project=rules && E2E_PORT=41737 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=fork playwright test -c tests/e2e/playwright.config.ts --project=fork",
48
+ "test:e2e": "PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=suite playwright test -c tests/e2e/playwright.config.ts --project=suite && E2E_PORT=41733 E2E_THRESHOLD=0.5 E2E_FLOOR=1000000 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=heavy playwright test -c tests/e2e/playwright.config.ts --project=heavy && E2E_PORT=41732 E2E_THRESHOLD=0.9 E2E_FLOOR=500 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=arrival playwright test -c tests/e2e/playwright.config.ts --project=arrival && E2E_PORT=41734 E2E_THRESHOLD=0.9 E2E_ENRICH=1 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=enrich playwright test -c tests/e2e/playwright.config.ts --project=enrich && E2E_PORT=41736 E2E_THRESHOLD=0.75 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=fanout playwright test -c tests/e2e/playwright.config.ts --project=fanout && E2E_PORT=41735 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=rules playwright test -c tests/e2e/playwright.config.ts --project=rules && E2E_PORT=41737 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=fork playwright test -c tests/e2e/playwright.config.ts --project=fork && E2E_PORT=41738 E2E_THRESHOLD=0.9 PLAYWRIGHT_BROWSERS_PATH=$PWD/var/ms-playwright E2E_TAPE=plans playwright test -c tests/e2e/playwright.config.ts --project=plans",
49
49
  "test:all": "npm test && npm run test:e2e",
50
50
  "test:integration": "node --test tests/integration/*.test.ts",
51
51
  "test:e2e:record": "E2E_MODEL=record npm run test:e2e",