tomato·bazeldocs v0 · latest
Docs/Reference/Modules/wave

wave

Cross-repo dependency-cascade engine + CLI — not Renovate.

Latest0.0.1
Versions1
CategoryModules & tooling
MaintainersMatt Marshall
Registryhttps://registry.tbzl.dev/modules/wave/
Sourcegithub.com/fastverk/wave
MODULE.bazelstarlark
bazel_dep(name = "wave", version = "0.0.1")

View source & releases on GitHub ↗

[!IMPORTANT] This repository is retired. wave is developed in the fastverk/platform ship vehicle, at wave/. Open issues and pull requests there.

The published module is unchanged — bazel_dep(name = "wave", version = "0.1.0") resolves exactly as before. This remote keeps its full history and every tag, so existing registry entries and git_override pins stay valid. The wave.v1 protos are published from fastverk/contracts.

Retired at c689d65, the commit the vehicle imported — nothing here is unimported. Background: Consolidation.

wave

Cross-repo dependency-cascade engine — not Renovate.

When an upstream module publishes a new version, wave opens version-bump changes in every downstream repo, auto-merges them on green, and cascades the bump through the dependency DAG in tier order: a tier-2 repo’s bump opens only once the tier-1 repo it consumes has actually published. Built on forge, so it drives GitHub and self-hosted GitLab through one contract.

  • wave-core — the engine: a version-constraint policy, a graph-provider chain (Bazel MODULE.bazel + npm package.json, extensible), cross-repo DAG assembly with longest-path tiers + cycle detection, a resumable reconcile state machine (PENDING → MR_OPEN → CI_RUNNING → CI_GREEN → MERGING → MERGED → PUBLISHED), and tracing (a durable event log projected to a tier waterfall).
  • wave — the CLI: propose, start, status, reconcile, trace.

Use

export GITLAB_TOKEN=# or GITHUB_TOKEN / FORGE_TOKEN
wave propose @acme/core 1.4.0 --forge gitlab --host gitlab.example.com --group acme
wave start   @acme/core 1.4.0 --forge gitlab --host gitlab.example.com --group acme
wave reconcile                     # the daemon tick — run on a timer / after CI
wave trace <wave-id>               # the cascade waterfall

Repos come from --group/--org (enumerated via the forge REST API) or an explicit --repos a,b,c.

Install

.bazelrc:

common --registry=https://registry.fastverk.com/
common --registry=https://bcr.bazel.build/

MODULE.bazel:

bazel_dep(name = "wave", version = "0.0.1")

Depend on @wave//wave-core:wave_core (the engine) or run the @wave//wave binary. The crates also build with cargo against a checked-out sibling forge.

Conformance#

2 findings across 2 invariants. 8 contested atoms. See how gating works or the full report.

D2 a non-dev register_toolchains propagates to every transitive consumer why this matters ↗
versiontoolchain
0.0.1@rust_toolchains//:all
D3 a repo name CHOSEN on a SHARED extension must be namespaced why this matters ↗
repoextension
crates@rules_rust//crate_universe:extension.bzl

Contested atoms

Third-party modules where this module resolves a different version than others do. Not a violation of anything this module did — it is the actionable form of a registry-level convergence finding, and the sentence a maintainer can act on.

AtomResolved hereElsewhere
apple_support 1.24.2 2.2.0 ×1
bazel_skylib 1.8.2 1.9.0 ×2
nlohmann_json 3.6.1 3.12.0.bcr.1 ×1
protobuf 33.4 34.0.bcr.1 ×2
rules_jvm_external 6.7 6.8 ×4
rules_python 1.7.0 2.0.1 ×1
rules_swift 3.1.2 3.6.1 ×1
upb 0.0.0-20220923-a547704 0.0.0-20230516-61a97ef ×1

Dependencies#

wave in the registry graph — what it depends on (left) and what depends on it (right).

Depends on

platforms1.0.0bazel_skylib1.8.2rules_rust0.70.0protobuf33.4forge0.0.1rules_shell0.6.1devstardoc0.7.2dev

Versions#

1 published version, newest first. Each resolves to an immutable, integrity-checked archive.

VersionIntegrity (sha256)Source archive
0.0.1 latest b4jHOxKjkKD4rq9s… tag archive ↗

Changelog#

All notable changes to wave. The format is loosely Keep a Changelog — version headers mirror the published bazel-registry entries.

0.0.1 — initial

  • wave-core: the cascade engine — version-constraint policy, a graph-provider chain (Bazel MODULE.bazel + npm package.json), cross-repo DAG assembly with longest-path tiers + cycle detection, a resumable reconcile state machine (open → CI → merge → publish-detect → next tier) over the forge contract, and tracing (durable event log + projection to a tier waterfall).
  • wave: the CLI — propose / start / status / reconcile / trace. Tokens from the environment; repos enumerated via the forge REST API or --repos.

← All modules