Skip to content

feat(release): independent release lines for the facilitator and the client - #3

Merged
gfanton merged 1 commit into
mainfrom
feat/release-lines
Aug 14, 2026
Merged

feat(release): independent release lines for the facilitator and the client#3
gfanton merged 1 commit into
mainfrom
feat/release-lines

Conversation

@gfanton

@gfanton gfanton commented Aug 14, 2026

Copy link
Copy Markdown
Collaborator

release.yml dispatches on a component. The facilitator keeps the plain semver
tag, which is also the Go module version; the client tags client/vX.Y.Z, because
any bare vX.Y.Z tag would publish a Go version for a release containing no Go
change.

The client publishes to npm through OIDC trusted publishing — no token exists in
this repository. package.json holds the published version and the workflow
refuses a dispatch that disagrees with it, rather than rewriting it. publint and
attw run before the tag push, since a broken exports map cannot be fixed on a
published version.

git describe is pinned to the facilitator's tag line: it returns prefixed tags
too, so a bare describe would stamp a facilitator binary with a client version.

AGENTS.md records the layout, the invariants and what to update when; CLAUDE.md
symlinks to it. docs/releasing.md documents both lines.

…client

release.yml dispatches on a component. The facilitator takes the plain semver tag,
which is also the Go module version; the client tags client/vX.Y.Z, because a bare
vX.Y.Z tag would publish a Go version for a release containing no Go change.

The client publishes to npm through OIDC trusted publishing — no token in this
repository. package.json holds the published version, and the workflow refuses a
dispatch that disagrees with it or names a version already on the registry. publint
and attw are pinned devDependencies, run before publishing and on every pull
request. The client publishes before tagging, so a failed publish leaves nothing
behind.

Both jobs refuse a dispatch off the default branch. Releases of the same component
serialise. goreleaser is pinned exactly and ignores client/v* tags when resolving
versions, and git describe is pinned to the facilitator's tag line.

AGENTS.md records the layout, the invariants and what to update when; CLAUDE.md
symlinks to it. docs/releasing.md is the release guide.
@gfanton
gfanton force-pushed the feat/release-lines branch from 40bec9a to 09e5fc7 Compare August 14, 2026 13:06
@gfanton
gfanton merged commit e8f15f1 into main Aug 14, 2026
8 checks passed
@gfanton
gfanton deleted the feat/release-lines branch August 14, 2026 13:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant