Bazel Version Policy
Stable Baseline
GloriousFlywheel and its overlays pin Bazel 7.4.x as the stable baseline.
The version is locked in .bazelversion and enforced via Bazelisk.
Version Matrix
| Repository | Version | Module System | Status |
|---|---|---|---|
| GloriousFlywheel | 7.4.0 | Bzlmod | Primary |
| tinyland-infra | 7.4.0 | Bzlmod | Aligned |
| tinyland-infra | inherited | local_path_override | Consumer |
| remote-juggler | 7.4.1 | Bzlmod | Minor drift |
| tinyland.dev | 8.1.1 | Bzlmod | Testing 8.x |
| DenmarkSmbCache | mixed | WORKSPACE | Exception |
Upgrade Path
- 7.4.x → 7.4.y: Patch updates applied freely
- 7.4.x → 8.x: Requires compatibility testing (see #107)
- DenmarkSmbCache: Remains on WORKSPACE until
rules_dotnetsupports Bzlmod
Testing a New Version
# In a feature branch, after entering the dev environment and confirming
# the strict shared-substrate cache contract:
echo "8.1.1" > .bazelversion
just cache-contract-strict
scripts/bazel-cache-backed.sh build //...
scripts/bazel-cache-backed.sh test //...
If you intentionally leave BAZEL_REMOTE_CACHE unset or the strict contract
check fails, treat that as compatibility/local debugging only rather than the
intended heavy-work path.
Known Differences in 8.x
- Bzlmod is the default (no need for
--enable_bzlmod) - Some
experimental_flags promoted to stable rules_nixpkgs_core0.13.0 compatible with 8.xaspect_rules_jsmay need version bumps
Intentional Exceptions
DenmarkSmbCache uses WORKSPACE mode because rules_dotnet does not
yet support Bzlmod. This repo uses .bazelversion but skips MODULE.bazel.
Track upstream: https://github.com/bazel-contrib/rules_dotnet