diff --git a/.github/workflows/jobs.yaml b/.github/workflows/jobs.yaml index 8c93a819e2..dfe12b4dc5 100644 --- a/.github/workflows/jobs.yaml +++ b/.github/workflows/jobs.yaml @@ -61,13 +61,24 @@ jobs: uses: actions/setup-go@v6 with: go-version: 1.27.x - - name: Remove the SILO package replacement and test the advertised floor - run: | + - name: Remove the SILO replacements and test the advertised floor + run: | + # Replacements are not inherited, so an embedder that adds none of + # them resolves every dependency upstream. Model exactly that: drop + # all three SILO replacements, not just the shared package. Dropping + # the shared package alone leaves pgsty/mc, which compiles against + # silo-pkg's strict policy API; Go resolves that graph and then fails + # to build it. That partial override is a configuration Console does + # not support, so failing on it says nothing about the floor. go mod edit -dropreplace=github.com/minio/pkg/v3 + go mod edit -dropreplace=github.com/minio/mc + go mod edit -dropreplace=github.com/minio/minio-go/v7 go mod edit -require=github.com/minio/pkg/v3@v3.6.1 go mod tidy test "$(go list -m -f '{{.Version}}' github.com/minio/pkg/v3)" = "v3.6.1" - test -z "$(go list -m -f '{{if .Replace}}{{.Replace.Path}}{{end}}' github.com/minio/pkg/v3)" + for module in github.com/minio/pkg/v3 github.com/minio/mc github.com/minio/minio-go/v7; do + test -z "$(go list -m -f '{{if .Replace}}{{.Replace.Path}}{{end}}' "$module")" + done go vet ./... go vet -tags=testrunmain ./... go test ./... diff --git a/CHANGELOG.md b/CHANGELOG.md index 1642316a02..ed94c541f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## Unreleased + +Dependency and compatibility gates: + +- Corrected the upstream `minio/pkg` floor job to drop all three SILO replacements rather than the shared package alone. Replacements are not inherited, so an embedder that adds none of them resolves every dependency upstream, and that is the graph the floor describes. Removing only the shared package left `pgsty/mc`, which compiles against silo-pkg's strict policy API; the job then failed on a partial override Console does not support instead of testing the floor +- Recorded that the SILO replacements are adopted as one set: `pgsty/mc` depends on the SILO package's strict policy semantics, so a build that keeps the CLI replacement must keep the shared-package replacement too +- Updated the shared package replacement to the reviewed silo-pkg remote-env URL scheme repair and the CLI replacement to the reviewed pre-release MCLI source + ## Release v2.2.1 Dependency alignment: diff --git a/README.md b/README.md index 47cba6226a..36fb871a39 100644 --- a/README.md +++ b/README.md @@ -153,6 +153,14 @@ replace ( ) ``` +Adopt these selections as one set. The CLI and the shared package are coupled: +`pgsty/mc` compiles against the SILO package's strict policy API, so a build that +keeps the CLI replacement must keep the shared-package replacement too, and a +build that takes neither resolves upstream `github.com/minio/mc` and upstream +`github.com/minio/pkg/v3` together. Go will resolve a partial override that pairs +one project's CLI with the other's shared package, but Console does not support +it and does not test it. + The logical requirements remain on resolvable upstream versions because those requirements are part of Console's public module graph, while the replacements select the released SILO implementations for this repository's own builds. An