Skip to content

fix contains_cycle false positive on raw string prefix#22

Merged
sunshowers merged 1 commit intomainfrom
sunshowers/spr/fix-contains_cycle-false-positive-on-raw-string-prefix
May 5, 2026
Merged

fix contains_cycle false positive on raw string prefix#22
sunshowers merged 1 commit intomainfrom
sunshowers/spr/fix-contains_cycle-false-positive-on-raw-string-prefix

Conversation

@sunshowers
Copy link
Copy Markdown
Contributor

Detect cycles by checking for path segments (with a trailing /) rather than just using a raw string prefix. We hit this in Omicron where AuditLogEntry was incorrectly detected as a prefix of AuditLogEntryActor, hiding incompatible changes.

This is a minimal fix that (I believe) is correct given the current structure. I'm reworking this in #15 to have stronger types so we can think about this in a more principled manner.

Created using spr 1.3.6-beta.1
@sunshowers sunshowers requested a review from ahl May 5, 2026 18:20
Copy link
Copy Markdown
Collaborator

@ahl ahl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tx; what a mess

@sunshowers sunshowers merged commit ee264c5 into main May 5, 2026
8 checks passed
@sunshowers sunshowers deleted the sunshowers/spr/fix-contains_cycle-false-positive-on-raw-string-prefix branch May 5, 2026 18:22
sunshowers added a commit to oxidecomputer/maghemite that referenced this pull request May 7, 2026
This type was changed in v4, but the change was accidentally also applied to v2 and v3. The nontrivial change was not detected by drift due to oxidecomputer/drift#22, which is now fixed in drift 0.1.4.

Fix this up by introducing types and conversions for v2. This is unfortunately complicated by the fact that a lot of the BGP types are not in mg-admin-types-versions, partly because untangling this is quite difficult. I've opted to just do a relatively minimal fix for now where the v2 types are defined in mg-admin-types-versions, but the newest types continue to live in bgp. I'll try untangling this further in the future.
sunshowers added a commit to oxidecomputer/propolis that referenced this pull request May 8, 2026
Drift 0.1.4 includes oxidecomputer/drift#20 and oxidecomputer/drift#22 -- the latter is particularly important because it can lead to false negatives where actually-incompatible APIs are marked as compatible.
leftwo pushed a commit to oxidecomputer/crucible that referenced this pull request May 8, 2026
Drift 0.1.4 includes oxidecomputer/drift#20 and
oxidecomputer/drift#22 -- the latter is
particularly important because it can lead to false negatives where
actually-incompatible APIs are marked as compatible.
sunshowers added a commit to oxidecomputer/omicron that referenced this pull request May 8, 2026
Drift 0.1.4 has a fix for
oxidecomputer/drift#22, which uncovered an
incompatibility in the external API.

This will unblock #10403.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants