Skip to content

runtime: deliver the path hand-written adapters use, so bitsystem3 can leave nightseam. #1

Description

@jm9e

Current delivery and remaining closure gates — 2026-09-26

PR9 merged as e28bb1adefbc8a5cb1b03f172b4e7212584bd7a2 and v0.2.0 is published. Its former conditional closing phrase auto-closed this issue at merge; this issue is reopened because its existing independent released-artifact and actual consumer gates remain.

  • Runtime source and v0.2.0 release: Go source tag and @bitspark/bitruntime TypeScript release tarball. The tarball SHA-256 is d19d377ad60037083b3158a7200f734e8bb37b17e7d1f7f7c2cd15e0ff2fb9d1; npm registry publication is not claimed.
  • bitwire PR52 consumes the released version, adds TypeScript drivers and passes the independent local/WebSocket cases in both languages. Candidate-only green checks do not satisfy this gate.
  • bitsystem3 #7 lands its actual Go/TS migration using released artifacts and passes browser/CLI/Docker/persistence acceptance with no nightseam dependencies.
  • Attach final contract, protocol, suite and implementation identities plus links to independent and consumer runs; then close this issue manually.

There is no dependency cycle: the runtime release is already available; independent released acceptance and consumer migration can run in parallel, with both required for this issue's closure. Later full-tree application mapping is bitsystem3 #11. Later streams, tunnels, live references, wider lifecycle integration and received context are separately owned in #2 and do not become automatic blockers on this bounded milestone.

The original scope and acceptance below remain as the historical task definition. References to what bitsystem3 uses describe the pre-migration baseline, not the newly published runtime.


The first milestone in the charter is to move bitsystem3 off Nightseam, the first gate in Bitwire decision 0010's migration order.

Approved primitive and tree contract (2026-09-26)

  • Data.read() -> Bytes and addressless Wire.send(message) are the primitives. Reads are asynchronous in TypeScript.
  • DataTree = DeixisNode<Data> and WireTree = DeixisNode<Wire> have the same full structural contract: own value, complete children under exact byte keys, partial selection, decomposition and recomposition.
  • At an existing path, read(tree, p) = select(tree, p).own().read() and send(tree, p, m) = select(tree, p).own().send(m).
  • Opaque send(path, message) is the explicitly named AddressedWire compatibility bridge. It is not a WireTree; prefix binding alone cannot establish existence, enumerate children or reconstruct a tree.

The interaction contract is owned by Bitwire #42, with shared structure owned by Deixis #49. Breaking native names do not silently revise the bitwire/1 protocol.

What bitsystem3 uses today

Nightseam v0.6.0 and Bitwire v0.2.0, through hand-written adapters and no generated code: duplex.At, runtime.CallWire, HandleWire, EmitWire, NewDispatcher, NewWirePair and Dial, in Go and TypeScript. Its historical Wire is addressed access. bitsystem3 #10 documents the unchanged installed release boundary.

Scope, Go and TypeScript

  • core: full structural WireTree operations and the derived primitive send; explicitly separate legacy prefix selection/mounting/forwarding over AddressedWire, invocation lifecycle and the in-process pair.
  • transports: the frame transport interface, the in-memory pipe, WebSocket.
  • engine: the protocol engine (bitwire/1, byte for byte the v0.6.0 profile) and connection setup (dial and accept).
  • dispatch: the dispatcher and request/response and event helpers, with their required access capability explicit.
  • independent changes: received-context evidence and protocol revision-2 negotiation need their own accepted contracts, implementation and tests. Do not assume they ship merely because the native API is versioned Bitwire 0.3.0.

Acceptance

  • Port each piece from an identified Nightseam commit, keeping v0.6.0 apart from its unreleased commits, with provenance in NOTICE and no Nightseam compatibility aliases.
  • Preserve exact byte keys, branching-node own values, empty versus missing paths, complete reconstruction and retained interaction state for true trees. Test missing children separately from present children whose primitive refuses.
  • Bitwire's independent cases pass against released bitruntime artifacts, run from a test-only module in Bitwire, over the in-process pair and WebSocket in both directions.
  • A bitruntime peer interoperates with a Nightseam v0.6.0 peer through the explicit addressed compatibility boundary.
  • Nightseam's recorded defects in these pieces are fixed, not ported: nightseam #722, the dropped refusals when a pair closes.
  • bitsystem3 builds and passes its complete tests on released bitruntime packages, with no Nightseam dependency left. Retaining an honestly named AddressedWire bridge does not claim completion of structural-tree adoption.

This issue remains open for runtime and consumer delivery; contract naming, documentation, runtime code, package release and consumer migration are separate evidence.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions