wave
Cross-repo dependency-cascade engine + CLI — not Renovate.
| Latest | 0.0.1 |
|---|---|
| Versions | 1 |
| Category | Modules & tooling |
| Maintainers | Matt Marshall |
| Registry | https://registry.tbzl.dev/modules/wave/ |
| Source | github.com/fastverk/wave |
bazel_dep(name = "wave", version = "0.0.1")
View source & releases on GitHub ↗
[!IMPORTANT] This repository is retired.
waveis developed in thefastverk/platformship vehicle, atwave/. 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 andgit_overridepins stay valid. Thewave.v1protos are published fromfastverk/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 (BazelMODULE.bazel+ npmpackage.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.
| version | toolchain |
|---|---|
0.0.1 | @rust_toolchains//:all |
| repo | extension |
|---|---|
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.
| Atom | Resolved here | Elsewhere |
|---|---|---|
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#
Depends on
Versions#
1 published version, newest first. Each resolves to an immutable, integrity-checked archive.
| Version | Integrity (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 (BazelMODULE.bazel+ npmpackage.json), cross-repo DAG assembly with longest-path tiers + cycle detection, a resumable reconcile state machine (open → CI → merge → publish-detect → next tier) over theforgecontract, 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.