---
title: Go releases
editUrl: https://github.com/Cratis/Arc.Go/edit/main/Documentation/releases.md
description: This repository is in early development and has no tagged Go release yet. Repository setup uses no-release; the first implemented, minor-labeled release…
lastUpdated: 2026-10-03T00:00:00.000Z
---

This repository is in early development and has no tagged Go release yet. Repository setup uses `no-release`; the first implemented, minor-labeled release will be v0.1.0. Experimental releases remain v0.x until an approved stable launch.

## Release intent

Every PR has exactly one of `major`, `minor`, `patch`, or `no-release`. While v0.x, use minor for breaking experimental API changes and patch for compatible fixes. Describe breaking changes explicitly in the release notes. Dependabot PRs use `no-release`; a dependency change that needs publication requires a deliberate release-bound maintainer change.

The merged PR body becomes the GitHub Release notes verbatim. Use the [contribution guide](https://github.com/Cratis/Arc.Go/blob/main/CONTRIBUTING.md) and PR template, and keep verification and review notes in a PR comment.

## Publication

A push to main runs the Go and Markdown gates before preparing a release. The release action creates the immutable `vX.Y.Z` tag and GitHub Release only after its job succeeds. Dependent jobs read back the release and tag target, fetch the exact version through `proxy.golang.org`, verify the module archive, and request its pkg.go.dev page. Documentation rendering is asynchronous.

There is no separate registry upload or Go publishing credential. GitHub tags are Go module versions; the workflow uses its scoped `GITHUB_TOKEN` for GitHub writes. Keep the canonical lowercase root module path, `github.com/cratis/arc.go`. The supported nested-module exceptions are `tools/` (`github.com/cratis/arc.go/tools`) and `integrations/chronicle/` (`github.com/cratis/arc.go/integrations/chronicle`), and `integrations/mongodb/` (`github.com/cratis/arc.go/integrations/mongodb`). Each module builds independently with `GOWORK=off`, without a sibling checkout, secrets, or local replacements.

The workflow publishes only root `vX.Y.Z` tags. Independent `tools/vX.Y.Z`, `integrations/chronicle/vX.Y.Z`, and `integrations/mongodb/vX.Y.Z` tags are deferred until the nested-module release pattern in [Fundamentals.Go#16](https://github.com/Cratis/Fundamentals.Go/issues/16) is established. The generator and Chronicle adapter currently use fetchable develop revisions; MongoDB pins pushed Arc revision `a094266` through its fetchable pseudo-version and Fundamentals `v0.1.0`. A root tag does not release any nested module. MongoDB publication requires a released root pin and separately approved nested-module release policy; this admission does not change root publishing.

Wait for Publish to finish before merging another release-bound PR: GitHub concurrency can replace a pending run even when running jobs are not cancelled.

## Major versions

`GO_RELEASE_MAJOR_CEILING` defaults to 0. Set it to 1 only for a maintainer-approved v1 launch and refresh the PR policy check. A major release must be reviewed and merged by a human. Values above 1 are rejected: Go v2+ requires a `/vN` module path, changed imports, and a separately reviewed release design. The current workflow does not publish prereleases or nested modules.

## Recovery

If proxy indexing fails after publication, rerun the failed jobs. A full rerun resolves the existing stable release for the same commit and indexes that tag without bumping again. Investigate any conflicting tag or release; never move or delete a published tag. Correct a bad release with a new version and, where appropriate, a Go `retract` directive.

The first public-proxy installation and pkg.go.dev visibility can be verified only after a release exists. Central Cratis documentation publication requires registering this repository in Cratis/Documentation and setting the repository variable `DOCUMENTATION_ENABLED` to `true`; it is independent of Go module indexing.
