Deterministic Relay Layer¶
Scope¶
Edge implements deterministic local content relay with bounded local resources.
Implemented surfaces:
inbound offer/segment accept and local persistence
outbound relay executor and persistent relay ledger
bounded retries with operator-managed deadletter recovery
startup reconciliation for abandoned/missing relay records
local RPC observability for status/index/storage/quota/retry/assurance
Not implemented:
consensus/quorum/leader-election/shared-state replication
fleet convergence/orchestration semantics
Outbound Relay Lifecycle¶
edge/relay/ledger.go defines delivery states for (segment_id, peer_id):
StateScheduledStateInflightStateAcked(terminal)StateFailedStateDeadletter(terminal for automatic execution; operator-recoverable)
Transition summary:
Scheduler inserts/keeps records in
Scheduled.Worker CAS-claims
Scheduled -> Inflight(TryTransitionInflight).On ACK:
Inflight -> Acked(TransitionAcked).On failure:
Inflight -> Failed|Deadletter(TransitionFailedwith retry budget).Startup recovery:
InflightToFailedmarks abandoned in-flight records.PruneMissingforce-deadletters non-terminal records whose segment is gone.RescheduleReadymoves retry-ready failed records back to scheduled.
Transport and ACK Contract¶
Outbound relay worker flow (edge/relay/executor.go:executeRelay):
Resolve peer address from static
known_peerslist.Transport.Connect(mTLS).Read segment from local store.
SendOfferthenSendSegment.Wait for
RecvAckbefore marking ACKed.
ACK frame details:
wire type
msgAck(0x04)payload contains
segment_idsender treats missing/timeout/mismatch ACK as failed attempt
Receiver-side flow (edge/cmd/edged/main.go:handleRelayConn):
RecvOfferquota check (
AllowSegment)RecvSegmentstore.Write(atomic local commit path)SendAck
Success Condition and Eviction Gate¶
Configured at relay.success_condition:
one_peerall_peers
Validation rejects other values before startup.
Executor success evaluation (checkSuccessCondition):
updates index relayed marker when condition is met
emits success log with condition and ack count
if
evict_on_relay=true, code marks TODO for eviction gating integration
Bounded statement: evict_on_relay flag is parsed and passed into executor, but
actual eviction behavior for this flag is not implemented in current code path.
Determinism and Retry Semantics¶
Determinism sources:
pending scan order is deterministic (
NextAttemptAfter,SegmentID,PeerID)scheduler comparator uses deterministic tie-break (
lex_segment_id)no PRNG in relay path (enforced by prohibited-symbol scan)
Retry semantics:
attempt count is monotonic per pair
retry failure transitions to deadletter at
max_retriesdeadletter halts automatic execution until an operator retries or purges it
Evidence¶
Code:
edge/relay/ledger.goedge/relay/boltledger.goedge/relay/executor.goedge/relay/recovery.goedge/cmd/edged/main.go(runDaemon,handleRelayConn)edge/transport/wire.goedge/config/validate.go(validateRelay)
Tests:
edge/relay/executor_test.goedge/relay/recovery_test.goedge/relay/e2e_test.goedge/transport/wire_test.goedge/cmd/edged/main_integration_test.go
Verification commands:
GOWORK=off go test ./edge/relay -run 'TestExecutor|TestReconcile|TestE2E' -v
GOWORK=off go test ./edge/transport -run 'TestWire|TestTCPTLS' -v
GOWORK=off go test ./edge/cmd/edged -run OfferToStoreAndRPC -v