Preserve replacement selectors during recovery

This commit is contained in:
2026-11-04 01:25:34 +00:00
parent ec67496569
commit b5c6638538
4 changed files with 57 additions and 14 deletions

View File

@@ -12,8 +12,10 @@ For CLI publication recovery, the package selects a registered module tool or
prepares a durable private module root for an API-only consumer. Go's module
graph query includes transitive dependencies; preparation retains module
requirements, versioned replacements, and checksums. Local replacements resolve
against their original module directory before relocation. The original main
module remains a local replacement, including when releasing ReleaseKit itself.
against their original module directory before relocation. Each relocation
updates the directive's destination and retains its path and version selector.
The original main module remains a local replacement, including when releasing
ReleaseKit itself.
The private root provides tool resolution independently of consumer vendoring.
API-only preparation discovers the host target for dependency inspection. The
returned invocation carries its directory and tool arguments; the CLI's later

View File

@@ -172,6 +172,8 @@ and a new module-selection defect in the smoke recipe.
### Relocate recovery replacements in one pass without merging selectors
**Completed.** Recovery rewrites relative destinations in one pass. The CLI regression verifies both selectors, the selected tool, the rejected-push status, and later reconciliation.
**Evidence:** The API-only path in
[`RecoveryTool`](../../internal/gotool/recovery.go) walks the parsed
`go.mod` replacements. It calls `modfile.AddReplace` for each relative