inspector/scripts
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall 69e6097b68 refactor: assert retry and asyncUtilTimeout at runtime, delete the source scanner
Round 8 of the review asked for an AST. That was the right diagnosis of the
wrong problem: the question was never which parser to use, it was why a
test-timeout guard was parsing JavaScript at all.

It got there one reasonable step at a time. The guard enforces two rules no
Vitest config can report — a per-test `retry`, and Testing Library's
`asyncUtilTimeout` — so it read them out of source text, and the review found a
new valid spelling it missed in five consecutive rounds: a trailing comment,
nested parens in `it.each([makeCase()])`, a member-access prefix, the shorthand
`{ retry }`, an aliased import, a non-literal title. Each fix was correct and
each made it more parser-shaped, until it carried eight helpers doing quote
tracking and bracket balancing.

Both rules are observable at runtime, exactly:

- `vitest.setup.shared.mts` is loaded by all six projects and reads
  `ctx.task.retry` — the value Vitest resolved for the test. That covers
  strictly more than the scan did: a per-test option, a `describe` option
  inherited by children, a project-level setting, and a `--retry` flag typed at
  a command line, which the scan could never see since it only read npm scripts.
- `clients/web/src/test/asyncUtilTimeout.test.ts` asserts
  `getConfig().asyncUtilTimeout`, the value this project's own waitFors read.

Neither has a spelling to anticipate, so neither can be outrun by a new one.
Both were observed firing before being trusted.

The guard keeps only what it can answer by asking Vitest: resolved budgets,
project-level retry, config discovery, and that each project still loads the
setup file — the one thing about the runtime assertion a config CAN report.
868 lines to 361, every scanner helper gone, and 33 of 48 unit tests deleted
because they pinned edge cases of a thing that no longer exists.

storybookSetup.ts goes with it. At the library's own value its configure() call
was a no-op, and the assertion is what pins the number.

AGENTS.md gains the general rule: a rule about what the code DOES is asserted at
runtime, not read out of the source — reach for a verify:* guard when the
question is about configuration, which a tool can be asked to resolve.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PsmUAZ6aLUAFqenjJKSSRp
Signed-off-by: cliffhall <cliff@futurescale.com>
2026-09-12 15:58:19 -04:00
..
lib fix: address Copilot review round 4 2026-09-12 14:21:54 -04:00
dependabot-alerts.mjs chore(deps): address Copilot review round 15 on #2243 2026-09-04 09:26:20 -04:00
dependabot-alerts.test.mjs chore(deps): address Copilot review round 15 on #2243 2026-09-04 09:26:20 -04:00
dependency-refresh.mjs chore(deps): address Copilot review round 1 on #2243 2026-09-04 09:06:32 -04:00
dependency-refresh.test.mjs chore(deps): paginate the release list so the highest version is actual 2026-09-04 09:06:31 -04:00
install-clients.mjs feat: port CLI, TUI, and launcher from v1.5 into v2 (#1452) 2026-06-14 20:27:49 -04:00
install-smoke-browser.mjs fix(smoke): reject an empty SMOKE_BROWSER; test the installer's argument logic 2026-08-25 22:52:02 -04:00
install-smoke-browser.test.mjs fix(smoke): reject an empty SMOKE_BROWSER; test the installer's argument logic 2026-08-25 22:52:02 -04:00
pack-and-verify.mjs ci: drop the Firefox smoke job; keep the engines as an on-demand tool 2026-08-25 23:55:19 -04:00
run-engine-smokes.mjs fix(smoke): route the Chromium tier through ENGINE_SMOKES too 2026-08-26 08:55:51 -04:00
run-engine-smokes.test.mjs Merge remote-tracking branch 'origin/v2/main' into v2/chore/2146-rename-local-gate 2026-08-27 00:16:14 -04:00
sdk-watch.mjs fix: address Copilot review round 5 on the SDK watch 2026-09-06 11:00:01 -04:00
sdk-watch.test.mjs fix: address Copilot review round 6, and close out the federation follow-up 2026-09-06 11:19:17 -04:00
skill-eval.mjs chore: land the #2247 round-9 review findings on v2/main (#2322) 2026-09-11 08:22:16 -04:00
skill-eval.test.mjs feat(skills): address Copilot review round 3 on #2204 2026-09-04 20:28:37 -04:00
smoke-cli.mjs chore(scripts): build test-servers unconditionally from one shared helper 2026-08-25 00:57:48 -04:00
smoke-launcher.mjs refactor: self-validating clients, fast validate + separate coverage/smoke (#1504) (#1505) 2026-06-21 11:41:33 -04:00
smoke-tui.mjs fix(scripts): make the test stubs drain, and the raw-mode guard testable (#2147) 2026-08-26 22:13:35 -04:00
smoke-web-app.mjs chore(scripts): rename the local pre-push gate off ci, and guard it out of CI (#2146) 2026-08-26 23:56:34 -04:00
smoke-web-browser.mjs fix: state every test-gate timeout instead of inheriting a library default 2026-09-12 08:32:34 -04:00
smoke-web-elicitation.mjs fix: state every test-gate timeout instead of inheriting a library default 2026-09-12 08:32:34 -04:00
smoke-web-tabs.mjs fix: state every test-gate timeout instead of inheriting a library default 2026-09-12 08:32:34 -04:00
smoke-web.mjs fix(smoke): await the server's exit before removing its catalog, and test it 2026-08-11 14:32:20 -04:00
verify-build-gate.mjs chore(scripts): rename the local pre-push gate off ci, and guard it out of CI (#2146) 2026-08-26 23:56:34 -04:00
verify-bundle-externals.mjs test(proxy): isolate proxy env per file; word the guard failure by candidate source 2026-08-23 23:00:28 -04:00
verify-bundle-externals.test.mjs test(proxy): isolate proxy env per file; word the guard failure by candidate source 2026-08-23 23:00:28 -04:00
verify-dep-lockstep.main.test.mjs chore: address Copilot review round 1 (#2226) 2026-09-05 16:09:44 -04:00
verify-dep-lockstep.mjs chore: address Copilot review round 3 (#2226) 2026-09-05 17:14:44 -04:00
verify-dep-lockstep.test.mjs chore: address Copilot review round 1 (#2226) 2026-09-05 16:09:44 -04:00
verify-format-coverage.main.test.mjs chore: address Copilot review round 20 2026-08-29 05:32:12 -04:00
verify-format-coverage.mjs chore: address Copilot review round 9 2026-08-29 03:04:03 -04:00
verify-skills-cli.mjs chore: address Copilot review round 17 2026-08-29 04:54:04 -04:00
verify-skills-cli.test.mjs chore: address Copilot review round 16 2026-08-29 04:40:48 -04:00
verify-skills.main.test.mjs feat(skills): measure a skill reached from another skill (#2204) 2026-09-04 19:07:26 -04:00
verify-skills.mjs feat(skills): measure a skill reached from another skill (#2204) 2026-09-04 19:07:26 -04:00
verify-test-timeouts.mjs refactor: assert retry and asyncUtilTimeout at runtime, delete the source scanner 2026-09-12 15:58:19 -04:00
verify-test-timeouts.test.mjs refactor: assert retry and asyncUtilTimeout at runtime, delete the source scanner 2026-09-12 15:58:19 -04:00
verify-typecheck-coverage.main.test.mjs Merge origin/v2/main: move the #1939 npx fix into the shared tsc-program lib 2026-08-16 17:07:50 -07:00
verify-typecheck-coverage.mjs Merge origin/v2/main: move the #1939 npx fix into the shared tsc-program lib 2026-08-16 17:07:50 -07:00
verify-typecheck-coverage.test.mjs chore(scripts): derive dep-lockstep candidates from what enters each tsc program 2026-08-16 12:17:15 -04:00