You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 4b7a780
Browse filesBrowse the repository at this point in the historyBrowse files
fix: deduplicate Windows Conda casing aliases (#519)
## Summary
- preserve the canonical executable path on cache hits
- keep caller-facing aliases valid in the current working context
- invalidate stale in-memory entries when tracked executables disappear
- deduplicate Windows Conda casing aliases while preserving on-disk
spelling
- version performance inventory semantics so the intentional v1-to-v2
deduplication transition is explicit and same-schema count mismatches
remain blocking
Fixes#518
Related: microsoft/vscode-python-environments#1703
## Validation
- `cargo test -p pet-conda --test environment_locations_test`
- `cargo test --features ci-perf --test e2e_performance
test_performance_summary --no-run`
- `python -B -m unittest discover -s scripts/tests -p 'test_*.py' -v`
(47 passed)
- `./scripts/rust-precommit.ps1`
- replayed the failed Windows snapshot against its exact base: legacy
comparison fails at 8/1 vs 10/2; inventory schema v2 passes with all
latency metrics within budget
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copy file name to clipboardExpand all lines: docs/QUALITY_SNAPSHOTS.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ PET uses pull-request snapshots to prevent performance and coverage drift. Each
7
7
The performance workflow runs 10 paired cache-cold/cache-warm JSON-RPC iterations on Linux, Windows, and macOS, plus 10 untimed cache-cold diagnostic iterations. A comparison is valid only when:
8
8
9
9
- current and baseline metrics contain at least five samples for every required distribution;
10
-
- environment and manager counts match exactly; and
10
+
- environment and manager counts match exactly within the same inventory schema; and
11
11
- the benchmark command and JSON extraction both succeed.
12
12
13
13
A metric blocks when it exceeds both its absolute and relative budget:
@@ -32,6 +32,8 @@ The Windows warm full-refresh P50 budget was recalibrated in issue #513 from fiv
32
32
33
33
Schema v2 records `full_refresh` and `time_to_first_env` from the warm member of each pair and adds cold refresh/time-to-first distributions. During its one-time rollout, comparisons against a schema-v1 base checked cold P50 against explicit absolute ceilings of 500ms on Linux, 750ms on Windows, and 1,000ms on macOS. Schema-v2-to-v2 comparisons use the table's dual budgets.
34
34
35
+
Inventory schema v2 treats Windows Conda installation paths that differ only by on-disk casing as one logical workload entry. During the one-time v1-to-v2 transition, the report explicitly identifies the schema change and permits the expected count mismatch. Once the v2 baseline is published, exact environment and manager count matching resumes automatically.
36
+
35
37
The cold P50 budgets were calibrated in issue #509 using two unchanged-head all-platform runs and the final pull-request validation.
36
38
37
39
The dual budget avoids failing on tiny percentage changes while still blocking material latency regressions. Warm tail metrics remain mandatory; cold P95 remains diagnostic because a single host event can dominate it, while cold P50 blocks delays that affect the independent cold iterations consistently.
0 commit comments