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

forge

Generic forge contract (ForgeService) + GitHub/GitLab adapters.

Latest0.0.6
Versions6
CategoryModules & tooling
MaintainersMatt Marshall
Registryhttps://registry.tbzl.dev/modules/forge/
Sourcegithub.com/fastverk/forge
MODULE.bazelstarlark
bazel_dep(name = "forge", version = "0.0.6")

View source & releases on GitHub ↗

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

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

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

forge

Generic forge contract (ForgeService) + GitHub/GitLab adapters.

The operations a code-hosting forge (GitHub, GitLab, …) provides that a cross-repo automation needs, modeled once as a proto service so a single contract covers every host:

  • read a repo’s default branch + a file;
  • create a branch, commit a file;
  • open a change (PR/MR), enable auto-merge / merge-when-pipeline-succeeds;
  • poll the change’s pipeline, merge, read the change’s state.

proto/forge/v1/forge.proto defines the gRPC ForgeService; in-process consumers use the hand-written async Forge trait whose methods take/return the same proto messages (RepoRef, ChangeRef, FileBlob, CiStatus, ChangeState). GitHubForge (octocrab + GraphQL auto-merge) and GitLabForge (REST v4, Bearer auth, merge-when-pipeline-succeeds) implement it.

Built with wave, the cross-repo dependency-cascade engine.

Install

.bazelrc:

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

MODULE.bazel:

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

Then depend on @forge//:forge from a rust_library. For Cargo/IDE iteration the crate also builds standalone (cargo build).

Conformance#

5 findings across 2 invariants. 15 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.6@rust_toolchains//:all
0.0.6@zig_sdk//toolchain:linux_amd64_gnu.2.28
0.0.6@zig_sdk//toolchain:linux_arm64_gnu.2.28
D3 a repo name CHOSEN on a SHARED extension must be namespaced why this matters ↗
repoextension
crates@rules_rust//crate_universe:extension.bzl
distroless_cc@rules_oci//oci:extensions.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
aspect_bazel_lib 2.22.5 2.8.1 ×1
bazel_lib 3.0.0 3.2.2 ×17
bazel_skylib 1.8.2 1.9.0 ×2
gawk 5.3.2.bcr.1 5.3.2.bcr.3 ×17
jq.bzl 0.1.0 0.4.0 ×17
nlohmann_json 3.6.1 3.12.0.bcr.1 ×1
package_metadata 0.0.2 0.0.5 ×3
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
tar.bzl 0.5.1 0.10.4 ×170.6.0 ×1
upb 0.0.0-20220923-a547704 0.0.0-20230516-61a97ef ×1
yq.bzl 0.1.1 0.3.4 ×17

Dependencies#

forge 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.4hermetic_cc_toolchain4.1.0rules_oci2.2.6rules_pkg1.0.1aspect_bazel_lib2.22.5rules_shell0.6.1devstardoc0.7.2dev

Used by (1 in the registry)

Versions#

6 published versions, newest first. Each resolves to an immutable, integrity-checked archive.

VersionIntegrity (sha256)Source archive
0.0.6 latest e+pXZE/5AL5TeONX… tag archive ↗
0.0.5 WecuqjcXt604/K2I… tag archive ↗
0.0.4 6SKiU9c+ibJBYJsN… tag archive ↗
0.0.3 mdIrzn6jD6EgetfV… tag archive ↗
0.0.2 suu4ne9//eTrtNjR… tag archive ↗
0.0.1 6kSmnrbY3/qH1Spm… tag archive ↗

Changelog#

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

0.0.1 — initial

  • proto/forge/v1/forge.proto: generic gRPC ForgeService + message DTOs (RepoRef, ChangeRef, FileBlob, CiStatus, ChangeState).
  • Async Forge trait + GitHubForge (octocrab + GraphQL auto-merge) and GitLabForge (REST v4, Bearer auth, merge-when-pipeline-succeeds) adapters.

← All modules