Expand description
Store-side replication to another gunnar. Deliberately empty — signature and contract only, no transport. Replication — sending a repository’s stored bytes out to another gunnar.
§THIS MODULE IS DELIBERATELY EMPTY
[replicate_out] is a signature, a contract and a todo!(). It is a
placeholder to be filled in tomorrow (from 2026-08-07) and it is not a
forgotten stub: the shape below is the decision that was made today, and the
wire is the part that was not. [tests::replicate_out_is_deliberately_empty]
asserts the emptiness, so that if someone half-implements this the test that
says “still empty” fails and has to be removed on purpose.
Nothing here opens a socket, and no protocol is designed here. Do not add one to this file as a convenience — a peer transport is its own decision.
§What was decided, and is therefore in the signature
- STORE-side. Replication is a command on the store that holds the bytes. It is not a read path and not a plugin hook; the receiving gunnar is a peer, not a client of a lookup.
- No index travels with it. Not the Arrow object index, not the stree oid
section, not the redb tail. The receiver has its own
ObjectReadStackand rebuilds its own projection from what it receives — an index is a derivation, and shipping a derivation is how two copies of a repository come to disagree about the same bytes. This is the reason [ReplicationReceipt] reports objects and bytes and says nothing about rows or generations of any index. - One transaction, per repository. The unit is one repository’s archive between two generation marks: it either lands whole at the peer or it does not land. There is no partial-repository state to reconcile, because a half-replicated object set is exactly the thing whose repair costs more than the resend.
- Append-only makes it resumable, later. Because the archive is
append-only,
from_generationis a watermark and not a diff: everything above it is new and nothing below it has changed. A resumed transaction is therefore a fresh one with a higher watermark. That property is why the parameter is a singleu64and not a manifest.
Structs§
- Peer
- Another gunnar. Deliberately just a name and an address: what an endpoint string means is the transport’s business, and the transport is not decided.
- Replication
Receipt - What a completed replication transaction reports.
Functions§
- replicate_
out - Send one repository’s new objects to
peer. NOT IMPLEMENTED — see the module documentation.