From 87263188d5c1f1232e0c762cbe574d1613e5100e Mon Sep 17 00:00:00 2001 From: Julian Matschinske Date: Wed, 7 Oct 2026 19:41:36 +0200 Subject: [PATCH] release: fix the Go consumer smoke on Linux and prepare 0.7.1 The v0.7.0 release run (37656631524) failed after the tag in scripts/go-smoke.mjs: on Linux the hydrated peer binary path was the peer's own source directory, so `go build -o` wrote inside it and the spawn hit EACCES. Windows adds .exe, which hid it locally. The v0.7.0 tag and its Go module are public; no GitHub release or tarball was published. - The smoke builds `hydrated-peer`. - CI runs the smoke against the pushed commit (the PR head, or main's commit), so Linux exercises it before any tag. - Version 0.7.1, with no library change: CHANGELOG, release notes, README install lines and RELEASING name it. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 4 ++++ CHANGELOG.md | 8 ++++++++ README.md | 4 ++-- RELEASING.md | 2 +- docs/RELEASE.md | 9 ++++++++- package-lock.json | 4 ++-- package.json | 2 +- scripts/go-smoke.mjs | 4 +++- 8 files changed, 29 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f57c70f..62a9498 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,3 +37,7 @@ jobs: - run: node scripts/package-smoke.mjs - run: node scripts/interop.mjs - run: node scripts/hydrated-interop.mjs + # The release runs this against its tag; run it here against the pushed + # commit so the public-module consumer is exercised on Linux before a tag. + - name: Go module consumer from the pushed commit + run: node scripts/go-smoke.mjs "${{ github.event.pull_request.head.sha || github.sha }}" diff --git a/CHANGELOG.md b/CHANGELOG.md index 39a980b..cfaf1f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.7.1 + +- Release fix only; no library change from 0.7.0. The v0.7.0 release run + failed in its Go consumer smoke on Linux: the script built the hydrated peer + onto the peer's own source directory. The v0.7.0 tag and its Go module are + public, but no GitHub release or tarball was published for it. The smoke now + builds `hydrated-peer`, and CI runs it against each pushed commit. + ## 0.7.0 - Require bitwire 0.6.0, with its public hydrated declarations and shared pure diff --git a/README.md b/README.md index 6e08cb5..30f6213 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Wire grants sending ground ontos values. Endpoint adds one detachable receive ow Install the release package and shared contract: ```sh -npm install --allow-remote=root --@bitspark:registry=https://registry.npmjs.org @bitspark/bitwire@0.6.0 https://github.com/Bitspark/bitruntime/releases/download/v0.7.0/bitspark-bitruntime-0.7.0.tgz +npm install --allow-remote=root --@bitspark:registry=https://registry.npmjs.org @bitspark/bitwire@0.6.0 https://github.com/Bitspark/bitruntime/releases/download/v0.7.1/bitspark-bitruntime-0.7.1.tgz ``` ```ts @@ -34,7 +34,7 @@ A raw endpoint can send an atom directly. The addressed facade works on the same ## Go ```sh -go get github.com/Bitspark/bitruntime@v0.7.0 +go get github.com/Bitspark/bitruntime@v0.7.1 ``` Use `core/go.NewPair` and `websocket/go.Dial`, `Accept`, `NewServer` or `Listen`. They return bitwire Endpoints. `core/go.Addressed`, `Bind`, `Under` and `AsAddressed` implement the same layering as TypeScript; absent tree paths return ErrMissingPath. `hydrated/go` provides `NewScope`, `NewEndpoint`, `NewNamespace` and `NewTuple` over bitwire's hydrated declarations. A receiver runs on its endpoint's dispatcher. Close does not wait for or cancel dispatched application work. diff --git a/RELEASING.md b/RELEASING.md index e7c18cf..c0ac8ff 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -1,6 +1,6 @@ # Releasing -One root `vX.Y.Z` tag versions the Go module and TypeScript package together. bitruntime 0.7.0 implements bitwire 0.6.0: raw ontos-codec-v1 messages, the optional `bitwire/addressed/1` layer, WebSocket `bitwire.ontos.v2` and the hydrated layer `bitwire/hydrated/1` (decision 0019). +One root `vX.Y.Z` tag versions the Go module and TypeScript package together. bitruntime 0.7.1 implements bitwire 0.6.0: raw ontos-codec-v1 messages, the optional `bitwire/addressed/1` layer, WebSocket `bitwire.ontos.v2` and the hydrated layer `bitwire/hydrated/1` (decision 0019). - Go module: `github.com/Bitspark/bitruntime`, packages `core/go`, `websocket/go` and `hydrated/go`. - TypeScript package: `@bitspark/bitruntime`, subpaths `/core`, `/websocket` and `/hydrated`. diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 2f9c8bd..11351b0 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -1,4 +1,11 @@ -# bitruntime 0.7.0 +# bitruntime 0.7.1 + +0.7.1 publishes what 0.7.0 tagged: its library code is unchanged. The v0.7.0 +release run failed in its Go consumer smoke on Linux after the tag, so v0.7.0 +has a public Go module but no GitHub release or tarball. The smoke is fixed and +CI now runs it against each pushed commit. + +## The hydrated layer, introduced in 0.7.0 This release adds the hydrated wire layer, realizing bitwire decision 0019 over bitwire 0.6.0's public hydrated declarations and shared pure codec. A message may diff --git a/package-lock.json b/package-lock.json index fb0ce55..214c26c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@bitspark/bitruntime", - "version": "0.7.0", + "version": "0.7.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@bitspark/bitruntime", - "version": "0.7.0", + "version": "0.7.1", "license": "Apache-2.0", "dependencies": { "@bitspark/bitwire": "0.6.0", diff --git a/package.json b/package.json index 56fe123..98adb29 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@bitspark/bitruntime", - "version": "0.7.0", + "version": "0.7.1", "description": "Addressless endpoints, addressed access, byte-keyed trees, local pairs and WebSocket carriers.", "license": "Apache-2.0", "type": "module", diff --git a/scripts/go-smoke.mjs b/scripts/go-smoke.mjs index 8dd55dc..eae3950 100644 --- a/scripts/go-smoke.mjs +++ b/scripts/go-smoke.mjs @@ -24,7 +24,9 @@ run(['run', '.', 'smoke']); const hydrated = join(temp, 'hydrated'); mkdirSync(hydrated); writeFileSync(join(hydrated, 'main.go'), readFileSync(new URL('../conformance/interop/hydrated/main.go', import.meta.url))); -const binary = join(temp, process.platform === 'win32' ? 'hydrated.exe' : 'hydrated'); +// Not `hydrated`: that is the peer's source directory, and go build -o into an +// existing directory writes the binary inside it. +const binary = join(temp, process.platform === 'win32' ? 'hydrated-peer.exe' : 'hydrated-peer'); run(['build', '-o', binary, './hydrated']); const server = spawn(binary, ['serve'], {stdio: ['pipe', 'pipe', 'inherit']}); const url = await new Promise((resolve, reject) => {