Development workflow
How a change becomes a signed release: patch-first development, verification, and explicit gates.
SourbyCraft is maintained against a pinned upstream and a patch tree. The unit of change is a patch at the smallest seam that owns the behavior, not a hand edit to generated sources. This keeps the upstream relationship auditable.
Patch-first
./gradlew applyPatches
# edit the smallest seam that owns the behavior
./gradlew rebuildPatches
./gradlew build
# release candidate gates, not a developer local run
# build + boot + shutdown + reproducibility + signatureThe release job starts from a clean checkout, applies the patches, builds, boots, shuts down, and compares the reproducible hash. A developer’s working directory is not a release artifact.
Gates
| Compile | Clean build from the pinned tree. |
| Unit + integration | Behavior at the ownership seam, not compilation alone. |
| Boot + shutdown | A real server boot and a clean stop. |
| Region ownership | Cross-region paths and thread checks. |
| Reproducible | Fresh-checkout hash match. |
| Signature + SBOM | Ed25519 signature, manifest, CycloneDX inventory. |
| Documentation | Install, boundary, and release notes for the artifact. |
| Claim discipline | No unverified benchmark and no borrowed STABLE label. |
Labels
REL means the jar is published. STABLE is a separate qualification claim, reserved for Build 49. A hotfix is a narrow backport on a release branch; it does not promote the channel.
What green does not prove
- A green build does not prove that a region is owned correctly.
- A successful boot does not prove that shutdown is safe.
- A profile does not prove a performance improvement without a named workload.
- A published jar does not earn the STABLE label by existing.
The standalone workflow page describes the same loop with the release gates in context.
Continue
Vision explains the priority ladder behind these gates;Operations covers the runtime they protect.