@molecule/api-ai-tools 1.14.4 → 1.14.6

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 (45) hide show
  1. package/README.md +236 -190
  2. package/dist/browser-probe.d.ts +4 -4
  3. package/dist/browser-probe.d.ts.map +1 -1
  4. package/dist/browser-probe.js +5 -5
  5. package/dist/command-position.d.ts +15 -16
  6. package/dist/command-position.d.ts.map +1 -1
  7. package/dist/command-position.js +21 -23
  8. package/dist/cut-run.d.ts +9 -9
  9. package/dist/cut-run.js +6 -6
  10. package/dist/failure-kind.d.ts +6 -6
  11. package/dist/failure-kind.js +6 -6
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.js +2 -2
  14. package/dist/inline-script.d.ts +5 -5
  15. package/dist/inline-script.js +6 -6
  16. package/dist/line-diff.d.ts +2 -3
  17. package/dist/line-diff.d.ts.map +1 -1
  18. package/dist/line-diff.js +2 -3
  19. package/dist/no-test-run.d.ts +5 -5
  20. package/dist/no-test-run.d.ts.map +1 -1
  21. package/dist/no-test-run.js +9 -8
  22. package/dist/output-filter.d.ts +2 -2
  23. package/dist/output-filter.js +2 -2
  24. package/dist/pipeline-exit-note.d.ts +1 -1
  25. package/dist/pipeline-exit-note.js +1 -1
  26. package/dist/playwright-report.d.ts +1 -1
  27. package/dist/playwright-report.js +1 -1
  28. package/dist/server-command.d.ts +2 -2
  29. package/dist/server-command.js +2 -2
  30. package/dist/sleep-peek.d.ts +1 -1
  31. package/dist/sleep-peek.js +1 -1
  32. package/dist/suite-overlap.d.ts +24 -25
  33. package/dist/suite-overlap.d.ts.map +1 -1
  34. package/dist/suite-overlap.js +41 -43
  35. package/dist/tools.d.ts +26 -28
  36. package/dist/tools.d.ts.map +1 -1
  37. package/dist/tools.js +98 -69
  38. package/dist/trace-artifacts.d.ts +64 -65
  39. package/dist/trace-artifacts.d.ts.map +1 -1
  40. package/dist/trace-artifacts.js +73 -75
  41. package/dist/types.d.ts +5 -5
  42. package/dist/utilities.d.ts +107 -91
  43. package/dist/utilities.d.ts.map +1 -1
  44. package/dist/utilities.js +191 -143
  45. package/package.json +2 -2
@@ -9,13 +9,13 @@
9
9
  * prints with `--help`/`--version`, the same way.
10
10
  *
11
11
  * Every check in the platform read such a command as a whole-suite run, because each one
12
- * matched the runner's NAME. X1 xr-molecule-flash-m79's first Playwright command was a config
12
+ * matched the runner's NAME. A first Playwright command that was a config
13
13
  * check — a config written to `/tmp`, `cp`'d beside the suite and used with `--list` — and it
14
14
  * came back HELD, `status: not_run`, with a ~4 KB `suiteNote` telling it to send the same
15
15
  * command with `--max-failures=15` ("uncapped it walks every test … 8–13 minutes"), beside an
16
16
  * environment block saying the run "ran on their defaults" and an import note about a path the
17
17
  * `cp` had already fixed. Nothing ran. The model gave up on the approach, wrote a second
18
- * config, and its next command was held again (flash-m74's "same command three times" shape):
18
+ * config, and its next command was held again ("same command three times" shape):
19
19
  * two holds, zero tests, and the config check it asked for never answered.
20
20
  *
21
21
  * So the classifiers live here, in one place, and callers ask them instead of their own
@@ -27,8 +27,8 @@
27
27
  * What counts as an invocation is COMMAND POSITION, read by `@molecule/api-ai-tools`'
28
28
  * `commandSegments`: `npx playwright test --list`, `hurl --help` and `bash run.sh` invoke the
29
29
  * runner, while a runner named as an argument (`grep -n playwright e2e/README.md`,
30
- * `head -30 run-api-tests-hurl.sh`) invokes nothing at all. X1 xr-molecule-flash-m81 (+20:03)
31
- * read a runner script with `head -30` and the suite-overlap hold answered "a Playwright suite is
30
+ * `head -30 run-api-tests-hurl.sh`) invokes nothing at all. Reading a runner script with
31
+ * `head -30` has had the suite-overlap hold answer "a Playwright suite is
32
32
  * already running … wait for it", for a command that runs nothing.
33
33
  *
34
34
  * @module
@@ -84,9 +84,10 @@ const NO_RUN_FLAGS = {
84
84
  * account for: the suite's own script (`./run-api-tests-hurl.sh`), a wrapper the executor wrote,
85
85
  * anything that may itself start a suite. {@link commandRunsNoTests} answers false for a command
86
86
  * carrying one — "every invocation only prints" is not a claim an unknown step can support.
87
- * X1 xr-molecule-flash-m197 (+05:18) sent
88
- * `hurl --version | head -2 && HOST=http://localhost:4000 ./run-api-tests-hurl.sh 2>&1 | tail -60`,
89
- * the suite passed 13/13, and the supplied script was the one segment nobody could place: the
87
+ * A command like
88
+ * `hurl --version | head -2 && HOST=http://localhost:4000 ./run-api-tests-hurl.sh 2>&1 | tail -60`
89
+ * ran a suite that passed 13/13, and the supplied script was the one segment nobody could place:
90
+ * the
90
91
  * whole command read as a version probe, so every "has the suite run?" reader said no for the
91
92
  * rest of the run and the early deploy was held to the end of the list.
92
93
  */
@@ -207,7 +208,7 @@ function informational(runner, after) {
207
208
  * position of a segment, after its wrapper prefixes. A runner named in an argument is not an
208
209
  * invocation — `head -30 run-api-tests-hurl.sh` and `grep -n playwright e2e/README.md` name a
209
210
  * file to read, and a `--list` written inside a file the command writes is not a flag anyone runs
210
- * with (flash-m81).
211
+ * with.
211
212
  *
212
213
  * A command that invokes no runner is NOT one of these (false): "the command runs no test" is
213
214
  * then true for `ls`, which is not the question any caller is asking. The question is whether
@@ -2,7 +2,7 @@
2
2
  * A run whose own command piped its output through `tail`/`head`/`grep`/`sed`/`awk`/`cut`, so the
3
3
  * failure the runner printed is not in what came back.
4
4
  *
5
- * xr-molecule-flash-m147 (+10:12) sent `hurl --variable uid=… --test /tmp/t.hurl 2>&1 | tail -6`.
5
+ * A command sent `hurl --variable uid=… --test /tmp/t.hurl 2>&1 | tail -6`.
6
6
  * The six lines that survived are Hurl's closing tally; the failed assertion was above the cut.
7
7
  * The platform, seeing a red run with no assertion block, said the cause was "the transport or the
8
8
  * run itself" — a sentence that sends the reader at the network for a status assertion it never
@@ -50,7 +50,7 @@ export interface RunnerOutputFilter {
50
50
  * {@link CommandSegment.program} is the program, once wrapper words like `timeout 280` and
51
51
  * `npx` are taken away).
52
52
  * @param occurrence - Which runner invocation the output belongs to, 1-based. A command can run
53
- * the same runner more than once (xr-molecule-flash-m170: the suite bare, then with `HOST=…`),
53
+ * the same runner more than once (the suite bare, then with `HOST=…`),
54
54
  * and each invocation carries its OWN pipe; a reader judging the second walk must name the
55
55
  * second walk's cut, never the first's.
56
56
  * @returns The filter and the unfiltered command, or null.
@@ -2,7 +2,7 @@
2
2
  * A run whose own command piped its output through `tail`/`head`/`grep`/`sed`/`awk`/`cut`, so the
3
3
  * failure the runner printed is not in what came back.
4
4
  *
5
- * xr-molecule-flash-m147 (+10:12) sent `hurl --variable uid=… --test /tmp/t.hurl 2>&1 | tail -6`.
5
+ * A command sent `hurl --variable uid=… --test /tmp/t.hurl 2>&1 | tail -6`.
6
6
  * The six lines that survived are Hurl's closing tally; the failed assertion was above the cut.
7
7
  * The platform, seeing a red run with no assertion block, said the cause was "the transport or the
8
8
  * run itself" — a sentence that sends the reader at the network for a status assertion it never
@@ -39,7 +39,7 @@ const CUTTING_FILTERS = new Set(['awk', 'cut', 'grep', 'head', 'sed', 'tail']);
39
39
  * {@link CommandSegment.program} is the program, once wrapper words like `timeout 280` and
40
40
  * `npx` are taken away).
41
41
  * @param occurrence - Which runner invocation the output belongs to, 1-based. A command can run
42
- * the same runner more than once (xr-molecule-flash-m170: the suite bare, then with `HOST=…`),
42
+ * the same runner more than once (the suite bare, then with `HOST=…`),
43
43
  * and each invocation carries its OWN pipe; a reader judging the second walk must name the
44
44
  * second walk's cut, never the first's.
45
45
  * @returns The filter and the unfiltered command, or null.
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * `npx tsc --noEmit 2>&1 | head -40` reports `head`'s 0 while the output above it carries a type
6
6
  * error, and `… | head -40 && tail -30 missing.log` reports `tail`'s 1 while the checker was clean —
7
- * both measured in xr-molecule-flash-m117 (+04:06, +08:05). A model that trusts the code concludes
7
+ * both are the same reading. A model that trusts the code concludes
8
8
  * "clean" and ships a build that does not compile, or hunts an error that is not there. This module
9
9
  * says which stage produced the code, and what the output actually carries, in one sentence beside
10
10
  * `exitCode`.
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * `npx tsc --noEmit 2>&1 | head -40` reports `head`'s 0 while the output above it carries a type
6
6
  * error, and `… | head -40 && tail -30 missing.log` reports `tail`'s 1 while the checker was clean —
7
- * both measured in xr-molecule-flash-m117 (+04:06, +08:05). A model that trusts the code concludes
7
+ * both are the same reading. A model that trusts the code concludes
8
8
  * "clean" and ships a build that does not compile, or hunts an error that is not there. This module
9
9
  * says which stage produced the code, and what the output actually carries, in one sentence beside
10
10
  * `exitCode`.
@@ -5,7 +5,7 @@
5
5
  * preserves a file reporter the executor named ({@link ./utilities.js} `withPlaywrightRunReport`,
6
6
  * `streamingBackgroundCommand`). That log is text: which failure a trace, a route or a locator
7
7
  * belongs to has to be reconstructed from printed headings, and a mis-join reads one failing
8
- * test's evidence as another's (xr-molecule-flash-m411). Playwright already writes the answer down
8
+ * test's evidence as another's. Playwright already writes the answer down
9
9
  * itself — its built-in `json` reporter records every test's own identity (project, file, line,
10
10
  * column, title path, status, retries) and every attachment the runner saved for THAT test, path
11
11
  * included.
@@ -5,7 +5,7 @@
5
5
  * preserves a file reporter the executor named ({@link ./utilities.js} `withPlaywrightRunReport`,
6
6
  * `streamingBackgroundCommand`). That log is text: which failure a trace, a route or a locator
7
7
  * belongs to has to be reconstructed from printed headings, and a mis-join reads one failing
8
- * test's evidence as another's (xr-molecule-flash-m411). Playwright already writes the answer down
8
+ * test's evidence as another's. Playwright already writes the answer down
9
9
  * itself — its built-in `json` reporter records every test's own identity (project, file, line,
10
10
  * column, title path, status, retries) and every attachment the runner saved for THAT test, path
11
11
  * included.
@@ -4,7 +4,7 @@
4
4
  * (`molecule-dev/api/src/ai/own-server-note.ts` imports {@link SERVER_PROGRAM} and
5
5
  * {@link BACKGROUNDED} from here), so every surface that names a server names the same commands.
6
6
  *
7
- * X1 xr-molecule-flash-m167 (+19:16 → +24:04) wrote `/tmp/probe.mts` whose body imports the app's
7
+ * A probe wrote `/tmp/probe.mts` whose body imports the app's
8
8
  * `api/src/server.ts` and calls its `create(0)`, then ran it in the FOREGROUND:
9
9
  * `npx tsx --env-file=.env /tmp/probe.mts 2>&1 | tail -15`. The scaffold's `create()` calls
10
10
  * `server.listen(port)` and returns the server, so the process never exits — and behind `| tail`
@@ -29,7 +29,7 @@ export declare const BACKGROUNDED: RegExp;
29
29
  * when the command only names the script file — but NEVER against an inline program's code
30
30
  * (`node -e …`, `python3 -c …`), where this text is the user's program rather than a file being
31
31
  * run: `require('…/node_modules/vite')` imports a module, it does not start a dev server
32
- * (xr-molecule-flash-m391 +13:13, refused as "node starts a server" for exactly that line).
32
+ * (refused as "node starts a server" for exactly that line).
33
33
  */
34
34
  export declare const SERVER_PROGRAM: RegExp;
35
35
  /**
@@ -4,7 +4,7 @@
4
4
  * (`molecule-dev/api/src/ai/own-server-note.ts` imports {@link SERVER_PROGRAM} and
5
5
  * {@link BACKGROUNDED} from here), so every surface that names a server names the same commands.
6
6
  *
7
- * X1 xr-molecule-flash-m167 (+19:16 → +24:04) wrote `/tmp/probe.mts` whose body imports the app's
7
+ * A probe wrote `/tmp/probe.mts` whose body imports the app's
8
8
  * `api/src/server.ts` and calls its `create(0)`, then ran it in the FOREGROUND:
9
9
  * `npx tsx --env-file=.env /tmp/probe.mts 2>&1 | tail -15`. The scaffold's `create()` calls
10
10
  * `server.listen(port)` and returns the server, so the process never exits — and behind `| tail`
@@ -31,7 +31,7 @@ export const BACKGROUNDED = /(?:^|[^&>])&(?!&|>)|\b(?:nohup|setsid)\b/;
31
31
  * when the command only names the script file — but NEVER against an inline program's code
32
32
  * (`node -e …`, `python3 -c …`), where this text is the user's program rather than a file being
33
33
  * run: `require('…/node_modules/vite')` imports a module, it does not start a dev server
34
- * (xr-molecule-flash-m391 +13:13, refused as "node starts a server" for exactly that line).
34
+ * (refused as "node starts a server" for exactly that line).
35
35
  */
36
36
  export const SERVER_PROGRAM = /\bserver\.[cm]?[jt]s\b|\b(?:npm|pnpm|yarn|bun)\s+(?:run\s+)?(?:start|dev|serve|preview)\b|\bvite\s+(?:preview|dev|serve)\b|\bvite(?![.\w-])(?!\s+(?:build|optimize)\b)|\bnext\s+(?:start|dev)\b|\b(?:uvicorn|gunicorn)\b|\bflask\s+run\b|\bpython\d?\s+-m\s+http\.server\b/;
37
37
  /** Programs that run a script FILE, so the file's own source decides whether it serves. */
@@ -2,7 +2,7 @@
2
2
  * A leading `sleep` in an executor's command: the seconds it would have waited, and the command
3
3
  * that follows it.
4
4
  *
5
- * X1 xr-molecule-flash-m105 (+08:49 → +10:53, 2026-10-17) spent 225 s of its 60-minute clock
5
+ * One run spent 225 s of its 60-minute clock
6
6
  * inside `exec_command` calls of the shape `sleep N; tail <task log>`. The platform's own launch
7
7
  * note said "peek with exec_command: tail <log>" beside "never sleep", and the only concrete
8
8
  * instruction was the peek, so the executor built the poll by hand. Two of its three sleeps were
@@ -2,7 +2,7 @@
2
2
  * A leading `sleep` in an executor's command: the seconds it would have waited, and the command
3
3
  * that follows it.
4
4
  *
5
- * X1 xr-molecule-flash-m105 (+08:49 → +10:53, 2026-10-17) spent 225 s of its 60-minute clock
5
+ * One run spent 225 s of its 60-minute clock
6
6
  * inside `exec_command` calls of the shape `sleep N; tail <task log>`. The platform's own launch
7
7
  * note said "peek with exec_command: tail <log>" beside "never sleep", and the only concrete
8
8
  * instruction was the peek, so the executor built the poll by hand. Two of its three sleeps were
@@ -5,12 +5,12 @@
5
5
  * Two sites ask "may a second run start now?" about the same pair of runs — the mid-run note that
6
6
  * tells the executor what to do next while the suite it is waiting on is still going
7
7
  * ({@link ./utilities.js} `repeatingFailureNote`), and the hold that refuses the run when it
8
- * arrives (molecule-dev's `suite-overlap-hold.ts`) — and until xr-molecule-flash-m89 they answered
9
- * it separately. That run's +19:59 `wait_for_task` handed over a repeating cause with "the test
10
- * alone reproduces the first one … start on them now, while the run keeps walking"; 23 s later the
11
- * executor sent exactly that re-run, and the overlap hold refused it — "A playwright suite is
12
- * already running against this app and database … Wait for it." Two orders, one run, and the round
13
- * trip between them was the whole cost.
8
+ * arrives (molecule-dev's `suite-overlap-hold.ts`) — and they used to answer it separately.
9
+ * A `wait_for_task` handed over a repeating cause with "the test alone reproduces the first one …
10
+ * start on them now, while the run keeps walking"; the executor sent exactly that re-run, and the
11
+ * overlap hold refused it — "A playwright suite is already running against this app and
12
+ * database … Wait for it." Two orders, one run, and the round trip between them was the whole
13
+ * cost.
14
14
  *
15
15
  * So the rule lives here ({@link suiteRunInTheWay}) and both of them call it: a run may start only
16
16
  * when nothing in flight is already measuring the same app and database. What "the same app and
@@ -23,7 +23,7 @@
23
23
  * WHOLE suite or a part of it. The rewriter that decides whether a background Playwright run gets
24
24
  * `--retries=0` ({@link ./utilities.js} `streamingBackgroundCommand`) and the platform's own notes
25
25
  * (molecule-dev's `suite-cli-override.ts`) asked it separately — a regex there, a predicate here —
26
- * until xr-molecule-flash-m89 showed the two answers were never the same question
26
+ * until a run showed the two answers were never the same question
27
27
  * ({@link isDiagnosisRun}).
28
28
  *
29
29
  * @module
@@ -65,7 +65,7 @@ export declare function namesSuiteConfig(command: string): boolean;
65
65
  * The flag rides the same statement the runner does: a `cd`, an env prefix and a `timeout` before
66
66
  * it are left exactly as they were, and so is everything chained after the run (`| tail -50`).
67
67
  *
68
- * xr-molecule-flash-m113 (+19:09): the model's fix-round re-run dropped the
68
+ * A fix-round re-run dropped the
69
69
  * `--config playwright.conduit.config.ts` both earlier runs had carried, so Playwright started with
70
70
  * NO base URL and all 10 failures were `page.goto: Cannot navigate to invalid URL` — a failure list
71
71
  * that says nothing about the app. The platform composes commands back to the executor too (the
@@ -81,21 +81,21 @@ export declare function withSuiteConfig(command: string, config: string | null |
81
81
  * The whole-suite command made scoped to the tests it should re-run instead: the same
82
82
  * invocation — same launcher, same settings — with the named `file:line`s in place of every
83
83
  * positional selection the run carried (a spec file, a suite directory or a regex filter),
84
- * `--last-failed` dropped (it re-runs the tests that never ran too, X1 flash-m60) and
84
+ * `--last-failed` dropped (it re-runs the tests that never ran too) and
85
85
  * `--retries=0` set (a re-run of a known failure does not need to pay for retries) — except the
86
86
  * re-run of a run against a DEPLOYED URL, which keeps the suite's own retries and tracing
87
87
  * (`options.suiteSettings`).
88
88
  *
89
89
  * The re-run keeps the run's `> <file>` redirect only in the sense of keeping its OUTPUT there:
90
90
  * the target is rewritten to a fresh sibling ({@link redirectRunnerOutputsToFreshFiles}), so a
91
- * re-run never overwrites the log the run itself is the evidence for (xr-molecule-flash-m173) —
92
- * and the setup around the run keeps its own file writes untouched (xr-molecule-flash-m429). A
91
+ * re-run never overwrites the log the run itself is the evidence for —
92
+ * and the setup around the run keeps its own file writes untouched. A
93
93
  * `tail`/`head`/`cat`/`grep` chained after the run that reads that exact log is shown the fresh
94
- * sibling instead, so the re-run displays the run it performed (xr-molecule-flash-o03).
94
+ * sibling instead, so the re-run displays the run it performed.
95
95
  *
96
96
  * `config` is the config the run was measured under ({@link withSuiteConfig}): the narrowed re-run
97
97
  * carries it whenever the command itself does not, so a run that dropped `--config` cannot be
98
- * handed back a command with the same defect (xr-molecule-flash-m113: every failing test was
98
+ * handed back a command with the same defect (every failing test was
99
99
  * `Cannot navigate to invalid URL` because the re-run loaded no base URL).
100
100
  *
101
101
  * @param command - The whole-suite run's command.
@@ -105,7 +105,7 @@ export declare function withSuiteConfig(command: string, config: string | null |
105
105
  * command this returns is one Playwright can match.
106
106
  * @param excluded - The test titles the request carves out. They are inverted out
107
107
  * (`--grep-invert`) so a re-run of the failing locations cannot report one of them again —
108
- * xr-molecule-flash-m101 re-ran the whole 139-test suite and spent ~4 minutes to be told about
108
+ * a re-run of the whole 139-test suite spends ~4 minutes to be told about
109
109
  * a test the request had already said does not count.
110
110
  * @param config - The config the run loaded, when the caller knows it; added when the command
111
111
  * does not name one.
@@ -113,13 +113,13 @@ export declare function withSuiteConfig(command: string, config: string | null |
113
113
  * resolved against when the command does not `cd` anywhere.
114
114
  * @param env - The settings the REQUEST requires of the suite and this run left out
115
115
  * ({@link withRunEnv}): the re-run carries them, so a re-run of a run measured in the wrong
116
- * mode is not measured in that mode again (xr-molecule-flash-m182 +12:06).
116
+ * mode is not measured in that mode again.
117
117
  * @param options - `suiteSettings` for the re-run of a run against a DEPLOYED URL: it keeps the
118
118
  * suite's own retries and tracing instead of the diagnosis ones. The graded measurement is the
119
119
  * suite's own settings, and a retry is what leaves a failing test's trace there; the platform's
120
120
  * `--retries=0` and its `--trace=retain-on-failure` are both a stricter measurement than the
121
- * one that was graded, and on X1 xr-molecule-flash-h15 the recording alone turned three
122
- * budget-bound deployed tests into timeouts.
121
+ * one that was graded, and the recording alone turned three budget-bound deployed tests into
122
+ * timeouts.
123
123
  * @returns The scoped command, or the command unchanged when it runs no Playwright suite.
124
124
  */
125
125
  export declare function scopedRerunCommand(command: string, locations: readonly string[], excluded?: readonly string[], config?: string | null, cwd?: string | null, env?: readonly RunEnvSetting[], options?: {
@@ -132,12 +132,12 @@ export interface RunEnvSetting {
132
132
  }
133
133
  /**
134
134
  * The command with the request's required settings put in front of its RUN statement — the ONE
135
- * place every composed re-run gets them (xr-molecule-flash-m182).
135
+ * place every composed re-run gets them.
136
136
  *
137
137
  * The settings are written at the statement's own assignment offset, never in front of the whole
138
138
  * command: a shell binds an assignment there to the statement's program, while one in front of the
139
139
  * whole command is the environment of its FIRST statement alone (`APP_BASE=… cd app && npx
140
- * playwright test` sets the variable for `cd`; xr-molecule-flash-m103 +28:08). A name the command
140
+ * playwright test` sets the variable for `cd`). A name the command
141
141
  * gives a different value is replaced, and one it already gives the required value is left as
142
142
  * written. When the parse cannot place the statement (a run inside a nested `sh -c '…'`), the
143
143
  * settings become `export`s, which no statement boundary can swallow.
@@ -161,8 +161,7 @@ export interface SuiteRunInFlight {
161
161
  target: string;
162
162
  /**
163
163
  * Whether the command being judged STOPS this run before starting its own — a kill comes first,
164
- * so a run the command itself stops is not in the way (xr-molecule-flash-m87's
165
- * `kill 19408 … ; npx playwright test …`).
164
+ * so a run the command itself stops is not in the way (`kill 19408 … ; npx playwright test …`).
166
165
  */
167
166
  stoppedByCommand?: boolean;
168
167
  }
@@ -237,10 +236,10 @@ export declare function isPlatformProofLaunch(input: unknown): boolean;
237
236
  * ({@link ./utilities.js} `streamingBackgroundCommand`) — a diagnosis walks each failure once,
238
237
  * while the run the suite is judged by keeps the suite's own retries; and
239
238
  * - the platform's own notes (molecule-dev's `suite-cli-override.ts`), which must not tell the
240
- * executor to drop the `--retries=0` the platform itself has just added — the contradiction X1
241
- * flash-m74 and m75 filed, and m76 filed a third time.
239
+ * executor to drop the `--retries=0` the platform itself has just added — a contradiction
240
+ * filed three times.
242
241
  *
243
- * Until xr-molecule-flash-m89 they were a regex and a predicate that only LOOKED alike, and the
242
+ * Until then they were a regex and a predicate that only LOOKED alike, and the
244
243
  * gap was exactly the run the platform had asked for: its `testRunNote` says "run the whole suite
245
244
  * once with `--max-failures=0`", and the rewriter read that cap flag as a capped diagnosis and
246
245
  * stripped the suite's retries from the uncapped proof run that follows a deploy — the one run the
@@ -256,7 +255,7 @@ export declare function isPlatformProofLaunch(input: unknown): boolean;
256
255
  * When the caller passes those approved titles ({@link DiagnosisRunContext}) and the inverted
257
256
  * pattern names one of them — the request's own "except …" scope written as the flag, which
258
257
  * molecule-dev's `invertDecision` reads the same way — the run still walks the whole proof scope,
259
- * and it is not a diagnosis. xr-molecule-flash-m170 (+33:16): the deployed proof carried exactly
258
+ * and it is not a diagnosis. The deployed proof carried exactly
260
259
  * that exclusion, the rewriter added `--retries=0` to it, and the run lost the suite's retries on
261
260
  * the one walk where a network blip is likeliest.
262
261
  *
@@ -1 +1 @@
1
- {"version":3,"file":"suite-overlap.d.ts","sourceRoot":"","sources":["../src/suite-overlap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAaH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoB1D;AAKD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAS1F;AA4VD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,GAAE,SAAS,MAAM,EAAO,EAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EACnB,GAAG,GAAE,SAAS,aAAa,EAAO,EAClC,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,MAAM,CA2DR;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAmCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,aAAa,EAAO,GAAG,MAAM,CAe3F;AAwOD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,SAAS,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EACzD,SAAS,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAC7B,QAAQ,EAAE,SAAS,CAAC,EAAE,GACrB,CAAC,GAAG,IAAI,CAMV;AAqHD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,MAA4D,CAAA;AAEhG;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM7D;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CA2BtF"}
1
+ {"version":3,"file":"suite-overlap.d.ts","sourceRoot":"","sources":["../src/suite-overlap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAaH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoB1D;AAKD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAS1F;AA2VD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,GAAE,SAAS,MAAM,EAAO,EAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EACnB,GAAG,GAAE,SAAS,aAAa,EAAO,EAClC,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,MAAM,CA2DR;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAmCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,aAAa,EAAO,GAAG,MAAM,CAe3F;AAuOD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,SAAS,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EACzD,SAAS,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAC7B,QAAQ,EAAE,SAAS,CAAC,EAAE,GACrB,CAAC,GAAG,IAAI,CAMV;AAqHD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,MAA4D,CAAA;AAEhG;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM7D;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CA2BtF"}
@@ -5,12 +5,12 @@
5
5
  * Two sites ask "may a second run start now?" about the same pair of runs — the mid-run note that
6
6
  * tells the executor what to do next while the suite it is waiting on is still going
7
7
  * ({@link ./utilities.js} `repeatingFailureNote`), and the hold that refuses the run when it
8
- * arrives (molecule-dev's `suite-overlap-hold.ts`) — and until xr-molecule-flash-m89 they answered
9
- * it separately. That run's +19:59 `wait_for_task` handed over a repeating cause with "the test
10
- * alone reproduces the first one … start on them now, while the run keeps walking"; 23 s later the
11
- * executor sent exactly that re-run, and the overlap hold refused it — "A playwright suite is
12
- * already running against this app and database … Wait for it." Two orders, one run, and the round
13
- * trip between them was the whole cost.
8
+ * arrives (molecule-dev's `suite-overlap-hold.ts`) — and they used to answer it separately.
9
+ * A `wait_for_task` handed over a repeating cause with "the test alone reproduces the first one …
10
+ * start on them now, while the run keeps walking"; the executor sent exactly that re-run, and the
11
+ * overlap hold refused it — "A playwright suite is already running against this app and
12
+ * database … Wait for it." Two orders, one run, and the round trip between them was the whole
13
+ * cost.
14
14
  *
15
15
  * So the rule lives here ({@link suiteRunInTheWay}) and both of them call it: a run may start only
16
16
  * when nothing in flight is already measuring the same app and database. What "the same app and
@@ -23,7 +23,7 @@
23
23
  * WHOLE suite or a part of it. The rewriter that decides whether a background Playwright run gets
24
24
  * `--retries=0` ({@link ./utilities.js} `streamingBackgroundCommand`) and the platform's own notes
25
25
  * (molecule-dev's `suite-cli-override.ts`) asked it separately — a regex there, a predicate here —
26
- * until xr-molecule-flash-m89 showed the two answers were never the same question
26
+ * until a run showed the two answers were never the same question
27
27
  * ({@link isDiagnosisRun}).
28
28
  *
29
29
  * @module
@@ -94,7 +94,7 @@ export function namesSuiteConfig(command) {
94
94
  * The flag rides the same statement the runner does: a `cd`, an env prefix and a `timeout` before
95
95
  * it are left exactly as they were, and so is everything chained after the run (`| tail -50`).
96
96
  *
97
- * xr-molecule-flash-m113 (+19:09): the model's fix-round re-run dropped the
97
+ * A fix-round re-run dropped the
98
98
  * `--config playwright.conduit.config.ts` both earlier runs had carried, so Playwright started with
99
99
  * NO base URL and all 10 failures were `page.goto: Cannot navigate to invalid URL` — a failure list
100
100
  * that says nothing about the app. The platform composes commands back to the executor too (the
@@ -305,21 +305,21 @@ const GREP_PATTERN_FLAGS = new Set(['-e', '--regexp', '-f', '--file']);
305
305
  * The postlude statements that DISPLAY the run's own report, with the exact file that run wrote
306
306
  * pointed at the fresh sibling the re-run writes instead.
307
307
  *
308
- * xr-molecule-flash-o03 (2026-10-22; the stale-READ arm m248 filed at +25:55): the recipe the
309
- * platform handed the executor ended `> /tmp/e2e-local.log.rerun.log 2>&1; echo EXIT=$?; tail -80
310
- * /tmp/e2e-local.log`. The writer moved to the fresh sibling and the trailing tail did not, so the
311
- * narrowed re-run displayed the walk it was narrowed FROM — the builder followed that recipe at
312
- * +19:16 and read the previous walk's failures as the result of the run it had just done.
308
+ * A recipe the platform handed the executor ended
309
+ * `> /tmp/e2e-local.log.rerun.log 2>&1; echo EXIT=$?; tail -80 /tmp/e2e-local.log`. The writer
310
+ * moved to the fresh sibling and the trailing tail did not, so the narrowed re-run displayed the
311
+ * walk it was narrowed FROM — and a builder following that recipe read the previous walk's
312
+ * failures as the result of the run it had just done.
313
313
  *
314
314
  * Only the EXACT file a runner statement (or its `tee`) wrote moves, and only in a statement AFTER
315
- * the run: the setup in front of it keeps every byte (m429), and a read of any other file is left
315
+ * the run: the setup in front of it keeps every byte, and a read of any other file is left
316
316
  * alone. The value is compared whole — `/tmp/full.log` never matches `/tmp/full.log.bak` — and
317
317
  * inside shell quotes the operand's own quoting survives (`"/tmp/my walk.log"` stays quoted).
318
318
  *
319
319
  * The bound is deliberate: a display this reader set does not recognise (a `wc`, a path held in a
320
320
  * variable, a path the command builds) is left exactly as written rather than guessed at. Those
321
- * shapes are not the ones the platform emits, and rewriting a word by resemblance is how m429's
322
- * setup redirect was corrupted.
321
+ * shapes are not the ones the platform emits, and rewriting a word by resemblance is how a setup
322
+ * redirect was corrupted.
323
323
  *
324
324
  * @param command - The composed command.
325
325
  * @param statements - The statements carrying the run's own output.
@@ -401,14 +401,14 @@ function freshReportReadEdits(command, statements, fresh) {
401
401
  * changed.
402
402
  *
403
403
  * A re-run composed from a run's own command keeps the run's redirect by construction, and the
404
- * run wrote the walk's only report to that file: xr-molecule-flash-m173 handed over *"Send this
404
+ * run wrote the walk's only report to that file: the platform handed over *"Send this
405
405
  * once the run ends: … npx playwright test …/articles.spec.ts:32 --retries=0 … > /tmp/pw-full.log
406
406
  * 2>&1"* — the ONE narrowed re-run that was about to check the fixes would have overwritten the
407
407
  * full walk's log, destroying the other 11 failures' error reports. Following the platform's own
408
408
  * advice must never destroy the evidence it was based on.
409
409
  *
410
410
  * Only the run's OWN stream moves. What surrounds it is SETUP and POSTLUDE, and those writes are
411
- * the command's meaning, not a report: xr-molecule-flash-m429 (2026-10-22) composed
411
+ * the command's meaning, not a report: a composed command was
412
412
  * `printf '/index.html 200' > app/public/_redirects && npx playwright test specs/auth.spec.ts
413
413
  * > /tmp/full.log 2>&1` with its SPA fallback written to `_redirects.rerun.log`, so the re-run
414
414
  * measured an app with no fallback at all. A heredoc config, a `.env` the command writes and a
@@ -418,8 +418,7 @@ function freshReportReadEdits(command, statements, fresh) {
418
418
  * Every statement chained after the run (`; echo EXIT $? > /tmp/done`) is postlude and keeps its
419
419
  * own writes, but the DISPLAY of the run's report is part of the same run: a `tail`, `head`, `cat`
420
420
  * or `grep` after the run that reads the exact file it wrote is pointed at the fresh sibling too
421
- * ({@link freshReportReadEdits}), so a re-run shows its own output instead of the walk's
422
- * (xr-molecule-flash-o03).
421
+ * ({@link freshReportReadEdits}), so a re-run shows its own output instead of the walk's.
423
422
  *
424
423
  * @param command - The composed command.
425
424
  * @returns The command whose suite-run redirects write to a fresh target.
@@ -444,21 +443,21 @@ function redirectRunnerOutputsToFreshFiles(command) {
444
443
  * The whole-suite command made scoped to the tests it should re-run instead: the same
445
444
  * invocation — same launcher, same settings — with the named `file:line`s in place of every
446
445
  * positional selection the run carried (a spec file, a suite directory or a regex filter),
447
- * `--last-failed` dropped (it re-runs the tests that never ran too, X1 flash-m60) and
446
+ * `--last-failed` dropped (it re-runs the tests that never ran too) and
448
447
  * `--retries=0` set (a re-run of a known failure does not need to pay for retries) — except the
449
448
  * re-run of a run against a DEPLOYED URL, which keeps the suite's own retries and tracing
450
449
  * (`options.suiteSettings`).
451
450
  *
452
451
  * The re-run keeps the run's `> <file>` redirect only in the sense of keeping its OUTPUT there:
453
452
  * the target is rewritten to a fresh sibling ({@link redirectRunnerOutputsToFreshFiles}), so a
454
- * re-run never overwrites the log the run itself is the evidence for (xr-molecule-flash-m173) —
455
- * and the setup around the run keeps its own file writes untouched (xr-molecule-flash-m429). A
453
+ * re-run never overwrites the log the run itself is the evidence for —
454
+ * and the setup around the run keeps its own file writes untouched. A
456
455
  * `tail`/`head`/`cat`/`grep` chained after the run that reads that exact log is shown the fresh
457
- * sibling instead, so the re-run displays the run it performed (xr-molecule-flash-o03).
456
+ * sibling instead, so the re-run displays the run it performed.
458
457
  *
459
458
  * `config` is the config the run was measured under ({@link withSuiteConfig}): the narrowed re-run
460
459
  * carries it whenever the command itself does not, so a run that dropped `--config` cannot be
461
- * handed back a command with the same defect (xr-molecule-flash-m113: every failing test was
460
+ * handed back a command with the same defect (every failing test was
462
461
  * `Cannot navigate to invalid URL` because the re-run loaded no base URL).
463
462
  *
464
463
  * @param command - The whole-suite run's command.
@@ -468,7 +467,7 @@ function redirectRunnerOutputsToFreshFiles(command) {
468
467
  * command this returns is one Playwright can match.
469
468
  * @param excluded - The test titles the request carves out. They are inverted out
470
469
  * (`--grep-invert`) so a re-run of the failing locations cannot report one of them again —
471
- * xr-molecule-flash-m101 re-ran the whole 139-test suite and spent ~4 minutes to be told about
470
+ * a re-run of the whole 139-test suite spends ~4 minutes to be told about
472
471
  * a test the request had already said does not count.
473
472
  * @param config - The config the run loaded, when the caller knows it; added when the command
474
473
  * does not name one.
@@ -476,13 +475,13 @@ function redirectRunnerOutputsToFreshFiles(command) {
476
475
  * resolved against when the command does not `cd` anywhere.
477
476
  * @param env - The settings the REQUEST requires of the suite and this run left out
478
477
  * ({@link withRunEnv}): the re-run carries them, so a re-run of a run measured in the wrong
479
- * mode is not measured in that mode again (xr-molecule-flash-m182 +12:06).
478
+ * mode is not measured in that mode again.
480
479
  * @param options - `suiteSettings` for the re-run of a run against a DEPLOYED URL: it keeps the
481
480
  * suite's own retries and tracing instead of the diagnosis ones. The graded measurement is the
482
481
  * suite's own settings, and a retry is what leaves a failing test's trace there; the platform's
483
482
  * `--retries=0` and its `--trace=retain-on-failure` are both a stricter measurement than the
484
- * one that was graded, and on X1 xr-molecule-flash-h15 the recording alone turned three
485
- * budget-bound deployed tests into timeouts.
483
+ * one that was graded, and the recording alone turned three budget-bound deployed tests into
484
+ * timeouts.
486
485
  * @returns The scoped command, or the command unchanged when it runs no Playwright suite.
487
486
  */
488
487
  export function scopedRerunCommand(command, locations, excluded = [], config, cwd, env = [], options = {}) {
@@ -572,12 +571,12 @@ function withoutEnvWord(command, name) {
572
571
  }
573
572
  /**
574
573
  * The command with the request's required settings put in front of its RUN statement — the ONE
575
- * place every composed re-run gets them (xr-molecule-flash-m182).
574
+ * place every composed re-run gets them.
576
575
  *
577
576
  * The settings are written at the statement's own assignment offset, never in front of the whole
578
577
  * command: a shell binds an assignment there to the statement's program, while one in front of the
579
578
  * whole command is the environment of its FIRST statement alone (`APP_BASE=… cd app && npx
580
- * playwright test` sets the variable for `cd`; xr-molecule-flash-m103 +28:08). A name the command
579
+ * playwright test` sets the variable for `cd`). A name the command
581
580
  * gives a different value is replaced, and one it already gives the required value is left as
582
581
  * written. When the parse cannot place the statement (a run inside a nested `sh -c '…'`), the
583
582
  * settings become `export`s, which no statement boundary can swallow.
@@ -659,9 +658,8 @@ const LOCATION_LINE = /^(.*?)(:\d+(?::\d+)?)$/;
659
658
  * suffix the absolute path still contains (`fixtures/…/articles.spec.ts:3` matches).
660
659
  *
661
660
  * A location without a leading dot is left alone: it is either absolute or already a suffix of the
662
- * absolute path, and rewriting it against a mis-guessed base could only break it
663
- * (xr-molecule-flash-m118 +16:34 "No tests found"; m124 +18:38 the platform's own "Re-run just
664
- * these" command).
661
+ * absolute path, and rewriting it against a mis-guessed base could only break it ("No tests
662
+ * found", and the platform's own "Re-run just these" command).
665
663
  *
666
664
  * @param locations - The failing `file:line`s as the run's log printed them.
667
665
  * @param command - The run's command, for its own `cd`s.
@@ -684,7 +682,7 @@ function playwrightLocations(locations, command, cwd) {
684
682
  *
685
683
  * A value here is never a positional selection however much it looks like a path:
686
684
  * `--config playwright.config.ts` names the config the run was measured under, and dropping it
687
- * because it ends in `.ts` would re-create m113 exactly (a re-run with no base URL).
685
+ * because it ends in `.ts` would re-create the defect exactly (a re-run with no base URL).
688
686
  */
689
687
  const SUITE_VALUE_FLAGS = new Set([
690
688
  '--add-reporter',
@@ -740,10 +738,10 @@ const ARGUMENT_REDIRECT_OPERATOR = /^(?:\d*|&)(?:<<<|<<-?|>>?\|?|<>|>&|<&)$/;
740
738
  *
741
739
  * The re-run is "just these", and Playwright OR-s every positional argument into one selection:
742
740
  * ANY leftover positional re-admits tests the re-run is supposed to skip. A bare spec file
743
- * re-admits all of that file's tests (xr-molecule-flash-m118 (+45:24) ~297 s for one file and
744
- * fourteen duplicates; xr-molecule-flash-m134 (+20:0x) 32 tests instead of 8). A suite DIRECTORY
741
+ * re-admits all of that file's tests (~297 s for one file and fourteen duplicates; 32 tests
742
+ * instead of 8). A suite DIRECTORY
745
743
  * is the same argument and re-admits the WHOLE walk even beside fourteen exact `file:line`s —
746
- * xr-molecule-flash-m428's suggested "Re-run just these" kept
744
+ * A suggested "Re-run just these" kept
747
745
  * `/workspace/fixtures/realworld/specs/e2e` after `--config playwright.config.ts`, so the command
748
746
  * said 14 locations and selected every spec again. A regex positional filter selects files the
749
747
  * same way and goes too.
@@ -850,7 +848,7 @@ const PLAYWRIGHT_RUN = /^(?:@playwright\/test|playwright)(?:@\S+)?\s+test(?=\s|$
850
848
  * Both rewrites that compose a command ({@link withSuiteConfig}, {@link scopedRerunCommand}) read
851
849
  * the run through the shared shell parse — the same answer every classifier gets — instead of
852
850
  * searching the text for `playwright test`. The search missed the runner reached by file (`node
853
- * <path>/@playwright/test/cli.js test`, xr-molecule-flash-m179), so a narrowed re-run of that run
851
+ * <path>/@playwright/test/cli.js test`), so a narrowed re-run of that run
854
852
  * silently stayed the whole suite.
855
853
  *
856
854
  * `afterRunner` is the offset just past the runner's own words (`playwright test`): the
@@ -1005,10 +1003,10 @@ function boundsFailures(command) {
1005
1003
  * ({@link ./utilities.js} `streamingBackgroundCommand`) — a diagnosis walks each failure once,
1006
1004
  * while the run the suite is judged by keeps the suite's own retries; and
1007
1005
  * - the platform's own notes (molecule-dev's `suite-cli-override.ts`), which must not tell the
1008
- * executor to drop the `--retries=0` the platform itself has just added — the contradiction X1
1009
- * flash-m74 and m75 filed, and m76 filed a third time.
1006
+ * executor to drop the `--retries=0` the platform itself has just added — a contradiction
1007
+ * filed three times.
1010
1008
  *
1011
- * Until xr-molecule-flash-m89 they were a regex and a predicate that only LOOKED alike, and the
1009
+ * Until then they were a regex and a predicate that only LOOKED alike, and the
1012
1010
  * gap was exactly the run the platform had asked for: its `testRunNote` says "run the whole suite
1013
1011
  * once with `--max-failures=0`", and the rewriter read that cap flag as a capped diagnosis and
1014
1012
  * stripped the suite's retries from the uncapped proof run that follows a deploy — the one run the
@@ -1024,7 +1022,7 @@ function boundsFailures(command) {
1024
1022
  * When the caller passes those approved titles ({@link DiagnosisRunContext}) and the inverted
1025
1023
  * pattern names one of them — the request's own "except …" scope written as the flag, which
1026
1024
  * molecule-dev's `invertDecision` reads the same way — the run still walks the whole proof scope,
1027
- * and it is not a diagnosis. xr-molecule-flash-m170 (+33:16): the deployed proof carried exactly
1025
+ * and it is not a diagnosis. The deployed proof carried exactly
1028
1026
  * that exclusion, the rewriter added `--retries=0` to it, and the run lost the suite's retries on
1029
1027
  * the one walk where a network blip is likeliest.
1030
1028
  *