forge
Generic forge contract (ForgeService) + GitHub/GitLab adapters.
| Latest | 0.0.6 |
|---|---|
| Versions | 6 |
| Category | Modules & tooling |
| Maintainers | Matt Marshall |
| Registry | https://registry.tbzl.dev/modules/forge/ |
| Source | github.com/fastverk/forge |
bazel_dep(name = "forge", version = "0.0.6")
View source & releases on GitHub ↗
[!IMPORTANT] This repository is retired.
forgeis developed in thefastverk/platformship vehicle, atforge/. 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 andgit_overridepins stay valid. Theforge.v1protos are published fromfastverk/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.
| version | toolchain |
|---|---|
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 |
| repo | extension |
|---|---|
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.
| Atom | Resolved here | Elsewhere |
|---|---|---|
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#
Depends on
Used by (1 in the registry)
Versions#
6 published versions, newest first. Each resolves to an immutable, integrity-checked archive.
| Version | Integrity (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 gRPCForgeService+ message DTOs (RepoRef,ChangeRef,FileBlob,CiStatus,ChangeState).- Async
Forgetrait +GitHubForge(octocrab + GraphQL auto-merge) andGitLabForge(REST v4, Bearer auth, merge-when-pipeline-succeeds) adapters.