Repository navigation
fix(#631): exact pins resolve deprecated and revoked records (spec 005 FR-004, decision 127 Q11) - #632
Merged
Conversation
…5 FR-004, decision 127 Q11) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10 tasks
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.
Summary
resolve_synced_public_registry_recordfiltered onis_active(), so an exact pin to a deprecated or revoked version returnedNone. That contradicts three approved sources:The exact resolver now returns the record whatever its lifecycle status. The record carries
lifecycle_status()and, when revoked,revocation, so the consumer can fail closed. Range resolution is unchanged and still skips deprecated and revoked versions.Governing Spec
Project Item
What Changed
crates/traverse-registry/src/public_registry_state.rs:is_active()filter;Noneassertions. A deprecated exact pin resolves withDeprecatedstatus. A revoked exact pin resolves withRevokedstatus and itsrevocation. A revoked-only range still fails withOnlyDeprecatedVersions.docs/decision-log.mdentry 131.0.27.0. crates.io's newest version is0.25.0, and neither0.26.0nor0.27.0was ever tagged, so0.27.0is the first published version with the spec 026 types and this behaviour.Validation
cargo test -p traverse-registry --locked: all green (233 unit tests, plus the integration suites).cargo clippy -p traverse-registry --all-targets --locked -- -D warnings: clean.=0.25.0and doesn't call the exact resolver.Follow-up (owner action)
Publish through the normal
v0.27.0tag push (010-crate-publish-pipeline), then tell traverse#1598.🤖 Generated with Claude Code