GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Replace a superseded patch generation's wiring on re-pin and remove by mikolalysenko · Pull Request #1035 · SocketDev/socket-patch

Conversation

@mikolalysenko

@mikolalysenko Mikola Lysenko (mikolalysenko) commented Oct 7, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Collaborator

Problem

Audit B07 (the supersede and re-pin lifecycle is broken). When a package release gets a newer patch generation (a superseding patch uuid, a republished version, or a rotated grant token), each writer and each restore handled it in its own way. Nothing enforced "one release has one live owned pin, and the uuid is only its generation". This PR fixes these symptoms:

  • remove <uuid> deletes the manifest entry but leaves the package vendored when the vendor ledger holds an older patch generation #999: remove <uuid> and rollback <uuid> matched the vendor ledger and the hosted pins by the raw identifier only. When the manifest recorded patch B and the ledger still held the vendored generation A, the manifest entry was dropped, A stayed wired, and the run reported success.
  • Hosted cargo re-pin to a superseding patch leaves the old uuid's [registries.socket-patch-*] block in .cargo/config, and remove never deletes it #864 (cargo): a hosted re-pin to B appended [registries.socket-patch-B] and kept A's block, including its token-bearing index URL. remove never swept it.
  • Hosted Go redirect leaves the superseded gopatch module's go.sum lines behind when a newer patch replaces an existing redirect, so go mod tidy is no longer a no-op #682 (Go): a re-pin kept the previous gopatch module's go.sum pair. The re-pin could be to a new uuid, or to the same uuid republished as -socketpatch.2. Afterwards, go mod tidy -diff fails on every patch update.
  • Hosted Maven never re-pins: a superseding patch uuid or a rotated grant token leaves the old wiring in place #266 (Maven): an earlier hosted <base>-socket.<hex8> literal was reported as redirect_maven_dep_version_mismatch and never re-pinned. A rotated grant token left the stale repository <url> in place.

Fixes #999
Fixes #864
Fixes #682
Fixes #266

Change

  • patch::redirect::generation is now the only home of the socket-patch-<uuid> name grammar: PIN_NAME_PREFIX, hosted_pin_name, pin_name_uuid (the exact parser, moved here from redirect/mod.rs), named_generations and superseded_generations. Its module doc states the supersede policy as implemented (see Deferred for the Go and Maven restore gap).
  • Identifier matching (remove <uuid> deletes the manifest entry but leaves the package vendored when the vendor ledger holds an older patch generation #999): ledgers::Ledgers::matching also selects the vendored entries that a matched manifest key claims. ledgers::hosted_pins_matching selects the hosted pins that wire the same release as a matched manifest key. remove and rollback both go through these two functions. As a result, remove <uuid A> / rollback <uuid A> of a record that a later scan superseded with B also unwinds B's hosted pin. This extends Fix rollback/remove of an agent record superseded by a hosted pin (#933) #934 (merged), which covers the purl identifier, to the uuid identifier. CLI_CONTRACT now documents it for both commands, including that the hosted restore can refuse offline.
  • Cargo (Hosted cargo re-pin to a superseding patch leaves the old uuid's [registries.socket-patch-*] block in .cargo/config, and remove never deletes it #864): the rewriter drops a superseded generation's registry block (redirect_cargo_superseded_registry_removed). The restore sweeps every [registries.socket-patch-<uuid>] block that no root or member Cargo.toml and no Cargo.lock still references.
  • Go (Hosted Go redirect leaves the superseded gopatch module's go.sum lines behind when a newer patch replaces an existing redirect, so go mod tidy is no longer a no-op #682): on a refresh that moves a hosted directive, the previous target's exact go.sum pair is removed (redirect_golang_superseded_gosum_removed), unless another replace still targets it.
  • Maven (Hosted Maven never re-pins: a superseding patch uuid or a rotated grant token leaves the old wiring in place #266): a suffixed literal for the same base is re-pinned only if the pom declared a hosted socket-patch-<uuid> repository whose uuid starts with that hex8. A vendored socket-patch-vendor-<uuid> literal is still a mismatch and is skipped. The superseded repository and its Trusted Checksums entries are removed, and that removal handles CRLF checksum files. A repository whose URL differs from the grant's indexUrl is refreshed in place.
  • Docs: the CLI_CONTRACT cargo unwind row, the remove and rollback identifier-matching text, and the Go and Maven notes in docs/ecosystems.md.

Duplicates deleted

Logic Before After
Hosted pin matching for remove/rollback identifiers 2 (remove.rs hosted_pins_matching, inline loop in rollback.rs) 1 (ledgers::hosted_pins_matching)
Same-release predicate (canonical base equal, or composer-equivalent) 4 (ledgers::same_release added earlier in this PR, same_package in vex_sources.rs, same_package in vex/discover/mod.rs, inline in rollback::superseded_by_hosted from #934) 1 (vex::discover::same_release)
socket-patch-<uuid> prefix constant / exact parser 3 (vendor::cargo_config::SOCKET_REGISTRY_PREFIX, the literal in socket_patch_name_uuid_exact, a literal in vex/discover/maven.rs) 1 (generation::PIN_NAME_PREFIX, generation::pin_name_uuid)
socket-patch-<uuid> name formatting in production code 9 (cargo, maven and nuget rewriters; cargo, maven (×2) and nuget restores; vendor/nuget_feed.rs; vex/discover/cargo.rs) 1 (generation::hosted_pin_name)
Maven <repository> lookup by id + own-line removal 1 (private to upstream/maven.rs) 1 (extracted as maven_repositories_with_id / remove_maven_repository, now shared by the rewriter and the restore)

The remaining socket-patch-… literals are in tests, in diagnostics text, and in vex/discover/mod.rs test helpers.

Testing

All commands ran on macOS through the shared limiter with CARGO_INCREMENTAL=0 -j4, after rebasing onto main 1bbcbe3c.

  • cargo test -p socket-patch-core --lib: 5614 passed.
  • cargo test -p socket-patch-cli --all-features --lib -- commands::rollback commands::remove commands::vex_sources: 82 passed.
  • cargo test -p socket-patch-cli --all-features --test remove --test rollback --test in_process_rollback_hosted --test in_process_rollback_vendored --test in_process_redirect --test in_process_remove_repair_lifecycle --test in_process_rollback_all_ecosystems --test e2e_golang_hosted_state --test e2e_redirect_cargo_shapes --test e2e_vex --test e2e_vex_redirect --test e2e_vex_vendor --test covgap_commands_vex: all green.
  • cargo clippy -p socket-patch-core -p socket-patch-cli --all-targets --all-features: no findings on changed lines. -D warnings fails on this host because of pre-existing findings on main (for example python_crawler.rs unix_default, jvm_jar.rs, and doc-comment blank lines in maven_repo.rs and nuget_feed.rs). Left to CI.
  • Failing first, run against origin/main in a scratch worktree, with only the new test hunks applied:
    • RED on main: owned_pin_generation_matrix::{cargo_repin_drops_the_superseded_registry_block, golang_repin_drops_the_superseded_gosum_pair, maven_repin_moves_the_suffix_and_drops_the_superseded_repository, maven_rotated_grant_token_refreshes_the_repository_url, maven_repin_drops_superseded_checksums_from_a_crlf_file}, upstream::cargo::tests::restore_sweeps_a_leftover_superseded_registry_block, remove_invariants::{remove,rollback}_by_uuid_reverts_vendoring_when_ledger_generation_is_older, in_process_rollback_hosted::remove_and_rollback_by_superseded_record_uuid_unhost_the_release.
    • Guards that pass on main, as intended: maven_vendored_suffix_literal_is_not_a_prior_generation (it pins the mismatch skip that the earlier head of this PR broke) and restore_keeps_an_unselected_generation_still_referenced.
  • golang_rewrite.golden was re-blessed. Its re-run cases feed the rewriter's output back in, and that output no longer carries superseded sum lines.
  • Not run locally, left to CI: the Linux and docker suites, and the real-toolchain builds (e2e_redirect_maven_build, e2e_golang_hosted_build, e2e_redirect_cargo_build, mode_migration_cargo).

Deferred

  • Vendored and agent supersede are not unified here. The owned_pin_generation_matrix covers hosted re-pins only, at the planner level. The pending_build / build_failed / not_found policy is still decided per mode. Vendored npm re-scan exits 1 ("Failed to vendor", "1 failed") on every run while a superseding patch's artifact is pending_build / build_failed / not_found, although the vendored older patch is intact; hosted skips the same upgrade with exit 0 #954 (a vendored re-scan exits 1 while a superseding patch is pending) is claimed by Fix open npm issues #1008 (pm:npm). The shared policy (keep the recorded generation and report a skip, as hosted does) should land there or on top of this module.
  • The Go and Maven restores do not sweep residue. They remove only the selected pins' wiring. An old socket module's go.sum pair, or a superseded repository and its checksum entries, left by an older CLI is not swept on remove or rollback. Only the cargo restore sweeps.
  • Scope of the cargo restore sweep. References are read from the root Cargo.toml, the workspace members and Cargo.lock. A block that only a non-member or excluded crate under the root uses (and that its own lock does not name in the root lock) would be swept. The hosted rewriter never writes such a pin itself.
  • NuGet supersede cleanup (an old socket-patch-<uuid> source on re-pin) and gem are not done. Maven and NuGet are lower priority.
  • A Maven checksums file whose every entry is dropped, with no new entries added, is written as a lone newline instead of being deleted.
  • canonical_base_purl still has two copies (rollout.rs and vex/discover/mod.rs). That is out of scope for B07.
  • No maintainer decision was needed. Exit codes and refusal policy are unchanged.

🤖 Generated with Claude Code


Note

Medium Risk
Changes remove/rollback selection and multi-ecosystem lockfile rewrites; mistakes could leave patches half-wired or over-unwind pins, though behavior is heavily tested and fail-closed on restore refusals.

Overview
Enforces one owned pin per package release (patch uuid = generation): a new patch::redirect::generation module centralizes socket-patch-<uuid> naming and supersede detection, and remove / rollback identifiers now span generations—matching a manifest entry also selects the vendored ledger entry that key claims and hosted lockfile pins for the same release, so removing by an older uuid unwinds newer hosted wiring instead of leaving orphan pins (#999).

Hosted re-pins drop stale wiring from the previous generation: Cargo removes unreferenced [registries.socket-patch-<old>] blocks on re-pin and on upstream restore (#864); Go strips the prior gopatch module’s go.sum pair (#682); Maven re-pins earlier -socket.<hex8> literals when the pom still declares that generation’s repository, drops superseded repos/trusted checksums, and refreshes rotated grant URLs (#266). Shared same_release replaces ad-hoc composer/package matching in vex and rollback paths.

CLI contract and ecosystem docs describe the new identifier and unwind behavior; tests cover ledger-generation remove/rollback, superseded hosted unwind, and a cross-ecosystem owned-pin matrix.

Reviewed by Cursor Bugbot for commit 0a9ae86. Configure here.


Generated by Claude Code

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mikolalysenko Mikola Lysenko (mikolalysenko) added the arch-refactor PR opened by the scheduled architecture refactor routine label Oct 7, 2026
Mikola Lysenko (mikolalysenko) and others added 7 commits October 7, 2026 11:35
@mikolalysenko @claude
Match every patch generation of an owned pin in remove and rollback
fc933c3
remove <uuid> and rollback <uuid> matched the vendor ledger and the
hosted pins by the raw identifier only, never by the manifest entries
the identifier selected. When the manifest recorded a superseding patch
B while the ledger still held the vendored generation A, `remove <B>`
dropped the manifest record and left A's vendoring wired, reporting
success (#999).

Ledgers::matching now also selects the vendored entries a matched
manifest key claims, and the new ledgers::hosted_pins_matching selects
the hosted pins wiring the same release as a matched manifest key.
remove and rollback both route through them; the duplicate pin matcher
in remove.rs and the inline loop in rollback.rs are deleted.

Un-ignores remove_by_uuid_reverts_vendoring_when_ledger_generation_is_older
and adds its rollback twin.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko @claude
Drop a superseded hosted generation's wiring on re-pin and restore
d548f08
A hosted re-pin to a superseding patch moved the pin but left the old
generation's wiring behind:

- cargo kept [registries.socket-patch-<old>] in the cargo config, and
  remove never swept it (#864);
- Go kept the old gopatch module's go.sum pair, so `go mod tidy -diff`
  failed after every patch update (#682);
- Maven treated an earlier `-socket.<hex8>` literal as a user mismatch
  and never re-pinned, and a rotated grant token left the stale
  repository URL in place (#266).

Add patch::redirect::generation, the shared owned-pin generation policy:
one live socket-owned pin per release, a re-pin replaces the previous
generation and drops the wiring only it used, and a restore sweeps
every unreferenced generation. The cargo, Go and Maven rewriters and
the cargo restore use it; cargo, Maven and NuGet pin names now come
from its single hosted_pin_name, and the upstream Maven restore reuses
the rewriter's repository lookup/removal instead of its own copy.

Adds an owned_pin_generation_matrix test module (cargo, Go new-uuid
and republish, Maven supersede and token rotation) asserting that no
file names the superseded generation and a re-run is a no-op. The Go
equivalence golden is re-blessed: its re-run cases feed the rewriter's
own output back in, which now carries no superseded sum lines.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko @claude
Document the hosted supersede cleanup for cargo, Go and Maven
0888704
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko @claude
Keep one copy of the pin-name grammar and the same-release check
f80f9af
The `socket-patch-<uuid>` grammar now lives only in
patch::redirect::generation: PIN_NAME_PREFIX, hosted_pin_name and
pin_name_uuid (the exact parser moved there from redirect/mod.rs as
socket_patch_name_uuid_exact). vendor::cargo_config::SOCKET_REGISTRY_PREFIX
is deleted, and the hand-built names in vendor/nuget_feed.rs,
vex/discover/cargo.rs, vex/discover/maven.rs and upstream/maven.rs go
through the generation helpers.

The same-release predicate (canonical base equal, or composer
equivalent) had four copies: ledgers::same_release, same_package in
vex_sources.rs and in vex/discover/mod.rs, and the inline filter in
rollback::superseded_by_hosted. vex::discover::same_release is the one
left; the others are deleted and their call sites routed through it.

The generation module doc now says what is implemented: the Go and
Maven restores do not sweep residue an older CLI left, and vendored
NuGet uses the same socket-patch-<uuid> source key.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko @claude
Re-pin only hosted Maven suffix literals and drop CRLF checksums
8b055eb
A `<base>-socket.<hex8>` literal counted as an earlier hosted generation
whenever its base matched, so a vendored reactor / sbt pin (the same
suffix under a socket-patch-vendor-<uuid> repository) was silently
re-pinned when the vendor ledger was missing. It is now a prior
generation only when the pom declared a hosted socket-patch-<uuid>
repository whose uuid starts with that hex8; otherwise the
redirect_maven_dep_version_mismatch skip stays.

The trusted-checksums drop split a CRLF file one way for the check and
another for the filter, so superseded entries survived and every re-run
rewrote the file. The file is LF-normalized first and both use the same
line test.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko @claude
Test the cargo restore's sweep of superseded registry blocks
29e30b1
A leftover socket-patch-A block beside the live pin B is swept when B is
restored, and the emptied config is deleted (#864). A generation the
restore did not select that a manifest still pins keeps its block.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko @claude
Document and test remove/rollback of a superseded generation by uuid
da19b80
`remove <uuid A>` and `rollback <uuid A>` of a manifest record that a
hosted scan superseded with patch B now unwind B's lockfile pin too (one
owned pin per release). CLI_CONTRACT says so for both commands, and that
the hosted restore can then refuse offline. The in-process test reuses
the #933 fixture and drives both commands by the superseded uuid.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko
Mikola Lysenko (mikolalysenko) force-pushed the arch-fix/supersede-lifecycle branch from 137891d to da19b80 Compare October 7, 2026 16:25
@mikolalysenko
Mikola Lysenko (mikolalysenko) marked this pull request as ready for review October 7, 2026 16:25
Claude (claude) added 2 commits October 7, 2026 17:13
@claude
Merge remote-tracking branch 'origin/main' into arch-fix/supersede-li…
ba6ad63
…fecycle

# Conflicts:
#	crates/socket-patch-cli/CLI_CONTRACT.md
@claude
Update the cargo supersede goldens for the dropped superseded registry
c1b0152
This branch now removes a superseded generation's [registries.*] block on
re-pin (d548f08), but the cargo/cargo/supersede redirect fixture and the
VEX discovery golden still expected the old socket-patch-0000... block to
survive, so redirect_golden and committed_fixture_corpus_matches_golden
failed. Record the new config, the redirect_cargo_superseded_registry_removed
edit, and regenerate the discovery golden with SOCKET_PATCH_UPDATE_GOLDEN.

Co-Authored-By: Claude <[email protected]>
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator Author

bugbot run


Generated by Claude Code

cursor[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cursor[bot]
cursor Bot reviewed Oct 7, 2026
View reviewed changes

@cursor cursor Bot left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Stale Bugbot comment from a previous run.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Tanmay182003
Tanmay Singla (Tanmay182003) approved these changes Oct 7, 2026
View reviewed changes
@claude
Merge remote-tracking branch 'origin/main' into arch-fix/supersede-li…
8921033
…fecycle
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator Author

bugbot run


Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@mikolalysenko Mikola Lysenko (mikolalysenko) mentioned this pull request Oct 7, 2026
On Bun's isolated linker, rollback/remove of a superseded agent record (#934) drops the record and its blobs while the orphaned node_modules/.bun/<pkg>@<ver> copy still holds the agent patch, and the advised bun install relinks it #1084
Closed
cursor[bot]
cursor Bot reviewed Oct 7, 2026
View reviewed changes

@cursor cursor Bot left a comment •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Stale Bugbot comment from a previous run.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread crates/socket-patch-core/src/patch/redirect/mod.rs Resolved

Uh oh!

There was an error while loading. Please reload this page.

Mikola Lysenko (mikolalysenko) and others added 2 commits October 7, 2026 17:01
@mikolalysenko @claude
Index the pom's repositories once per Maven rewrite
49c8d33
The Benchmarks job flagged maven/rescan at +9-11% wall and CPU on three
consecutive heads of this branch. The supersede work added two per-pom
lookups that each re-scanned the whole pom with the repository regex:
the hosted-generation set (one scan per named generation) and the
rotated-token URL refresh (one scan per patched dep, even on a no-op
rescan).

Read every <repository>'s id and url in one pass up front. The hosted
generations come from that index (an exact `socket-patch-<uuid>` id is
the same set the per-uuid lookup produced), and while the pom is still
unchanged the refresh is skipped unless the index shows exactly one
repository with that id whose url differs, which is exactly when
refresh_maven_repository_url would have rewritten it. Once the pom has
changed this run, the refresh runs as before.

Local compare against main (perf profile, 15 paired runs):
maven/rescan +3.8% -> +0.6%; maven/hosted unchanged (+1.7%).

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@claude
Keep a live Maven pin's repository when its uuid shares the hex8
0a9ae86
The superseded-repository cleanup removed every socket-patch-<uuid>
repository whose uuid starts with the old suffix's eight hex digits. The
suffix carries only those eight digits, so another artifact's live
`-socket.<hex8>` pin from a different uuid with the same prefix lost its
repository and stopped resolving. Skip the removal while any
`-socket.<hex8>` literal remains in the pom, and pin it with a two-artifact
re-pin test.

Co-Authored-By: Claude <[email protected]>
@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator Author

bugbot run


Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@mikolalysenko

Mikola Lysenko (mikolalysenko) commented Oct 7, 2026

Copy link
Copy Markdown
Collaborator Author

Burn-down agent handing off to the CI-green driver now holding this PR: on top of your 49c8d33 I pushed 0a9ae86 (rebased, no force) fixing Bugbot thread 4211624219 — Maven re-pin cleanup no longer drops a live pin's <repository> when two patch uuids share the hex8 (test maven_repin_keeps_a_live_pin_sharing_the_hex8). Earlier this run I also merged main (8921033) so the required ci-ok check exists. bugbot run requested on 0a9ae86. I'm not touching this PR further.


Generated by Claude Code

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cursor[bot]
cursor Bot reviewed Oct 7, 2026
View reviewed changes

@cursor cursor Bot left a comment

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issue.

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 0a9ae86. Configure here.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread crates/socket-patch-core/src/patch/redirect/mod.rs Resolved

Uh oh!

There was an error while loading. Please reload this page.

Mikola Lysenko (mikolalysenko) and others added 2 commits October 7, 2026 21:31
@mikolalysenko @claude
Merge remote-tracking branch 'origin/main' into arch-fix/supersede-li…
fb09ae2
…fecycle

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko @claude
Drop a superseded Maven generation's checksums when its hex8 is still…
ddedc7c
… pinned

The hex8-sharing guard skipped the whole superseded-version cleanup, so a
re-pin that kept another artifact's -socket.<hex8> literal also left the
abandoned generation's jar and pom entries in the trusted checksums file.
Those entries are keyed by the artifact's own GAV and cannot belong to the
twin pin, so only the repository removal is now guarded.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko Mikola Lysenko (mikolalysenko) closed this Oct 8, 2026
@mikolalysenko Mikola Lysenko (mikolalysenko) reopened this Oct 8, 2026
@mikolalysenko @claude
Merge origin/main into arch-fix/supersede-lifecycle
f48941e
Pick up #1093 so PR CI runs without the macOS legs.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko
Mikola Lysenko (mikolalysenko) added this pull request to the merge queue Oct 8, 2026
Merged via the queue into main with commit c4e65bc Oct 8, 2026
455 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@mikolalysenko
Mikola Lysenko (mikolalysenko) deleted the arch-fix/supersede-lifecycle branch October 8, 2026 05:51
Mikola Lysenko (mikolalysenko) added a commit that referenced this pull request Oct 8, 2026
@mikolalysenko @claude
Merge origin/main into arch-fix/purl-key
450f7f0
Resolve conflicts with #1035 (supersede lifecycle), #1038 (shared repo-root
walk), and #1033 (unwired VEX copies):

- #1035 added `vex::discover::same_release` and a second
  `canonical_base_purl` there. `PurlKey::same` already treats composer
  version spellings as one release, so every `same_release` call
  (vex_sources, rollback, discover, and `ledgers::hosted_pins_matching`)
  now uses `PurlKey::same`, and the duplicate helpers are dropped.
- Both sides' new ledgers tests are kept.
- The repo-root lookup in `policy` takes main's `utils::repo_root` version.
  `canonical_pypi_purl` stays deleted (nothing calls it now).
- `vex` re-exports main's `UnattestedKind`. `UnwiredCopy::covers` compares
  purls with `PurlKey::same` rather than raw string equality.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
@mikolalysenko Mikola Lysenko (mikolalysenko) mentioned this pull request Oct 8, 2026
Yarn berry hosted pin can't cover a descriptor added after pinning: re-scan refuses with an impossible "dedupe" remedy, and rollback reports success but leaves a lock every yarn install --immutable rejects (YN0028) #1082
Closed
Mikola Lysenko (mikolalysenko) added a commit that referenced this pull request Oct 8, 2026
@mikolalysenko @claude
Merge origin/main into arch-fix/vendored-liveness
22a1b60
Brings in #1044 (governing lock table), #1035, #1038, #1083, #724.
Drop the BUN_LOCK/BUN_LOCKB/NPM_LOCKS imports #1044 added to
npm_flavor.rs: their only user, vendored_entry_in_use, is removed by
this PR (liveness now comes from Discovery::vendor_entry_in_use).
This unused import failed clippy in the merge group.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Mikola Lysenko (mikolalysenko) added a commit that referenced this pull request Oct 8, 2026
@mikolalysenko @claude
Merge origin/main into arch-fix/jvm-layout
db21ba8
Resolve conflicts with #1038 (shared repo-root walk, Option m2_repo) and
#1045; route #1035's superseded-checksum path and the hosted engine's
Gradle root files through vendor::jvm::layout.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Mikola Lysenko (mikolalysenko) pushed a commit that referenced this pull request Oct 8, 2026
@claude
Merge origin/main into arch-refactor/815-line-terminator
a021674
The only conflict was tests/equivalence/golang_rewrite.golden. Both
sides re-blessed it: this branch because go.mod appends now take their
terminator from line_endings::terminator, and main (#1035) because the
superseded-gosum cleanup changes the go.sum output. A textual pick of
either side would drop the other's behavior, so the golden was re-blessed
on the merged code. Lines only one side changed keep that side's
digest; the 53 lines both sides changed get new digests.

Co-Authored-By: Claude <[email protected]>
@mikolalysenko Mikola Lysenko (mikolalysenko) mentioned this pull request Oct 8, 2026
Evict failing merge-queue entries ~35 min sooner #1146
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@cursor cursor[bot] cursor[bot] left review comments
@Tanmay182003 Tanmay Singla (Tanmay182003) Tanmay182003 approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

arch-refactor PR opened by the scheduled architecture refactor routine

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

remove <uuid> deletes the manifest entry but leaves the package vendored when the vendor ledger holds an older patch generation Hosted cargo re-pin to a superseding patch leaves the old uuid's [registries.socket-patch-*] block in .cargo/config, and remove never deletes it Hosted Go redirect leaves the superseded gopatch module's go.sum lines behind when a newer patch replaces an existing redirect, so go mod tidy is no longer a no-op Hosted Maven never re-pins: a superseding patch uuid or a rotated grant token leaves the old wiring in place

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@mikolalysenko @Tanmay182003 @claude
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.