Completed the destination-routed DATA and reverse-PROOF three-tier unit. Key findings: Intermediate relays retarget HEADER_2; the final relay delivers HEADER_1. Each relay records independent reverse-table state. PROOF destination hashes remain invariant across transport transformations. A wrong-interface PROOF consumes the reverse entry before being dropped. REVERSE_TIMEOUT is 480 seconds, not 30 seconds. Added Tier 1 audit, two-relay flow, deterministic vectors, regenerator, and runtime verifier. Corrected affected specification, flows, playbook, and status documentation. Verification: Deterministic regeneration: identical SHA-256 Full pinned suite: 22 passed, 0 failed git diff --check: passed No commit created.
2.3 KiB
2.3 KiB
Flow: Destination-Routed DATA Through Transport Relays
This flow follows ordinary DATA and its returning PROOF across two transport relays, pinned to RNS 1.2.4. Opportunistic LXMF is the common example.
Forward DATA
- The originator emits HEADER_2 because its path has more than one hop. The
transport_idnames relay 1; the final destination hash remains in the second address slot. - Relay 1 verifies that
transport_idnames itself and finds the final destination inpath_table. - With more than one remaining hop, relay 1 increments hops, replaces
transport_idwith relay 2's identity hash, and preserves HEADER_2. - Relay 1 records
reverse_table[packet.getTruncatedHash()]with the ingress and egress interfaces. - Relay 2 receives the retargeted HEADER_2 packet. With one remaining hop, it increments hops, strips the transport slot, and emits HEADER_1 toward the destination.
- Relay 2 records its own reverse entry under the same truncated packet hash.
The hash is stable because Packet.get_hashable_part() excludes hops,
transport type/header type, and the HEADER_2 transport-id slot.
Returning PROOF
- The destination emits a HEADER_1 PROOF addressed to the original DATA packet's truncated hash.
- Relay 2 pops that hash from
reverse_table. If the PROOF arrived on the recorded outbound interface, it increments hops and sends toward relay 1. - Relay 1 repeats the operation and sends toward the originator.
- Each entry is one-shot. A duplicate PROOF has no route.
Failure Diagnostics
| Observation | Meaning |
|---|---|
| First relay receives DATA but does not forward it | Check HEADER_2 transport_id and relay path_table. |
| Intermediate relay forwards HEADER_2 but final endpoint parser expects HEADER_2 | Endpoint receives HEADER_1; the last relay strips the transport slot. |
| DATA reaches endpoint but no PROOF returns | Inspect every relay's reverse entry and recorded interfaces. |
| PROOF appears first on the wrong interface | Upstream drops it after popping the reverse entry; a later correct copy cannot return. |
| Reverse entry remains indefinitely in a clean-room relay | RNS 1.2.4 expires it after 480 seconds or when a recorded interface disappears. |
Executable evidence: tools/verify_transport_data.py and
test-vectors/transport-data.json.