chore: gate glob v1 and bifrost v1.8+ in Dependabot - #838
Conversation
glob v1 is a breaking API change, not just the engine rewrite its release notes describe: Compile went from returning the Glob interface to a concrete *Pattern, and the Glob interface was removed. authlib declares glob.Glob in three packages (listener/skiphost, routing, plugins/tokenbroker), and OPA declares it as well — v1/topdown/glob.go and v1/bundle/bundle.go, still true at 1.20.1 — so glob v1 cannot be adopted here until OPA migrates. That is outside this repo, so #829 would be reopened on every glob release with no action available. Applied to the four gomod directories that require glob and have a Dependabot entry. storage/redis does not require it; cmd/authbridge-cpex and cmd/authbridge-praxis require it but have no Dependabot entry. Matching semantics are deliberately not cited as a reason: a v0.2.3-vs-v1.0.0 differential over the repo's real pattern corpus (36 patterns x 29 hosts) differed on two cells only, both on the empty host, which skiphost never passes to glob. The contract is pinned separately in #837. Drop this ignore once OPA is on the glob v1 API. Assisted-By: Claude (Anthropic AI) <noreply@anthropic.com> Signed-off-by: Hai Huang <huang195@gmail.com>
|
Warning Review limit reachedNext included review available in 29 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: 📒 Files selected for processing (1)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
mrsabath
left a comment
There was a problem hiding this comment.
Summary
Stops Dependabot re-proposing glob v1 on every release while the blocker sits in OPA, not here. I verified the substance:
- Scoping is exact. The dependabot gomod directories ∩ glob-requiring modules = {authlib, authbridge-proxy, authbridge-envoy, abctl} — precisely the four that got an ignore block.
storage/redishas a Dependabot entry but no glob;cmd/authbridge-cpexandcmd/authbridge-praxisrequire glob but have no Dependabot entry. Both exclusions are correct. - The block is warranted, not premature. Confirmed against source that OPA v1.20.1 (what #836 just bumped to) still declares the
glob.Globinterface —v1/topdown/glob.go(map[string]glob.Glob,val.(glob.Glob)) andv1/bundle/bundle.go(path glob.Glob). glob v1 removed that interface, so OPA at 1.20.1 genuinely can't compile against it. #829 is unactionable from this repo, exactly as described. - Correctly narrow. Scoped to
version-update:semver-majoronly, so patch/minor glob updates still flow, and the exit condition is documented (drop once OPA is on the glob v1 API).
Comments cross-reference the shared authlib entry and #829/#837; the semantics note dovetails with the contract test in #837. All CI green (YAML Lint, all three Go CI jobs). DCO signed.
对症下药 (treat the illness at its source) — ignoring the bump where the blocker actually lives rather than fighting it downstream. LGTM.
Areas reviewed: GitHub config (dependabot.yml), cross-repo dependency verification (OPA), YAML lint, CI status
Commits: 1, signed-off (DCO passes)
CI status: passing (incl. YAML Lint, all Go CI)
Summary
Stops Dependabot re-proposing two dependency updates whose blockers are not code we can fix, so they don't come back every release with no action available.
Both are expressed narrowly — patch and minor updates keep flowing in both cases.
1. gobwas/glob — major versions ignored
glob v1 is a breaking API change, not just the engine rewrite its release notes describe:
Compilewent from returning theGlobinterface to a concrete*Pattern, andGlobwas removed. authlib declaresglob.Globin three packages (listener/skiphost,routing,plugins/tokenbroker) — and OPA declares it too (v1/topdown/glob.go,v1/bundle/bundle.go), still true at 1.20.1, so the OPA bump in #836 does not unblock it.Nothing in this repo can fix that, so #829 is unactionable rather than deferred. Drop the ignore once OPA is on the glob v1 API.
Matching semantics are not the reason — a v0.2.3-vs-v1.0.0 differential over the repo's real pattern corpus (36 patterns × 29 hosts) differed on two cells, both on the empty host, which
skiphostnever passes to glob. The contract is pinned separately in #837.2. maximhq/bifrost/core — >=1.8.0 ignored
bifrost v1.8.0 raised its own
godirective to1.27.0, which Go propagates into every module in the workspace. #830 (v1.8.4) therefore rewrotego 1.26.5→go 1.27.0in all sevengo.modfiles and failed CI againstgo.work, which still says1.26.5.Adopting v1.8.x is a Go 1.27 migration, not a dependency bump:
authbridge/go.work→1.27.0golang:1.26-alpinebuilders incmd/*/Dockerfile→ 1.27. Those setGOWORK=offbut notGOTOOLCHAIN, so they would not fail — they would silently download the 1.27 toolchain mid-build and ship images where a pinned 1.26 base bootstraps an unpinned 1.27.It buys nothing today: authlib touches three symbols from
core/schemasin one six-line function.Expressed as a version range rather than
update-typesso v1.7.x patches keep flowing — #840 takes v1.7.15, the newest release still ongo 1.26.5. There is no API break waiting: v1.8.4 was built and tested against authlib withgo.workat1.27.0and the full suite passed. This gates only the toolchain decision. Drop the range when that move is made deliberately.Scope
/authbridge/authlib/authbridge/cmd/authbridge-proxy/authbridge/cmd/authbridge-envoy/authbridge/cmd/abctl/authbridge/storage/rediscmd/authbridge-cpexandcmd/authbridge-praxisrequire glob but have no Dependabot entry, so nothing to gate there.Validated as parsable YAML with the expected ignore entries per directory.
Related: #840 (bifrost v1.7.15), #837 (glob contract test), #829 and #830 (both closed).
Assisted-By: Claude Code