{"id":1068,"date":"2026-07-09T15:15:10","date_gmt":"2026-07-09T23:15:10","guid":{"rendered":"https:\/\/salemdata.net\/johnpress\/?p=1068"},"modified":"2026-07-09T15:15:10","modified_gmt":"2026-07-09T23:15:10","slug":"reticulum-1-3-7-vs-my-1-3-5-protocol-specification","status":"publish","type":"post","link":"https:\/\/salemdata.net\/johnpress\/?p=1068","title":{"rendered":"Reticulum 1.3.7 vs. My 1.3.5 Protocol Specification"},"content":{"rendered":"<p>Since no specification exists for the Reticulum protocol, I previously undertook to derive a specification from the Mark Qvist implementation.\u00a0 See <a href=\"https:\/\/salemdata.net\/johnpress\/?p=861\">A Reticulum Protocol Specification, Extracted from the Implementation<\/a> (&#8220;Specification&#8221;). When I did so several weeks ago, I was working against Reticulum version 1.3.5.\u00a0 In source control parlance, that means the Specification I created is &#8220;pinned&#8221; to 1.3.5. I saw in a Mastodon post that a new release, version 1.3.7, had come out..<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1069 aligncenter\" src=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/07\/20260709_100620_Thu.png\" alt=\"\" width=\"596\" height=\"449\" srcset=\"https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/07\/20260709_100620_Thu.png 596w, https:\/\/salemdata.net\/johnpress\/wp-content\/uploads\/2026\/07\/20260709_100620_Thu-300x226.png 300w\" sizes=\"auto, (max-width: 596px) 100vw, 596px\" \/><\/p>\n<p>So I went through the exercise of obtaining version 1.3.7, <a href=\"https:\/\/salemdata.net\/johnpress\/?p=1056\">Reticulum: Finding The Definitive Source.<\/a><\/p>\n<p>I asked Codex to compare the Python tree representing 1.3.7 with the Specification (1.3.5).\u00a0 Here are Codex&#8217;s findings:<\/p>\n<div class=\"codex-block\">\n<div>Worked for 3m 11s<\/div>\n<p>Assessment: no evidence that <code>RNS 1.3.7<\/code> breaks the current wire-level spec coverage. Packet headers, destination hashes, Token crypto, announces, Link handshake\/LRPROOF, resources, request\/response, transport DATA\/LINK, Channel reliability, stamps, and LXMF 1.0.1 vectors all still pass against the 1.3.7 tarball.<\/p>\n<p>What changed or needs spec\/verifier attention:<\/p>\n<ul>\n<li>The repo is already pinned to <code>RNS 1.3.5<\/code>, not 1.3.4, per <code>README.md<\/code> \/ provenance.<\/li>\n<li><code>RNS 1.3.7<\/code> adds\/expands operational interface behavior:\n<ul>\n<li>on-network interface discovery via new <code>RNS\/Discovery.py<\/code><\/li>\n<li><code>recursive_prs<\/code> per-interface control for recursive unknown path requests<\/li>\n<li><code>announces_from_internal<\/code> filtering for announces sourced from internal interfaces<\/li>\n<li>interface discovery config fields such as <code>discoverable<\/code>, <code>reachable_on<\/code>, <code>publish_ifac<\/code>, discovery stamps\/encryption<\/li>\n<\/ul>\n<\/li>\n<li>Existing verifier fakes need updating:\n<ul>\n<li><code>verify_path_request_limits.py<\/code> and <code>verify_transport_tunnel.py<\/code> now need <code>FakeInterface.recursive_prs<\/code><\/li>\n<li><code>verify_transport_announce.py<\/code> now needs <code>FakeInterface.announces_from_internal<\/code><\/li>\n<\/ul>\n<\/li>\n<li><code>verify_regeneration.py<\/code> only changed vector metadata from <code>1.3.5<\/code> to <code>1.3.7<\/code>; vector bytes did not change. I restored those generated metadata edits, so the spec repo working tree is clean.<\/li>\n<\/ul>\n<p>Advice: update the spec with a small 1.3.7 migration note for interface discovery and the two new interface controls. I would not treat this as a protocol break. Treat it as a spec expansion plus verifier-maintenance pass. The main new wire surface worth documenting is <code>rnstransport.discovery.interface<\/code> app-data format: flags byte, msgpack info map, LXMF stamp, optional network-identity encryption.<\/p>\n<\/div>\n<p>For my purposes, this means the 1.3.5-derived specification remains substantially valid for 1.3.7, but should receive a short migration note covering interface discovery and the new per-interface controls.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since no specification exists for the Reticulum protocol, I previously undertook to derive a specification from the Mark Qvist implementation.\u00a0 See A Reticulum Protocol Specification, Extracted from the Implementation (&#8220;Specification&#8221;). When I did so several weeks ago, I was working against Reticulum version 1.3.5.\u00a0 In source control parlance, that means the Specification I created is [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_gfmr_meta_descriptions":[],"_gfmr_multilingual_taxonomy_terms":[],"footnotes":""},"categories":[126,130,1],"tags":[],"class_list":["post-1068","post","type-post","status-publish","format-standard","hentry","category-codex","category-reticulum","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts\/1068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1068"}],"version-history":[{"count":5,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts\/1068\/revisions"}],"predecessor-version":[{"id":1075,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=\/wp\/v2\/posts\/1068\/revisions\/1075"}],"wp:attachment":[{"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salemdata.net\/johnpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}