PROTOCOL NOTES / 09

Wire reference

Field widths, control authority, and implemented constants.

Implemented software · Physical qualification pending

Start with the exact bytes

Unsigned binary integers use network byte order unless specified otherwise. Base64 uses the canonical unpadded URL-safe alphabet. JSON signatures cover exact body.dump() bytes. Unknown message types do not gain authority.

A 20-byte media header

Public synthetic fixture. Select a field to highlight its bytes; the complete explanation remains below.

0202000700010203040506070000000000000009
FieldByte offsetsMeaning
Version0–0RWCP version 2.
Hop budget1–1Remaining forwarding budget; reduced across relays.
Age2–3Accumulated media age in milliseconds.
Ride tag4–11First eight SHA-256 bytes of the textual ride ID.
Hop sequence12–19Directional per-hop sequence used with authentication/replay handling.

Public test-only values; payload demonstrates envelope layout, not a valid SRTP ciphertext

Discovery advertisement

OffsetBytesField
01Version 2
18Ride tag
932Raw public Ed25519 key
411Root roster index; 255 denotes unassigned admission state
421Path length
43path lengthRoster indexes from root to advertiser
p4Root pulse
p+44Advertisement serial
p+81Child capacity flag
p+92Cumulative cost, at most 12,000
p+1164Ed25519 signature of every preceding byte

Control message catalogue

TypeAdditional body fieldsAuthorization and propagation
joinname, key public PEM, tokenOpen admission, matching secret, signed source identity; relayed to organizer; at most 24 pending candidates
rosterversion:uint32, name, open:boolean, members[]Organizer only, increasing version; fixed after seal/start; can reach pending links
streamstream descriptor belowAdmitted source after seal; increasing source control seq; admitted active propagation/state sync only
syncNoneAdmitted sealed source requests descriptor re-publication; no microphone activation
heartbeatmuted:boolean, active:boolean, root, pulse:uint32, path[], cost, optional media:{ssrc,nextIndex}, optional transmissionAdmitted source, propagated; route refresh only if source is direct neighbor and shape valid
source_statustransmissionAdmitted sealed source; current SSRC and ordered source progress; propagated on active admitted edges
feedbackreports[], links[]Admitted receivers; source reports at most 11, link reports at most 16; propagated, advisory adaptation
pingstamp:uint64 monotonic ms, token:uint64Direct TLS neighbor only; signed, never flooded
pongping:uint64 echoed stamp, token:uint64Direct neighbor only; must match one outstanding single-use ping; never flooded
leaveNoneSigned local admitted departure; propagated; marks source unavailable, does not remove/rekey roster or end others' sessions
path_offerroot, path[], pulse:uint32, cost, revision:uint64, parentGeneration:uint64Direct admitted neighbor only; ordered fresh signed route; never flooded
handoff_prepareattempt:uint64, generation:uint64, revision:uint64Direct child asks candidate parent; tuple binds current offer, excludes known cycles; creates bounded lease
handoff_readySame tupleCandidate parent after bidirectional probes; child still needs its own proof
handoff_activateSame tuple, optional rollback:trueChild commits candidate; rollback requires newer generation on retained old active-child edge
handoff_ackSame tupleCandidate confirms its active-child role; child publishes new path only after exact match
handoff_abortattempt, generation, optional revision, optional reasonExact current tuple only; release candidate/preparation, not unrelated links
handoff_retireattempt, generationExact old active-child tuple; drain then scoped release

An exact signed-body example

This public test vector demonstrates deterministic serialization. It is a synthetic ping, not a live ride token or captured user message.

{"ride":"000102030405060708090a0b0c0d0e0f","seq":7,"source":"56475aa75463474c0285df5dbf2bcab73da651358839e9b77481b2eab107708c","stamp":1234,"token":9,"type":"ping","v":2}

Implemented constants

These values are extracted from the generated protocol reference at build time. Timer and acoustic defaults remain physically unqualified.

Production nameC++ typeValue
versionstd::uint8_t2
invitationPrefixchar"rideweave:v2:"
discoveryPrefixchar"rideweave-v2-"
awareKeyLabelchar"rideweave-aware-v2:"
hopKeyLabelchar"rideweave-hop-v2:"
exporterLabelchar"EXPORTER-RideWeave-hop-v2"
controlPortunsigned38471
maxControlBytesstd::size_t16384
maxQueuedControlBytesstd::size_t131072
maxMediaBytesstd::size_t1280
mediaHeaderBytesstd::size_t20
hopMacBytesstd::size_t16
maxMembersunsigned12
initialHopBudgetunsigned12
mediaAgeMsstd::uint64_t180
mediaQueueMsstd::uint64_t40
ingressPacketsstd::size_t12
egressPacketsstd::size_t32
handshakeMsstd::uint64_t5000
pingIntervalMsstd::uint64_t1000
linkSuspectMsstd::uint64_t3000
linkDeadMsstd::uint64_t6000
linkRecoveryPongsunsigned2
discoveryFreshMsstd::uint64_t6000
rootFreshMsstd::uint64_t4500
pathEstablishMsstd::uint64_t25000
handoffProbeMsstd::uint64_t1000
handoffProbeIntervalMsstd::uint64_t250
handoffProbeAttemptsunsigned3
handoffAckMsstd::uint64_t1000
handoffDrainMsstd::uint64_t500
preparationLeaseMsstd::uint64_t2000
probeBytesstd::size_t66
probeRequeststd::uint8_t128
probeReplystd::uint8_t129
parentBetterMsstd::uint64_t2000
parentHoldMsstd::uint64_t1500
routeCostMaxunsigned12000
adjacentCostMaxunsigned1000
adjacentCostMinunsigned5
adjacentUnknownCostunsigned50
adjacentLossCostunsigned200
improvementNumeratorunsigned4
improvementDenominatorunsigned5
discoveryPruneMsstd::uint64_t15000
feedbackFreshMsstd::uint64_t3000
bitrateRecoveryMsstd::uint64_t10000
bitrateLowint16000
bitrateInitialint24000
bitrateHighint32000
lossSeveredouble0.08
lossDegradeddouble0.03
lossHealthydouble0.01
rttDegradedMsunsigned120
rttSevereMsunsigned250
jitterDegradedMsunsigned100
jitterHealthyMsunsigned80
jitterInitialMsint60
jitterMinimumMsint40
jitterMaximumMsint120
receiverSilenceMsstd::uint64_t200
receiverReanchorMsstd::uint64_t250
maximumPlcFramesunsigned3
sourceHintFreshMsstd::uint64_t3000
dtxStartupMsstd::uint64_t2000
dtxHangoverMsstd::uint64_t1000
dtxQuietMsstd::uint64_t1500
dtxAnalysisFreshMsstd::uint64_t20
dtxCallbackGapMsstd::uint64_t30
dtxTransitionWindowMsstd::uint64_t200
dtxAcousticFallbackMsstd::uint64_t10000
dtxRapidExitMsstd::uint64_t2000
dtxReversalWindowMsstd::uint64_t30000
dtxSessionReversalsunsigned3
dtxProbabilityMaxfloat0.05f
dtxRawMaxDbfsfloat-45.0f
dtxProcessedMaxDbfsfloat-55.0f
dtxTransitionDbfloat6.0f
mediaReceiveBudgetunsigned16
mediaSendBudgetunsigned128
mediaMailboxPacketsstd::size_t1024
controlDedupEntriesstd::size_t4096
hopReplayWindowstd::uint64_t1024

Authority: Wire reference; generated constants; public test vectors. Public examples are synthetic. This guide is maintained against the private implementation; it does not imply access to its source.