Conversation
Proposed for Bitwire #42 and not yet accepted. End is the addressless primitive; bitwire.Wire stays the addressed interface, defined for every Wire by origin(w) and the derived send w.send(p, x) = origin(at(w, p)).send(x). Declared composites type their origin as End, which makes leaves exact by construction. Transport, End and Wire are the three layers; the bitwire/1 protocol is unchanged byte for byte. Bitwire takes no package dependency on Deixis, which is private. Five decisions remain for the maintainer.
This was referenced Sep 26, 2026
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.
Superseded on 2026-09-26 by accepted decision 0012, delivered in PR #50. The current names are addressless
Wire, fullWireTree = DeixisNode<Wire>, and the explicitly namedAddressedWirecarrier bridge, symmetric withDataandDataTree = DeixisNode<Data>. This draft was not accepted or merged. The historical proposal below does not describe the current contract; unrelated open message/profile and lifecycle questions remain separately tracked in issue #42.Draft: proposed, not accepted. This is the design deliverable for #42. It gets reviewed here with deixis#49, bitstore-svc#13 and deixis-svc#1, and tested by bitruntime's experiments, before it is accepted.
Bitwire = Deixis[End].Endis the addressless primitive;bitwire.Wirestays the addressed interface.End(addressless send), andWire(addressed, Deixis over Ends). Thebitwire/1protocol is the vocabulary of the messages Ends carry. Its path-in-methodfield is addressing serialized for the crossing.origin(w).send(x) = w.send([], x)andw.send(p, x) ≃ origin(at(w, p)).send(x).originis derived, so it keeps the view's guards.End. Leaves become exact by construction, and children may be opaque Wires.Endin all eight languages, and everything else is unchanged.bitwire/1stays byte for byte. Consumers stay source-compatible, except code that builds composites with a Wire-typed origin.