Skip to content

conformance: run bitwire's independent cases against bitruntime. - #52

Merged
jm9e merged 7 commits into
mainfrom
conformance/runtime
Sep 26, 2026
Merged

jm9e merged 7 commits into
mainfrom
conformance/runtime

Conversation

@jm9e

@jm9e jm9e commented Sep 26, 2026 •

Copy link
Copy Markdown
Member

Runs bitwire's existing independent cases against bitruntime's released artifacts, in Go and TypeScript. This is the "conformance against bitruntime" step of #39 and bitruntime#1's acceptance.

  • Go module github.com/Bitspark/bitruntime v0.2.0.
  • @bitspark/bitruntime 0.2.0, the release asset bitspark-bitruntime-0.2.0.tgz (sha256 d19d377a…).

Both are tag v0.2.0 at e28bb1a, speaking bitwire/1.

  • Expectations are withheld and never edited. Drivers read the existing case files; the runner compares complete observations and fails on missing, extra or duplicate results.
  • Both halves are isolated and pinned.
    • Go: its own test-only module, pinned from the public proxy with its sum verified. No replace, GOWORK=off, -mod=readonly.
    • TypeScript: its own test-only package, pinned by the release URL. The runner downloads the asset, checks its sha256 and sha512 against bitruntime.json, and checks that the remote tag still names the pinned revision.
    • The independence check already exempts conformance/.
  • The report names every identity.
    • Contract v0.3.0 at f825f3f and the case files' SHA-256.
    • For both languages, the bitruntime version and revision, plus the TS tarball and lockfile digests.
    • The carriers.
    • The toolchain: race detector, and TypeScript 7.0.2 type checking.
Family Go: local Go: WS client sends Go: WS server sends TS: local TS: WS client sends TS: WS server sends
Lifecycle (Invocation) 5/5 5/5
Composition groups 6/6 6/6 6/6 6/6 6/6 6/6
Declared, reference interpreter over bitruntime carriers 39/39 39/39 39/39 39/39 39/39 39/39
Declared, production Mount/At/Forward 20 + 19 gaps same same 20 + 19 gaps same same
Trees (Compose/Select/Send/AsAddressed) 14/14 14/14

"20 + 19 gaps" means 20 conform and 19 match bitruntime's recorded gaps exactly.

The production gaps are bitruntime's own ledger, conformance/runtime/production-gaps.json, with evidence for Go and TypeScript citing the tagged sources. They are observation-for-observation the gaps nightseam v0.6.0 records:

  • no origin-bearing addressed constructor, 16 cases;
  • Mount's pre-built map accepts conflicting, invalid and missing children, one case each.

nightseam's ledger is untouched. Declared composites with an origin are the 0.3 structural contract, which the trees family checks through Compose.

Lifecycle, declared and composition remain historical 0.2 addressed evidence, and trees is 0.3 structural evidence, as conformance/README.md states. The composition driver is ported from nightseam v0.6.0's conformance/bitwire/go (Apache-2.0), recorded in NOTICE. CI gains a runtime-conformance job; node scripts/conformance-runtime.mjs --language go|ts runs one half.

Commits: the Go module and drivers; the TypeScript drivers against the release asset (b71c98f, b3e24ca); the Go re-pin from candidate 9c93bb77 to v0.2.0 (e5240d8). The ledger's cited Go lines are unchanged between the two.

npm 12 refuses tarball-URL dependencies by default (allow-remote=none). The runner uses the npm bundled beside node, so it is unaffected. Bitspark/bitruntime#17 documents allow-remote=root for consumers.

Refs #39, #47, Bitspark/bitruntime#1.

🤖 Generated with Claude Code

Current closure and handoff gates — 2026-09-26

bitwire #39 owns this independent acceptance packet. Before merge, pin the actual released Go and TypeScript artifacts, add the missing TypeScript drivers, and record contract/protocol/suite/artifact identities with local and WebSocket evidence in both directions. Candidate-only green checks remain useful but do not close that released gate.

bitruntime #1 remains open until this acceptance and actual bitsystem3 #7 migration both pass; neither PR merge nor release availability alone closes it. Those downstream gates can run in parallel once the runtime artifact exists.

The 19 historical addressed-production gaps are not silently claimed as current full-tree conformance. Their explicit reviewed disposition belongs to bitwire #29 and runtime #15. Later context, service and application full-tree work remains independently gated.

jm9e and others added 3 commits September 26, 2026 12:09
…candidate

Add conformance/runtime/go, a test-only module requiring the public
bitruntime pseudo-version v0.1.1-0.20260926094813-e3237a7b79b8 and Bitwire
v0.3.0 with no replacement. Its drivers port the existing ones to bitruntime:
lifecycle through core.Invocation, the six composition groups (from
Nightseam v0.6.0's upstream driver), the 39 declared cases through the
test-only reference and through bitruntime's child-only core.Mount on local
pairs and WebSockets in both directions, and the 0.3 tree observations
through core.Compose/Select/Send/AsAddressed.

scripts/conformance-runtime.mjs verifies the pinned module graph, revisions
and sums, withholds expectations, compares exactly and reports the contract
revision, case-file SHA-256s, bitruntime version and carriers. bitruntime
keeps its own production gap ledger; its observations equal Nightseam's.
A separate ubuntu CI job runs it under the race detector.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@jm9e jm9e changed the title conformance: run Bitwire's independent cases against bitruntime. conformance: run bitwire's independent cases against bitruntime. Sep 26, 2026
…tories are named

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jm9e added a commit to Bitspark/bitruntime that referenced this pull request Sep 26, 2026
…ghtseam v0.6.0 (#9)

Implement bitruntime#1 in Go and TypeScript over the public bitwire 0.3.0
contract, speaking bitwire/1:

- core: At, Mount and Forward on AddressedWire; the local pair; the public
  invocation lifecycle; Respond, PublicError, publication evidence, meta
  and trace propagation, beside v0.1.0's tree core.
- transports: the frame seam, the in-memory pipe and WebSocket, with one
  closed classification and a sendable/observe-only split of close codes.
- engine: the bitwire/1 peer, presented only through its root Endpoint,
  and WebSocket connection setup.
- dispatch: the dispatcher and the Call, Emit, Handle and Register helpers.

Coordinates: one root Go module with the packages core/go, transports/go,
transports/websocket/go, engine/go, engine/websocket/go and dispatch/go;
one TypeScript package, @bitspark/bitruntime, with the subpaths /core,
/transports, /engine and /dispatch (maintainer decision), keeping the
received context its components share private.

Ported from nightseam v0.6.0 only (5cc9723a24646c40ed1861f892b2b23eb6d785d7),
imported verbatim before adaptation, with provenance in NOTICE and every
change in docs/port-from-nightseam.md. Recorded defects are fixed rather
than ported, each with a regression test that fails without it:
nightseam#722 (queued refusals answered at close, and the root's queued
requests, R28), nightseam#658 (a pair's slot free before its caller holds
the answer), R26 (every ended carrier is ErrClosed and answers
disconnected), R27 (observe-only codes never sent; a closing peer's code
reaches the far side), research 0001 rows 14 and 28, unencodable or
refused replies no longer stranding callers, a failed Prepare releasing
what it attached, and handler contexts no longer reaching their carrier.

Evidence: the ported v0.6.0 suites keep their expectations (Go under
-race; 225 TypeScript tests); all sixteen pairings of bitruntime and
nightseam v0.6.0, Go and TypeScript, interoperate over real WebSockets,
and each bitruntime server's transcript equals nightseam's byte for byte
(new CI job); bitwire's independent cases pass from bitwire's test-only
module (Bitspark/bitwire#52); a fresh public Go consumer and a fresh
installed tarball consumer pass.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jm9e and others added 2 commits September 26, 2026 13:27
…eScript release

Add conformance/runtime/ts, a private, test-only package depending on the
bitruntime v0.2.0 release asset (sha256 d19d377a..., tag v0.2.0 at
e28bb1ad), @bitspark/bitwire 0.3.0 and ws 8.21.3, with an .npmrc taking the
@Bitspark scope from the public npm registry. Its drivers port the existing
ones to bitruntime's TypeScript package: lifecycle through Invocation, the six
composition groups (from nightseam v0.6.0's upstream TypeScript driver), the
39 declared cases through the test-only reference and through the child-only
mount on local pairs and WebSockets in both directions, and the 0.3 tree
observations through compose/select/send/asAddressed.

scripts/conformance-runtime.mjs runs them after Go with the same withheld
inputs and carriers. It downloads the release asset and checks its SHA-256
and integrity and the tag's revision, refuses any lockfile entry that is not
a public, integrity-pinned artifact or that duplicates bitwire, installs with
npm ci in scratch, type-checks with TypeScript 7.0.2 and runs the drivers with
Node 24's type stripping. --language=go|ts selects one half.

All TypeScript families pass: lifecycle 5/5, composition 6/6 and declared
reference 39/39 on each carrier, declared production 20 conforming with 19
exact gaps on each carrier, trees 14/14. The TypeScript gap observations are
recorded in bitruntime's ledger and equal both its Go ones and nightseam's
recorded TypeScript ones.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Both halves now run against the tag v0.2.0 at e28bb1a: the Go module by its
release version and the TypeScript package by its release asset. The gap
ledger cites the tagged sources, whose cited lines are unchanged from the
candidate's.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@jm9e
jm9e marked this pull request as ready for review September 26, 2026 13:48
@jm9e
jm9e merged commit f42d82c into main Sep 26, 2026
12 checks passed
@jm9e
jm9e deleted the conformance/runtime branch September 26, 2026 13:51
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