chore(release): prepare 0.2.0
CI / verify (pull_request) Successful in 1m5s
CI / infrastructure-smoke (pull_request) Successful in 35s
CI / migration-smoke (pull_request) Successful in 1m52s
CI / package-release (pull_request) Successful in 35s
CI / image-build (pull_request) Successful in 31s
CI / deploy-smoke (same-origin) (pull_request) Successful in 45s
CI / deploy-smoke (split) (pull_request) Successful in 1m30s
CI / package-publication (pull_request) Successful in 44s

Every platform workspace package and every public @ekklesia/* package
declares 0.2.0, and the deploy README's image build example names it.
templates/module keeps its own version.

0.2.0, not 0.1.3: before 1.0 a minor version is the breaking one
(docs/development/releases.md, ADR 0054), and since 0.1.2 main has
broken modules, module authors, and operators:
- #64 (ADR 0048): one generic image; installed modules live outside it;
- #66, #72 (ADR 0049, 0050): modules install as Module Package v1, and
  move to the Module Database ABI;
- #71: the manifest v8 cutover; v7 manifests are refused;
- #79 (ADR 0053): the curated SDK drops defineModuleSchema and the
  legacy ModuleDatabase type;
plus #67 (AGPL), #74, #77 (licensing, native targets), and the public
package train (#80, #81). It is also the first package train to publish:
0.1.2 never will be.

Because 0.2.0 is outside ^0.1.0, the same change moves to ^0.2.0:
- the standalone fixture's @ekklesia ranges and its exact module-pack pin;
- the compatibility ranges of the modules built for this release: the
  template, the standalone fixture, and the native proof module;
- the test fixtures that model a module of the current release, or the
  current platform's versions;
- the module-development guide's examples, and the release guide, which
  now names what a minor bump moves.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
ekklesia
2026-10-08 17:26:13 -05:00
co-authored by Claude Opus 5.5
parent 22404ea2d4
commit 98e59d4ba0
33 changed files with 85 additions and 77 deletions
+14 -6
View File
@@ -25,8 +25,16 @@ version set ─▶ build ─▶ test ─▶ pack the public package train ─▶
1. **Version set.** A `chore(release): prepare X` pull request sets the release version: the root
`package.json`, every platform workspace package (the module template versions as a module, not
with the platform), the image build example in `deploy/README.md`, and the standalone fixture's
exact `@ekklesia/module-pack` pin (`tests/fixtures/standalone-module/package.json`). The tag
must point at a commit that carries the version it names.
exact `@ekklesia/module-pack` pin and `@ekklesia/*` ranges
(`tests/fixtures/standalone-module/package.json`). The tag must point at a commit that carries
the version it names.
A minor version (0.x → 0.(x+1)) is a breaking release before 1.0, so manifests that declare
`compatibility.platform` and `compatibility.moduleSdk` as `^0.x.0` no longer match it. In the
same pull request, move to the new range every module built for this release (the template, the
standalone fixture, the native proof module), the test fixtures that model a module of the
current release or the current platform, and the module-development guide's examples. A patch
version changes none of these.
2. **Build and test.** `pnpm verify`, the integration suite, and the deploy smoke, as for any change.
3. **Pack the public package train.** `pnpm packages:release` (below).
4. **Standalone consumer proof.** A module outside the repository consumes exactly those
@@ -111,17 +119,17 @@ registry and is not a registry catalog.
```json
{
"packageTrain": 1,
"version": "0.1.2",
"version": "0.2.0",
"source": { "modified": false, "revision": "<full commit id>" },
"packages": [
{
"file": "ekklesia-contracts-0.1.2.tgz",
"file": "ekklesia-contracts-0.2.0.tgz",
"integrity": "sha512-<base64>",
"name": "@ekklesia/contracts",
"role": "implementation",
"sha256": "<hex>",
"size": 87379,
"version": "0.1.2"
"version": "0.2.0"
}
]
}
@@ -343,7 +351,7 @@ public owners, a publisher team, and an outsider. In CI it publishes the very ar
### The first publication
The first train published is the **next** platform release version, not 0.1.2. The `v0.1.2` tag
The first train published is **0.2.0**, the next platform release, not 0.1.2. The `v0.1.2` tag
predates the curated SDK and this release tooling, so packages built now and called 0.1.2 would
claim to be source that 0.1.2 never contained.