feat: propagate timestamps of source packages during resolves.#5809
Merged
baszalmstra merged 4 commits intoprefix-dev:feature/lockfile-v7from Apr 7, 2026
Merged
Conversation
b0eafc0 to
3116ed3
Compare
3116ed3 to
10a267d
Compare
0c93fad to
c3290c0
Compare
hunger
requested changes
Apr 2, 2026
08513a7 to
d34dfd5
Compare
…c, add solve-group and channel-extended coverage - Restore the `should_disregard_conda` check in outdated.rs that was accidentally removed, causing ChannelsExtended and pypi-only unsat variants to skip per-platform satisfiability (losing validated source timestamps). - Extract `merge_source_timestamp_hints` into a static method with unit tests for distinct-variant and conflict-dropping behaviour. - Replace all `thread::sleep` calls in timestamp tests with deterministic host-dep timestamps via `PackageBuilder::with_timestamp`. The explicit-update test rewrites mock repodata to publish a newer package between locks. - Add integration test for solve-group environments sharing a source package (exercises merge_source_timestamp_hints end-to-end). - Add integration test for channel-appended (ChannelsExtended) with source timestamp preservation.
d34dfd5 to
a7fe0c1
Compare
hunger
approved these changes
Apr 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When the lock file is recomputed (e.g. because a binary dependency was added or a channel was appended), source packages whose metadata hasn't changed no longer receive a fresh timestamp. Instead, their validated timestamp from the previous lock file is propagated as a hint into the re-solve, producing a source-record cache hit and preserving the original timestamp. This avoids unnecessary rebuilds of unchanged source packages.
The satisfiability checking phase was restructured to run source metadata validation in parallel with package verification (via
futures::join!). Previously these ran sequentially. A newPlatformSatisfiabilityOutcomestruct carries both the verification result and a side-channel of validated source timestamps back to the caller. For solve groups, timestamps from multiple environments are merged by taking the maximum when they disagree on the same output.A
PlatformVerificationSetupstruct was introduced to compute channel config, variants, virtual packages, and build environment once per platform instead of duplicating this logic across partial-record resolution, source validation, and package verification.Also fixes a regression where the
should_disregard_condaguard was accidentally removed, causingChannelsExtendedand pypi-only unsatisfiability to skip per-platform checks entirely.How Has This Been Tested?
Six deterministic integration tests covering timestamp reuse across different re-lock scenarios, using mock channels with explicit package timestamps and in-memory build backends.
pixi update --packagewith newer package published to mock channel: timestamp advancesChannelsExtended): source timestamp preservedUnit tests for the solve-group timestamp merge logic cover distinct variants and max-of-conflicting behaviour.
AI Disclosure
Tools: Claude Code (Opus 4.6)
Checklist: