Record the improvise-sxsf measurement: the proposed fix is 18x and partial
No code change; the ticket stays open, now with numbers instead of an estimate. Still latent, re-verified 2026-09-21: 1444 test names, zero duplicate full paths, zero duplicate (crate, path) pairs. The proposed fix -- `--list` per package with the crate name prefixed -- is declined on two independent grounds. It costs 45.2s against 2.4s for the one workspace call (11 members, warm), and --check-evidence needs the --ignored twin, so the honest figure is 22 cargo invocations for a case nothing can reach. And it does not close the class it names: a package is not a binary. `improvise` carries five integration test binaries beside its lib, and an integration test's top-level fn lists with no module path at all -- 60 of the 1444 names are bare -- so `-p improvise` prefixes all six identically and tests/a.rs::foo still cannot be told from tests/b.rs::foo. Any fix worth having is per-target (--lib, --test <name>), not per-package. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FC2jVn8Au7E9JPkw6bwXXH
This commit is contained in:
@@ -77,6 +77,24 @@ colliding pair and the leaf becomes *unique*, silently resolving to the
|
||||
survivor. Qualification is what closes that, and the refusal is what makes
|
||||
somebody write it.
|
||||
|
||||
What stays open is collision *across binaries*: `--list` prints module paths
|
||||
with no crate and no binary, so two crates sharing one could not be told apart
|
||||
(improvise-sxsf). Measured 2026-09-21 and still latent — 1444 names, **zero**
|
||||
duplicate full paths, and zero duplicate `(crate, path)` pairs.
|
||||
|
||||
The fix the ticket proposes — `--list` per package with the crate prefixed —
|
||||
was measured and is **declined twice over**. It costs 45.2s against 2.4s for
|
||||
the one workspace call (11 members, warm), 18× for an unreachable case, and
|
||||
`--check-evidence` needs the `--ignored` twin too, so the real figure is 22
|
||||
invocations. More to the point **it does not close the class it names**: a
|
||||
package is not a binary. `improvise` alone carries five integration test
|
||||
binaries beside its lib, and an integration test's top-level `fn` lists with no
|
||||
module path at all — 60 of the 1444 names are bare — so `-p improvise` prefixes
|
||||
all six identically and `tests/a.rs::foo` still cannot be told from
|
||||
`tests/b.rs::foo`. A fix that ever becomes worth having is per-*target*
|
||||
(`--lib`, `--test <name>`), not per-package, and the ticket's proposal would
|
||||
have bought 18× for a partial cure.
|
||||
|
||||
### The names come from cargo, not from the source
|
||||
|
||||
A heading is diffed against `cargo test --workspace -- --list`, minus the names
|
||||
|
||||
Reference in New Issue
Block a user