Skip to content

wire: coordinate protocol, carrier, evidence and independent runtime acceptance #39

Description

@jm9e

Current work packets — 2026-09-26

This issue owns bitwire's contract/conformance share of decisions 0007–0012. Production implementation remains in bitruntime. Current v0.3.0 provides addressless Wire, full WireTree, and AddressedWire carrier access; it does not include a redesigned received-context field.

Deliverable Owner / closure evidence
Package/runtime independence Delivered by PR38/PR44 and the published-package import check; preserve it.
Immutable bitwire/1 specification and hash manifest #53
Carrier close/refusal/publication guarantees and bitwire-stream/1 vectors #54
Interaction/profile ownership and received-context design #55; future explicit native/profile version disposition, never retroactive v0.3.0 claims
Independent acceptance of released runtime PR52, as specified below

Independent acceptance packet

Runtime v0.2.0 is published from PR9. PR52 was prepared against a candidate; its remaining work is:

  • Pin actual public released Go and TypeScript artifacts, including checksum/version identity. No local replacements/private checkout builds.
  • Add TypeScript drivers and run local pairs and real WebSockets in both roles in each applicable language/profile matrix.
  • Keep independently authored expectations withheld from drivers; fail missing/extra/duplicate observations and deliberately unlawful implementations.
  • Report contract, protocol, suite hash, implementation release, carriers and toolchains separately.
  • Preserve historical addressed gap ledgers. Current structural-tree conformance and historical declared-access evidence are distinct; #29/runtime #15 own their eventual disposition.
  • Link green exact-artifact evidence back to runtime #1 and bitsystem3 #7.

Use conformance/runtime/go and conformance/runtime/ts or the documented component-first two-letter layout. Published bitwire packages cannot depend on runtime. Candidate tests are useful but not a release gate substitute.

Ordering / closure

The existing-profile runtime release and bitsystem3 transport migration do not wait for every later contract redesign. The later contract children gate only implementations that consume their new guarantees. This issue closes after #53/#54/#55 and released independent acceptance have their own evidence/dispositions, without automatically closing runtime adoption.

Related: #47, #42, runtime #2, family index. The preserved earlier plan below includes superseded version wording and is historical only.

Historical issue record (preserved; current execution instructions are above)

Decision 0007: using Bitwire never requires Nightseam. Decision 0010 then decided where the pieces live. Bitwire keeps the contract, the protocol and carrier specifications, and conformance. A new public repository, bitruntime, implements them in Go and TypeScript. This issue now tracks Bitwire's share only. The implementation steps live in bitruntime.

Bitwire's steps

  • Decision and independence check (PR docs: decide that using Bitwire never requires Nightseam. #38). Since PR docs: decide that Bitwire holds the contract and bitruntime implements it. #44, node scripts/check.mjs fails if any published package depends on or imports Nightseam or bitruntime.
  • The protocol as bitwire/1.
    • Revision 1 is the behavior of the v0.6.0 baseline, published with a manifest of hashes of its specification files (decision 0008).
    • The conformance runner protocol (DRIVER.md), tables and scenarios move with it. Each implementation builds its own test drivers.
    • Wire-only vocabularies (the envelope, tunnels) are specified here; the identity exchange belongs to Bitlink.
  • The carrier contract, from the draft:
    • one classification of closed errors;
    • close codes split into those that may be sent and those that may only be observed;
    • the framing format bitwire-stream/1 and its portable test vectors (decision 0009).
  • Received-context evidence: an unforgeable context field delivered beside each message, changed in all eight languages (contract 0.3.0). It is designed together with bitruntime's engine hooks.
  • Conformance against bitruntime. Bitwire's cases run against bitruntime as an external implementation, from a test-only module, as they do against Nightseam today.

Moved to bitruntime (bitruntime#1 is the first milestone)

  • Go and TypeScript operators: selection, mounting, forwarding, declared composition, the invocation lifecycle, the in-process pair.
  • Transports: the transport interface, the in-memory pipe, WebSocket, and bitwire-stream/1 over stdio, TCP and Unix sockets.
  • The protocol engine, dispatch and request/response helpers, with public hooks for context, observation and tracing.
  • The live-reference mechanism and tunnels, depending on stated capabilities rather than the peer.

The first migration gate is bitsystem3. It needs the path that hand-written adapters use: carriers, dispatch, helpers, selection and connection setup.

Acceptance for Bitwire's steps

  • Expected observations are written from the specification, never recorded from an implementation.
  • Every conformance report names the specification revision, the suite revision and the implementation version.
  • Deliberately unlawful implementations check that the cases reject violations.

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