ci: test the upstream package floor on a coherent module graph - #11
Merged
Conversation
The upstream minio/pkg floor job dropped the shared-package replacement but kept the CLI replacement, so it built pgsty/mc against upstream github.com/minio/pkg/v3. pgsty/mc is the SILO CLI and compiles against silo-pkg's strict policy API, so that hybrid cannot build -- and no consumer resolves it: a build without the shared-package replacement also has no CLI replacement and gets upstream minio/mc. Drop both replacements together and assert that neither remains, so the job tests the graph an upstream consumer actually sees. Console's own source already builds, vets, tests, and cross-compiles against that graph, which is the promise this job exists to keep. Record in the README that the SILO replacements are adopted as one set. Signed-off-by: Feng Ruohang <rh@vonng.com>
Replacement directives are not inherited, so a module that embeds Console and adds none of its own resolves every dependency upstream. That is the graph the advertised floor describes, so drop all three SILO replacements rather than the shared package alone, and assert that none of them survives. Dropping only the shared package left pgsty/mc in the graph. pgsty/mc compiles against the SILO package's strict policy API, so Go resolved that pairing and then failed to build it -- the job reported a partial override Console does not support instead of testing the floor. Also state the coupling in the README rather than implying the pairing is unresolvable: Go will resolve it, Console just neither supports nor tests it. Signed-off-by: Feng Ruohang <rh@vonng.com>
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.
Problem
The
Build with upstream minio/pkg v3.6.1job fails atorigin/main:Confirmed on an unmodified
main(workflow_dispatchrun 33301175563): that job is the only failure there.The job dropped the shared-package replacement but kept the CLI replacement, so it built
pgsty/mcagainst upstreamgithub.com/minio/pkg/v3.pgsty/mcis the SILO CLI and compiles against silo-pkg's strict policy API, so that pairing cannot build. Go will resolve it — replacements are not inherited, so a downstream module can select one fork without the other — but it is an unsupported partial override, not the graph an ordinary embedder gets. An embedder that adds none of Console's replacements resolves upstreamminio/mcand upstreamminio/pkg/v3together, and that graph builds.ParseConfigStrictexists in upstreamminio/pkgv3.11.0 but not v3.6.1;Resource.IsBareARNexists in no upstream version. Raising the floor would therefore not fix it.Blast radius
This is not one red check.
Permissions Tests(all 10 parts), and everything else downstream, depend oncompile-binary, which depends on this job:On the same
mainrun, all 10 permission-test jobs are reportedskipped. So since the twodeps:commits landed on 2026-08-29, the entire downstream half of Console's CI has not run at all.It went unnoticed because this fork's workflows had only ever been started by hand: every run in the repository's history before this PR is
workflow_dispatch, and the last one predates those commits.Change
Drop all three SILO replacements rather than the shared package alone, and assert that none survives. Record the "adopted as one set" rule in the README, and add a CHANGELOG entry.
Verification
The job's script was run verbatim on this branch before pushing, and the job now passes in CI:
go mod tidyresolvesminio/pkg/v3 v3.6.1,minio/mc v0.0.0-20251106162529-77f82e18b540,minio-go/v7 v7.3.0, all unreplacedgo vet ./...,go vet -tags=testrunmain ./...,go test ./...passlinux/amd64andnetbsd/amd64builds passConsole's own source needed no change: it already honors the README promise that it avoids fork-only source APIs, and now there is a job that actually proves it.