conformance: run bitwire's independent cases against bitruntime. - #52
Merged
Merged
Conversation
…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>
…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>
…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>
This was referenced Sep 26, 2026
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
github.com/Bitspark/bitruntime v0.2.0.@bitspark/bitruntime0.2.0, the release assetbitspark-bitruntime-0.2.0.tgz(sha256d19d377a…).Both are tag
v0.2.0ate28bb1a, speakingbitwire/1.GOWORK=off,-mod=readonly.bitruntime.json, and checks that the remote tag still names the pinned revision.conformance/.v0.3.0atf825f3fand the case files' SHA-256.Invocation)Mount/At/ForwardCompose/Select/Send/AsAddressed)"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: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.mdstates. The composition driver is ported from nightseam v0.6.0'sconformance/bitwire/go(Apache-2.0), recorded inNOTICE. CI gains aruntime-conformancejob;node scripts/conformance-runtime.mjs --language go|tsruns one half.Commits: the Go module and drivers; the TypeScript drivers against the release asset (b71c98f, b3e24ca); the Go re-pin from candidate
9c93bb77tov0.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 documentsallow-remote=rootfor 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.