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:
Edward Langley
2026-09-20 22:15:00 -07:00
parent 3f97dfae8e
commit 6bea7ae703
+18
View File
@@ -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