inspector/scripts
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall a9b9a917e3 chore(scripts): compare only the copies a program actually met
Two findings from the Copilot review of #1965, both real.

1. The candidates were flattened to package names before the version
   comparison, so a third install holding a different copy failed the guard
   even when no program loads that copy beside another — and the diagnostic
   named an install that never took part. `crossInstallPackages` now returns
   the co-occurrences themselves (name → program → install → entry paths) and
   `findSkew` compares per program, across only the installs that met there.

2. Folding a nested copy onto its outermost install lost the path that
   identifies which copy was loaded, and the version was then read from the
   install's top-level entry — absent or differently versioned, either way
   letting a real pair pass. `classifyModulePath` now also returns the
   `entryPath` npm keys the lockfile by, `topLevelLockVersions` becomes
   `lockVersionsByPath`, and each holder is priced from the entry the program
   resolved. A resolved copy with no lockfile entry is now a hard failure
   rather than a silently dropped holder.

The failure output prints `in <program>` with each holder's install path
beside its version, so a nested copy is distinguishable from a top-level one.

Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-16 12:35:38 -04:00
..
lib chore(scripts): compare only the copies a program actually met 2026-08-16 12:35:38 -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
pack-and-verify.mjs fix: ship clients/web/static so the MCP Apps sandbox proxy loads 2026-08-05 17:46:10 -04:00
smoke-cli.mjs feat(web): enforce localhost-only binding; expand loopback origin allow-list (#1796) 2026-07-26 22:15:10 -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): await the pack:verify web child's exit before removing its work dir (#1895) 2026-08-01 19:50:00 -04:00
smoke-web-app.mjs fix(smoke): await the server's exit before removing its catalog, and test it 2026-08-11 14:32:20 -04:00
smoke-web-browser.mjs fix(smoke): await the server's exit before removing its catalog, and test it 2026-08-11 14:32:20 -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(web): format-gate the ungated first-party TS/JS (server/, vite.config.ts, scripts/) (#1788) 2026-07-25 23:15:45 -04:00
verify-dep-lockstep.main.test.mjs chore(scripts): compare only the copies a program actually met 2026-08-16 12:35:38 -04:00
verify-dep-lockstep.mjs chore(scripts): compare only the copies a program actually met 2026-08-16 12:35:38 -04:00
verify-dep-lockstep.test.mjs chore(scripts): compare only the copies a program actually met 2026-08-16 12:35:38 -04:00
verify-format-coverage.main.test.mjs test(scripts): cover verify-format-coverage's sibling-guard vouch 2026-08-10 22:16:29 -04:00
verify-format-coverage.mjs chore(deps): scope the allowlist to a major, cover vitest.shared.mts, fix the vouch comment 2026-08-10 21:00:31 -04:00
verify-typecheck-coverage.mjs chore(scripts): derive dep-lockstep candidates from what enters each tsc program 2026-08-16 12:17:15 -04: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