@@ -179,6 +179,45 @@ Gradle's incremental cache occasionally misses RPC-layer edits — if a
179179change to ` ~/Development/vgi-rpc-java/ ` doesn't show up, run
180180` ./gradlew --refresh-dependencies ` or ` ./gradlew clean ` .
181181
182+ ## Releasing (Maven Central)
183+
184+ Published: ** ` farm.query:vgi ` ** (this repo) and ** ` farm.query:vgirpc ` ** /
185+ ` vgirpc-oauth ` (the sibling). Latest as of 2026-06-13: ** vgi 0.2.0 → vgirpc
186+ 0.10.2** . To cut a release: bump ` version ` in ` build.gradle.kts ` , push, then
187+ create a GitHub Release whose tag is the version (` v0.2.0 ` for ` 0.2.0 ` ). The
188+ ` release.yml ` workflow (trigger: ` release: published ` ) verifies tag == version,
189+ runs tests, and publishes. Both repos now set
190+ ` publishToMavenCentral(automaticRelease = true) ` , so a release goes ** live on
191+ Maven Central with no manual Portal click** once it passes validation (changed
192+ 2026-06-13 — was ` false ` /click-gated through vgi 0.1.0 + vgirpc 0.10.1).
193+
194+ ** The cross-repo ordering trap.** The ` release.yml ` build resolves
195+ ` farm.query:vgirpc ` from ** Maven Central** (the composite is absent on CI —
196+ ` VGI_RPC_JAVA_DIR ` unset), * not* from source. So ** ` :vgi ` cannot release until
197+ the ` vgirpc ` version it pins in ` vgi/build.gradle.kts ` is already published to
198+ Maven Central.** Integration CI hides this (it builds vgirpc from source via the
199+ composite), so green integration ≠ releasable. Before tagging a ` :vgi ` release,
200+ prove it builds against the * published* vgirpc with the composite disabled:
201+
202+ ``` bash
203+ VGI_RPC_JAVA_DIR=/nonexistent ./gradlew :vgi:test :vgi:javadoc
204+ ```
205+
206+ (Pointing the override at a non-directory forces Maven Central resolution.) If
207+ ` :vgi ` calls a vgirpc API only on ` main ` (e.g. ` CallContext.cookies() ` added
208+ after a release), this fails to compile — publish a new vgirpc first, bump the
209+ pin, then release ` :vgi ` .
210+
211+ ** Two gotchas that cost a release attempt (2026-06-13):**
212+ - ** Javadoc doclint is fatal on the publish.** vgirpc's ` publishToMavenCentral `
213+ runs ` :vgirpc:javadoc ` , which ** errors** (not warns) on a stale ` @param `
214+ (e.g. a renamed parameter). Run ` ./gradlew :<module>:javadoc ` locally first.
215+ (vgi's javadoc only * warns* on missing ` @param ` , so ` :vgi ` is laxer — but
216+ check anyway.)
217+ - ** GitHub immutable release tags can't be reused.** A failed publish leaves the
218+ release's tag permanently reserved (immutable releases). You can't re-cut the
219+ same version after fixing — ** bump the patch** (0.10.1 → 0.10.2) and tag that.
220+
182221## Conventions
183222
184223- ** Java 25 + ` -parameters ` is mandatory.** (Bumped from 21 → 25 on
@@ -322,9 +361,15 @@ identically, while upstream's locally-built `unittest` passes):
322361files), boots the example + versioned + versioned_tables workers each as their
323362own http server, and deliberately does ** not** set
324363` VGI_REQUIRE_LAUNCHER_TRANSPORT ` (so ` launcher/options_smoke.test ` skips). Green:
325- ** 171 test cases / 9043 assertions / 11 skipped** . ` VGI_RPC_JAVA_REF ` bumped to
326- ` aa40dcb ` . (Greening ` bearer_token ` over http still waits on
327- ` VGI_TEST_BEARER_TOKEN ` ; the no-auth ATTACH-raises change is PR #2 upstream.)
364+ ** 171 test cases / 9043 assertions / 11 skipped** . (Greening ` bearer_token ` over
365+ http still waits on ` VGI_TEST_BEARER_TOKEN ` ; the no-auth ATTACH-raises change is
366+ PR #2 upstream.)
367+
368+ ** Released 2026-06-13 — vgi 0.2.0 → vgirpc 0.10.2** (both live on Maven Central;
369+ see the "Releasing" section). vgirpc 0.10.2 carries the six http
370+ state-serialization commits (` 815b0fe ` …` aa40dcb ` ); ` :vgi ` 's pin in
371+ ` vgi/build.gradle.kts ` and ` integration.yml ` 's ` VGI_RPC_JAVA_REF ` both point at
372+ the 0.10.2 commit (` 6a9246e ` ).
328373
329374** 2026-06-12 — GitHub Actions integration CI + expression-filter pushdown.**
330375Two coupled pieces landed so the integration suite runs on every push/PR
0 commit comments