OverviewFilesCommitsIssuesDocsReleasesPeers

P2P-Hiverelay / docs / html / GIGA-RELEASE-ARCHITECTURE.html

231 lines · html ref:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Giga Release Architecture — How the Features Fit Together</title>
<style>
  :root { color-scheme: light; }
  * { box-sizing: border-box; }
  body { margin: 0; padding: 0; background: #eef1f6; color: #1a2333;
    font: 16px/1.6 ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
  .page { max-width: 920px; margin: 32px auto; background: #fff; padding: 56px 64px;
    border-radius: 14px; box-shadow: 0 2px 18px rgba(20,30,60,.10); }
  h1 { font-size: 1.9rem; line-height: 1.25; margin: 0 0 .4em; padding-bottom: .35em; border-bottom: 3px solid #4a6fa5; }
  h2 { font-size: 1.35rem; margin-top: 2em; border-bottom: 1px solid #dde3ee; padding-bottom: .2em; }
  h3 { font-size: 1.1rem; margin-top: 1.6em; color: #2c3e63; }
  blockquote { margin: 1em 0; padding: .8em 1.1em; background: #f2f6fd; border-left: 4px solid #4a6fa5; border-radius: 0 8px 8px 0; color: #2c3e63; }
  code { background: #f0f2f7; padding: .12em .38em; border-radius: 5px; font: .86em ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
  pre { background: #141a28; color: #e6ebf5; padding: 16px 18px; border-radius: 10px; overflow-x: auto; }
  pre code { background: none; padding: 0; color: inherit; }
  table { border-collapse: collapse; width: 100%; margin: 1em 0; font-size: .92rem; }
  th, td { border: 1px solid #d8deea; padding: 8px 10px; text-align: left; vertical-align: top; }
  th { background: #eef2fa; }
  tr:nth-child(even) td { background: #fafbfe; }
  a { color: #2f5fb3; }
  .mermaid-figure { margin: 1.4em 0; padding: 20px; background: #fbfcfe; border: 1px solid #e2e8f2; border-radius: 12px; text-align: center; overflow-x: auto; }
  .mermaid-figure svg { max-width: 100%; height: auto; }
  .doc-badge { display: inline-block; font-size: .75rem; letter-spacing: .04em; text-transform: uppercase;
    background: #4a6fa5; color: #fff; border-radius: 999px; padding: 3px 12px; margin-bottom: 14px; }
  hr { border: none; border-top: 1px solid #dde3ee; margin: 2em 0; }
  </style>
</head>
<body>
<div class="page">
<div class="doc-badge">GIGA-RELEASE-ARCHITECTURE</div>
<h1>Giga Release Architecture — How the Features Fit Together</h1>
<p><strong>Date:</strong> 2026-07-17 · <strong>Status:</strong> composition map for the giga release; four features shipped, one (WAL) in flight · <strong>Feature docs:</strong> <a href="./BLIND-CELLS.md">BLIND-CELLS</a> · <a href="./TOR-ONION-TRANSPORT.md">TOR-ONION-TRANSPORT</a> · <a href="./HTTPS-GATEWAY.md">HTTPS-GATEWAY</a> · <a href="./NAMESPACE.md">NAMESPACE</a> · WAL (this doc §5)</p>
<blockquote>
<p>This is the map of how the release&#39;s five subsystems compose into one product: <strong>blind cells</strong> (verifiable threshold custody), <strong>Tor v3 onion transport</strong> (relay location privacy), <strong>HTTPS gateway</strong> (public read plane), <strong>namespace</strong> (app-neutral messaging), and the <strong>WAL</strong> (durability spine, in flight). Each feature has its own deep-dive doc; this one exists to answer &quot;how do they fit, and what still gates the release.&quot;</p>
</blockquote>
<h2>1. The stack in one diagram</h2>
<div class="mermaid-figure"><svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 2019.73px; background-color: transparent;" viewBox="0 0 2019.7265625 733" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#5a7196;stroke:#5a7196;}#my-svg .marker.cross{stroke:#5a7196;}#my-svg svg{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#5a7196!important;stroke-width:0;stroke:#5a7196;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#5a7196;stroke-width:1px;}#my-svg .flowchart-link{stroke:#5a7196;fill:none;}#my-svg .edgeLabel{background-color:#ffffff;text-align:center;}#my-svg .edgeLabel p{background-color:#ffffff;}#my-svg .edgeLabel rect{opacity:0.5;background-color:#ffffff;fill:#ffffff;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:#f6f8fc;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:#ffffff;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:#ffffff;padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:#ffffff;fill:#ffffff;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#9370DB;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].swimlane.cluster rect{filter:none;}#my-svg [data-look="neo"].node path{stroke:#9370DB;stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#9370DB;filter:none;}#my-svg [data-look="neo"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster" id="my-svg-Spine" data-look="classic"><rect style="" x="278.58203125" y="597" width="615.58203125" height="128"/><g class="cluster-label" transform="translate(495.490234375, 597)"><foreignObject width="181.765625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel"><p>Durability spine (in flight)</p></span></div>
<p></foreignObject></g></g><g class="cluster" id="my-svg-Relay" data-look="classic"><rect style="" x="16.16796875" y="419" width="1995.55859375" height="128"/><g class="cluster-label" transform="translate(958.033203125, 419)"><foreignObject width="111.828125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel"><p>HiveRelay node</p></span></div></foreignObject></g></g><g class="cluster" id="my-svg-Privacy" data-look="classic"><rect style="" x="621.23828125" y="241" width="1084.26953125" height="128"/><g class="cluster-label" transform="translate(1097.443359375, 241)"><foreignObject width="131.859375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel"><p>Privacy transports</p></span></div></foreignObject></g></g><g class="cluster" id="my-svg-Edge" data-look="classic"><rect style="" x="8" y="8" width="593.23828125" height="361"/><g class="cluster-label" transform="translate(161.986328125, 8)"><foreignObject width="285.265625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5;"><span class="nodeLabel"><p>App / publisher edge (keys never leave)</p></span></div></foreignObject></g></g></g><g class="edgePaths"><path d="M158.512,87L158.512,91.167C158.512,95.333,158.512,103.667,158.512,111.333C158.512,119,158.512,126,158.512,129.5L158.512,133" id="my-svg-L_Seal_Split_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Seal_Split_0" data-points="W3sieCI6MTU4LjUxMTcxODc1LCJ5Ijo4N30seyJ4IjoxNTguNTExNzE4NzUsInkiOjExMn0seyJ4IjoxNTguNTExNzE4NzUsInkiOjEzN31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M235.615,191L247.514,195.167C259.413,199.333,283.21,207.667,295.109,216C307.008,224.333,307.008,232.667,307.008,242.333C307.008,252,307.008,263,307.008,268.5L307.008,274" id="my-svg-L_Split_Sign_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Split_Sign_0" data-points="W3sieCI6MjM1LjYxNTQ1OTczNTU3NjksInkiOjE5MX0seyJ4IjozMDcuMDA3ODEyNSwieSI6MjE2fSx7IngiOjMwNy4wMDc4MTI1LCJ5IjoyNDF9LHsieCI6MzA3LjAwNzgxMjUsInkiOjI3OH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M388.015,191L377.847,195.167C367.679,199.333,347.343,207.667,337.176,216C327.008,224.333,327.008,232.667,384.603,244.943C442.198,257.219,557.388,273.437,614.983,281.547L672.578,289.656" id="my-svg-L_Policy_Tor_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Policy_Tor_0" data-points="W3sieCI6Mzg4LjAxNDc5ODY3Nzg4NDY0LCJ5IjoxOTF9LHsieCI6MzI3LjAwNzgxMjUsInkiOjIxNn0seyJ4IjozMjcuMDA3ODEyNSwieSI6MjQxfSx7IngiOjY3Ni41MzkwNjI1LCJ5IjoyOTAuMjEzODQ2MjA2NzMwNn1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M407.545,191L400.391,195.167C393.237,199.333,378.929,207.667,371.775,216C364.621,224.333,364.621,232.667,459.282,245.534C553.943,258.402,743.265,275.804,837.926,284.505L932.587,293.207" id="my-svg-L_Policy_Nym_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Policy_Nym_0" data-points="W3sieCI6NDA3LjU0NDc3MTYzNDYxNTM2LCJ5IjoxOTF9LHsieCI6MzY0LjYyMTA5Mzc1LCJ5IjoyMTZ9LHsieCI6MzY0LjYyMTA5Mzc1LCJ5IjoyNDF9LHsieCI6OTM2LjU3MDMxMjUsInkiOjI5My41NzI2NzI0NDUyMjk5fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M486.961,191L492.062,195.167C497.164,199.333,507.367,207.667,512.469,216C517.57,224.333,517.57,232.667,636.512,246.129C755.455,259.591,993.339,278.182,1112.281,287.478L1231.223,296.773" id="my-svg-L_Policy_Fwd_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Policy_Fwd_0" data-points="W3sieCI6NDg2Ljk2MDcxMjEzOTQyMzEsInkiOjE5MX0seyJ4Ijo1MTcuNTcwMzEyNSwieSI6MjE2fSx7IngiOjUxNy41NzAzMTI1LCJ5IjoyNDF9LHsieCI6MTIzNS4yMTA5Mzc1LCJ5IjoyOTcuMDg0NzE1MDQwNzM1N31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M307.008,332L307.008,338.167C307.008,344.333,307.008,356.667,333.745,367C360.482,377.333,413.956,385.667,440.693,394C467.43,402.333,467.43,410.667,490.864,420.344C514.298,430.021,561.167,441.043,584.602,446.553L608.036,452.064" id="my-svg-L_Sign_Reg_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Sign_Reg_0" data-points="W3sieCI6MzA3LjAwNzgxMjUsInkiOjMzMn0seyJ4IjozMDcuMDA3ODEyNSwieSI6MzY5fSx7IngiOjQ2Ny40Mjk2ODc1LCJ5IjozOTR9LHsieCI6NDY3LjQyOTY4NzUsInkiOjQxOX0seyJ4Ijo2MTEuOTI5Njg3NSwieSI6NDUyLjk3OTUwNDU0OTc2MDN9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M128.768,191L124.177,195.167C119.587,199.333,110.407,207.667,105.817,216C101.227,224.333,101.227,232.667,101.227,247.5C101.227,262.333,101.227,283.667,101.227,305C101.227,326.333,101.227,347.667,101.227,362.5C101.227,377.333,101.227,385.667,101.227,394C101.227,402.333,101.227,410.667,119.607,420.245C137.988,429.824,174.749,440.649,193.13,446.061L211.511,451.473" id="my-svg-L_Split_SS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Split_SS_0" data-points="W3sieCI6MTI4Ljc2NzUwMzAwNDgwNzY4LCJ5IjoxOTF9LHsieCI6MTAxLjIyNjU2MjUsInkiOjIxNn0seyJ4IjoxMDEuMjI2NTYyNSwieSI6MjQxfSx7IngiOjEwMS4yMjY1NjI1LCJ5IjozMDV9LHsieCI6MTAxLjIyNjU2MjUsInkiOjM2OX0seyJ4IjoxMDEuMjI2NTYyNSwieSI6Mzk0fSx7IngiOjEwMS4yMjY1NjI1LCJ5Ijo0MTl9LHsieCI6MjE1LjM0NzY1NjI1LCJ5Ijo0NTIuNjAyNzg5MjA5NzgzOH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M886.57,328.38L916.979,335.15C947.388,341.92,1008.206,355.46,1038.615,366.397C1069.023,377.333,1069.023,385.667,1069.023,394C1069.023,402.333,1069.023,410.667,1099.257,421.807C1129.49,432.947,1189.956,446.894,1220.189,453.867L1250.423,460.841" id="my-svg-L_Tor_GW_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Tor_GW_0" data-points="W3sieCI6ODg2LjU3MDMxMjUsInkiOjMyOC4zNzk5MzI2MDEzNjk3fSx7IngiOjEwNjkuMDIzNDM3NSwieSI6MzY5fSx7IngiOjEwNjkuMDIzNDM3NSwieSI6Mzk0fSx7IngiOjEwNjkuMDIzNDM3NSwieSI6NDE5fSx7IngiOjEyNTQuMzIwMzEyNSwieSI6NDYxLjczOTk0ODE5MjM2NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M886.57,314.461L987.464,323.551C1088.357,332.641,1290.143,350.82,1391.036,364.077C1491.93,377.333,1491.93,385.667,1491.93,394C1491.93,402.333,1491.93,410.667,1499.502,418.697C1507.075,426.727,1522.22,434.455,1529.793,438.318L1537.366,442.182" id="my-svg-L_Tor_OL_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Tor_OL_0" data-points="W3sieCI6ODg2LjU3MDMxMjUsInkiOjMxNC40NjEyMDAwNzAzODUzNn0seyJ4IjoxNDkxLjkyOTY4NzUsInkiOjM2OX0seyJ4IjoxNDkxLjkyOTY4NzUsInkiOjM5NH0seyJ4IjoxNDkxLjkyOTY4NzUsInkiOjQxOX0seyJ4IjoxNTQwLjkyODcxMDkzNzUsInkiOjQ0NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M738.71,344L734.133,348.167C729.556,352.333,720.401,360.667,668.521,369C616.641,377.333,522.035,385.667,474.732,394C427.43,402.333,427.43,410.667,420.918,418.662C414.406,426.658,401.383,434.315,394.871,438.144L388.359,441.973" id="my-svg-L_Tor_SS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Tor_SS_0" data-points="W3sieCI6NzM4LjcxMDM4ODE4MzU5MzgsInkiOjM0NH0seyJ4Ijo3MTEuMjQ2MDkzNzUsInkiOjM2OX0seyJ4Ijo0MjcuNDI5Njg3NSwieSI6Mzk0fSx7IngiOjQyNy40Mjk2ODc1LCJ5Ijo0MTl9LHsieCI6Mzg0LjkxMTA3MTc3NzM0Mzc1LCJ5Ijo0NDR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M767.725,344L766.247,348.167C764.77,352.333,761.814,360.667,760.337,369C758.859,377.333,758.859,385.667,758.859,394C758.859,402.333,758.859,410.667,757.797,418.362C756.735,426.057,754.611,433.113,753.549,436.641L752.487,440.17" id="my-svg-L_Tor_Reg_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Tor_Reg_0" data-points="W3sieCI6NzY3LjcyNDczMTQ0NTMxMjUsInkiOjM0NH0seyJ4Ijo3NTguODU5Mzc1LCJ5IjozNjl9LHsieCI6NzU4Ljg1OTM3NSwieSI6Mzk0fSx7IngiOjc1OC44NTkzNzUsInkiOjQxOX0seyJ4Ijo3NTEuMzMzNzQwMjM0Mzc1LCJ5Ijo0NDR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1419.024,344L1427.842,348.167C1436.66,352.333,1454.295,360.667,1463.112,369C1471.93,377.333,1471.93,385.667,1471.93,394C1471.93,402.333,1471.93,410.667,1464.357,418.697C1456.784,426.727,1441.639,434.455,1434.066,438.318L1426.494,442.182" id="my-svg-L_Fwd_GW_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Fwd_GW_0" data-points="W3sieCI6MTQxOS4wMjQ0MTQwNjI1LCJ5IjozNDR9LHsieCI6MTQ3MS45Mjk2ODc1LCJ5IjozNjl9LHsieCI6MTQ3MS45Mjk2ODc1LCJ5IjozOTR9LHsieCI6MTQ3MS45Mjk2ODc1LCJ5Ijo0MTl9LHsieCI6MTQyMi45MzA2NjQwNjI1LCJ5Ijo0NDR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1437.773,327.284L1469.372,334.237C1500.971,341.19,1564.169,355.095,1595.768,366.214C1627.367,377.333,1627.367,385.667,1627.367,394C1627.367,402.333,1627.367,410.667,1626.819,418.341C1626.271,426.016,1625.175,433.032,1624.627,436.54L1624.078,440.048" id="my-svg-L_Fwd_OL_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Fwd_OL_0" data-points="W3sieCI6MTQzNy43NzM0Mzc1LCJ5IjozMjcuMjg0NDg2NDYzMjU3NH0seyJ4IjoxNjI3LjM2NzE4NzUsInkiOjM2OX0seyJ4IjoxNjI3LjM2NzE4NzUsInkiOjM5NH0seyJ4IjoxNjI3LjM2NzE4NzUsInkiOjQxOX0seyJ4IjoxNjIzLjQ2MDkzNzUsInkiOjQ0NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1235.211,315.846L1152.486,324.705C1069.76,333.564,904.31,351.282,773.013,364.308C641.716,377.333,544.573,385.667,496.001,394C447.43,402.333,447.43,410.667,439.638,418.703C431.847,426.74,416.264,434.48,408.472,438.35L400.681,442.221" id="my-svg-L_Fwd_SS_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Fwd_SS_0" data-points="W3sieCI6MTIzNS4yMTA5Mzc1LCJ5IjozMTUuODQ2MTI0Njg0NjI4MTR9LHsieCI6NzM4Ljg1OTM3NSwieSI6MzY5fSx7IngiOjQ0Ny40Mjk2ODc1LCJ5IjozOTR9LHsieCI6NDQ3LjQyOTY4NzUsInkiOjQxOX0seyJ4IjozOTcuMDk4NTcxNzc3MzQzNzUsInkiOjQ0NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1235.211,327.549L1204.18,334.457C1173.148,341.366,1111.086,355.183,1080.055,366.258C1049.023,377.333,1049.023,385.667,1049.023,394C1049.023,402.333,1049.023,410.667,1019.382,420.964C989.741,431.262,930.458,443.523,900.816,449.654L871.175,455.785" id="my-svg-L_Fwd_Reg_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Fwd_Reg_0" data-points="W3sieCI6MTIzNS4yMTA5Mzc1LCJ5IjozMjcuNTQ4NTM3ODg0NTUyN30seyJ4IjoxMDQ5LjAyMzQzNzUsInkiOjM2OX0seyJ4IjoxMDQ5LjAyMzQzNzUsInkiOjM5NH0seyJ4IjoxMDQ5LjAyMzQzNzUsInkiOjQxOX0seyJ4Ijo4NjcuMjU3ODEyNSwieSI6NDU2LjU5NDk3MDU4NjAwNzU1fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1346.492,522L1346.492,526.167C1346.492,530.333,1346.492,538.667,1346.492,547C1346.492,555.333,1346.492,563.667,1346.492,572C1346.492,580.333,1346.492,588.667,1346.492,596.333C1346.492,604,1346.492,611,1346.492,614.5L1346.492,618" id="my-svg-L_GW_Public_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_GW_Public_0" data-points="W3sieCI6MTM0Ni40OTIxODc1LCJ5Ijo1MjJ9LHsieCI6MTM0Ni40OTIxODc1LCJ5Ijo1NDd9LHsieCI6MTM0Ni40OTIxODc1LCJ5Ijo1NzJ9LHsieCI6MTM0Ni40OTIxODc1LCJ5Ijo1OTd9LHsieCI6MTM0Ni40OTIxODc1LCJ5Ijo2MjJ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1617.367,522L1617.367,526.167C1617.367,530.333,1617.367,538.667,1617.367,547C1617.367,555.333,1617.367,563.667,1617.367,572C1617.367,580.333,1617.367,588.667,1617.367,598.333C1617.367,608,1617.367,619,1617.367,624.5L1617.367,630" id="my-svg-L_OL_Apps_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_OL_Apps_0" data-points="W3sieCI6MTYxNy4zNjcxODc1LCJ5Ijo1MjJ9LHsieCI6MTYxNy4zNjcxODc1LCJ5Ijo1NDd9LHsieCI6MTYxNy4zNjcxODc1LCJ5Ijo1NzJ9LHsieCI6MTYxNy4zNjcxODc1LCJ5Ijo1OTd9LHsieCI6MTYxNy4zNjcxODc1LCJ5Ijo2MzR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M318.582,522L318.582,526.167C318.582,530.333,318.582,538.667,318.582,547C318.582,555.333,318.582,563.667,318.582,572C318.582,580.333,318.582,588.667,367.431,600.409C416.28,612.152,513.978,627.304,562.827,634.88L611.676,642.456" id="my-svg-L_SS_WAL_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_SS_WAL_0" data-points="W3sieCI6MzE4LjU4MjAzMTI1LCJ5Ijo1MjJ9LHsieCI6MzE4LjU4MjAzMTI1LCJ5Ijo1NDd9LHsieCI6MzE4LjU4MjAzMTI1LCJ5Ijo1NzJ9LHsieCI6MzE4LjU4MjAzMTI1LCJ5Ijo1OTd9LHsieCI6NjExLjY3NTc4MTI1LCJ5Ijo2NDIuNDU1ODYwMzU4NTY5NX1d" data-look="classic"/><path d="M739.594,522L739.594,526.167C739.594,530.333,739.594,538.667,739.594,547C739.594,555.333,739.594,563.667,739.594,572C739.594,580.333,739.594,588.667,739.05,597C738.507,605.333,737.42,613.667,736.876,617.833L736.333,622" id="my-svg-L_Reg_WAL_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Reg_WAL_0" data-points="W3sieCI6NzM5LjU5Mzc1LCJ5Ijo1MjJ9LHsieCI6NzM5LjU5Mzc1LCJ5Ijo1NDd9LHsieCI6NzM5LjU5Mzc1LCJ5Ijo1NzJ9LHsieCI6NzM5LjU5Mzc1LCJ5Ijo1OTd9LHsieCI6NzM2LjMzMjk0Njc3NzM0MzgsInkiOjYyMn1d" data-look="classic"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_Seal_Split_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Split_Sign_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Policy_Tor_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Policy_Nym_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Policy_Fwd_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Sign_Reg_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Split_SS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Tor_GW_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Tor_OL_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Tor_SS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Tor_Reg_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Fwd_GW_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Fwd_OL_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Fwd_SS_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Fwd_Reg_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_GW_Public_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_OL_Apps_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_SS_WAL_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Reg_WAL_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-Seal-0" data-look="classic" transform="translate(158.51171875, 60)"><rect class="basic label-container" style="" x="-101.2890625" y="-27" width="202.578125" height="54"/><g class="label" style="" transform="translate(-71.2890625, -12)"><rect/><foreignObject width="142.578125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>blind seal + encrypt</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Split-1" data-look="classic" transform="translate(158.51171875, 164)"><rect class="basic label-container" style="" x="-111.453125" y="-27" width="222.90625" height="54"/><g class="label" style="" transform="translate(-81.453125, -12)"><rect/><foreignObject width="162.90625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>PVSS split (blind cells)</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Sign-2" data-look="classic" transform="translate(307.0078125, 305)"><rect class="basic label-container" style="" x="-122.7734375" y="-27" width="245.546875" height="54"/><g class="label" style="" transform="translate(-92.7734375, -12)"><rect/><foreignObject width="185.546875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>ed25519 intents / records</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Policy-3" data-look="classic" transform="translate(453.90234375, 164)"><rect class="basic label-container" style="" x="-112.3359375" y="-27" width="224.671875" height="54"/><g class="label" style="" transform="translate(-82.3359375, -12)"><rect/><foreignObject width="164.671875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>privacy-policy resolver</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Tor-4" data-look="classic" transform="translate(781.5546875, 305)"><rect class="basic label-container" style="" x="-105.015625" y="-39" width="210.03125" height="78"/><g class="label" style="" transform="translate(-75.015625, -24)"><rect/><foreignObject width="150.03125" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Tor v3 onion<br />relay location hidden</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Nym-5" data-look="classic" transform="translate(1060.890625, 305)"><rect class="basic label-container" style="" x="-124.3203125" y="-39" width="248.640625" height="78"/><g class="label" style="" transform="translate(-94.3203125, -24)"><rect/><foreignObject width="188.640625" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>Nym mixnet lane<br />(bounded control, spec&#39;d)</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Fwd-6" data-look="classic" transform="translate(1336.4921875, 305)"><rect class="basic label-container" style="" x="-101.28125" y="-39" width="202.5625" height="78"/><g class="label" style="" transform="translate(-71.28125, -24)"><rect/><foreignObject width="142.5625" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>forward-relay<br />(zero-dep baseline)</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-GW-7" data-look="classic" transform="translate(1346.4921875, 483)"><rect class="basic label-container" style="" x="-92.171875" y="-39" width="184.34375" height="78"/><g class="label" style="" transform="translate(-62.171875, -24)"><rect/><foreignObject width="124.34375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>HTTPS gateway<br />public read plane</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-OL-8" data-look="classic" transform="translate(1617.3671875, 483)"><rect class="basic label-container" style="" x="-117.796875" y="-39" width="235.59375" height="78"/><g class="label" style="" transform="translate(-87.796875, -24)"><rect/><foreignObject width="175.59375" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>OutboxLog namespaces<br />app-neutral messaging</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-SS-9" data-look="classic" transform="translate(318.58203125, 483)"><rect class="basic label-container" style="" x="-103.234375" y="-39" width="206.46875" height="78"/><g class="label" style="" transform="translate(-73.234375, -24)"><rect/><foreignObject width="146.46875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>shard-store<br />(blind cells custody)</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Reg-10" data-look="classic" transform="translate(739.59375, 483)"><rect class="basic label-container" style="" x="-127.6640625" y="-39" width="255.328125" height="78"/><g class="label" style="" transform="translate(-97.6640625, -24)"><rect/><foreignObject width="195.328125" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>custody registry<br />intents · receipts · commits</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-API-11" data-look="classic" transform="translate(1880.9453125, 483)"><rect class="basic label-container" style="" x="-95.78125" y="-39" width="191.5625" height="78"/><g class="label" style="" transform="translate(-65.78125, -24)"><rect/><foreignObject width="131.5625" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>control plane API<br />(operator, authed)</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-WAL-12" data-look="classic" transform="translate(731.24609375, 661)"><rect class="basic label-container" style="" x="-119.5703125" y="-39" width="239.140625" height="78"/><g class="label" style="" transform="translate(-89.5703125, -24)"><rect/><foreignObject width="179.140625" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>blind-daemon WAL<br />fsync-before-ack journal</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Public-31" data-look="classic" transform="translate(1346.4921875, 661)"><rect class="basic label-container" style="" x="-106.6953125" y="-39" width="213.390625" height="78"/><g class="label" style="" transform="translate(-76.6953125, -24)"><rect/><foreignObject width="153.390625" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>browsers / curl / CDN<br />(public content only)</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Apps-33" data-look="classic" transform="translate(1617.3671875, 661)"><rect class="basic label-container" style="" x="-114.1796875" y="-27" width="228.359375" height="54"/><g class="label" style="" transform="translate(-84.1796875, -12)"><rect/><foreignObject width="168.359375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>apps (Peerit, Poked, …)</p></span></div></foreignObject></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs></svg></div></p>
<p>The design invariant across all five: <strong>relays are blind</strong> (content and keys stay at the edge), <strong>authorization is signature-based at every layer</strong> (no transport grants authority), and <strong>privacy claims stay on their ladders</strong> (each lane advertises exactly what it proves — no more).</p>
<h2>2. What each feature contributes</h2>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Job</th>
<th>Trust it removes</th>
<th>Deep dive</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Blind cells</strong></td>
<td>k-of-n verifiable custody of encrypted secrets across independent relays</td>
<td>trusting any single operator with the key; unverifiable custody claims</td>
<td><a href="./BLIND-CELLS.md">BLIND-CELLS</a></td>
</tr>
<tr>
<td><strong>Tor v3 onion transport</strong></td>
<td>hides the relay&#39;s network location; restricted discovery for private relays</td>
<td>relay IP exposure; open enumeration of private endpoints</td>
<td><a href="./TOR-ONION-TRANSPORT.md">TOR-ONION-TRANSPORT</a></td>
</tr>
<tr>
<td><strong>HTTPS gateway</strong></td>
<td>serves declared-public drives to HTTP clients (browsers, mobile, CDN)</td>
<td>&quot;you must speak Hyperswarm to read anything&quot;</td>
<td><a href="./HTTPS-GATEWAY.md">HTTPS-GATEWAY</a></td>
</tr>
<tr>
<td><strong>Namespace</strong></td>
<td>one relay hosts many apps&#39; outbox logs, operator-admitted, with blind mode + takedown</td>
<td>relay-per-app coupling; content exposure in moderation</td>
<td><a href="./NAMESPACE.md">NAMESPACE</a></td>
</tr>
<tr>
<td><strong>WAL</strong></td>
<td>atomic one-use spend, fsync-before-ack durability, fail-closed recovery for the blind store</td>
<td>torn writes, replayed spend tokens, unverifiable recovery</td>
<td>§5 below</td>
</tr>
</tbody></table>
<h2>3. One full journey, end to end</h2>
<div class="mermaid-figure"><svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="max-width: 1720px; background-color: transparent;" viewBox="-93.5 -10 1720 990" role="graphics-document document" aria-roledescription="sequence"><g><rect x="1388.5" y="904" fill="#eaeaea" stroke="#666" width="150" height="65" name="Rd" rx="3" ry="3" class="actor actor-bottom"/><text x="1463.5" y="936.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="1463.5" dy="0">Reader</tspan></text></g><g><rect x="1188.5" y="904" fill="#eaeaea" stroke="#666" width="150" height="65" name="Reg" rx="3" ry="3" class="actor actor-bottom"/><text x="1263.5" y="936.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="1263.5" dy="0">Custody registry</tspan></text></g><g><rect x="840.5" y="904" fill="#eaeaea" stroke="#666" width="150" height="65" name="R" rx="3" ry="3" class="actor actor-bottom"/><text x="915.5" y="936.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="915.5" dy="0">Relay i</tspan></text></g><g><rect x="557" y="904" fill="#eaeaea" stroke="#666" width="189" height="65" name="T" rx="3" ry="3" class="actor actor-bottom"/><text x="651.5" y="936.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="651.5" dy="0">Tor onion (relay endpoint)</tspan></text></g><g><rect x="357" y="904" fill="#eaeaea" stroke="#666" width="150" height="65" name="Pol" rx="3" ry="3" class="actor actor-bottom"/><text x="432" y="936.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="432" dy="0">Policy resolver</tspan></text></g><g><rect x="0" y="904" fill="#eaeaea" stroke="#666" width="150" height="65" name="P" rx="3" ry="3" class="actor actor-bottom"/><text x="75" y="936.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="75" dy="0">Publisher edge</tspan></text></g><g><line id="actor5" x1="1463.5" y1="65" x2="1463.5" y2="904" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="Rd" data-et="life-line" data-id="Rd"/><g id="root-5" data-et="participant" data-type="participant" data-id="Rd"><rect x="1388.5" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="Rd" rx="3" ry="3" class="actor actor-top"/><text x="1463.5" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="1463.5" dy="0">Reader</tspan></text></g></g><g><line id="actor4" x1="1263.5" y1="65" x2="1263.5" y2="904" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="Reg" data-et="life-line" data-id="Reg"/><g id="root-4" data-et="participant" data-type="participant" data-id="Reg"><rect x="1188.5" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="Reg" rx="3" ry="3" class="actor actor-top"/><text x="1263.5" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="1263.5" dy="0">Custody registry</tspan></text></g></g><g><line id="actor3" x1="915.5" y1="65" x2="915.5" y2="904" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="R" data-et="life-line" data-id="R"/><g id="root-3" data-et="participant" data-type="participant" data-id="R"><rect x="840.5" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="R" rx="3" ry="3" class="actor actor-top"/><text x="915.5" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="915.5" dy="0">Relay i</tspan></text></g></g><g><line id="actor2" x1="651.5" y1="65" x2="651.5" y2="904" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="T" data-et="life-line" data-id="T"/><g id="root-2" data-et="participant" data-type="participant" data-id="T"><rect x="557" y="0" fill="#eaeaea" stroke="#666" width="189" height="65" name="T" rx="3" ry="3" class="actor actor-top"/><text x="651.5" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="651.5" dy="0">Tor onion (relay endpoint)</tspan></text></g></g><g><line id="actor1" x1="432" y1="65" x2="432" y2="904" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="Pol" data-et="life-line" data-id="Pol"/><g id="root-1" data-et="participant" data-type="participant" data-id="Pol"><rect x="357" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="Pol" rx="3" ry="3" class="actor actor-top"/><text x="432" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="432" dy="0">Policy resolver</tspan></text></g></g><g><line id="actor0" x1="75" y1="65" x2="75" y2="904" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="P" data-et="life-line" data-id="P"/><g id="root-0" data-et="participant" data-type="participant" data-id="P"><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="P" rx="3" ry="3" class="actor actor-top"/><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="75" dy="0">Publisher edge</tspan></text></g></g><style>#my-svg{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#5a7196;stroke:#5a7196;}#my-svg .marker.cross{stroke:#5a7196;}#my-svg svg{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .actor{stroke:#9370DB;fill:#ECECFF;stroke-width:1;}#my-svg rect.actor.outer-path[data-look="neo"]{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg rect.note[data-look="neo"]{stroke:#aaaa33;fill:#fff5ad;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg text.actor&gt;tspan{fill:black;stroke:none;}#my-svg .actor-line{stroke:#9370DB;}#my-svg .innerArc{stroke-width:1.5;stroke-dasharray:none;}#my-svg .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#my-svg .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#my-svg [id$="-arrowhead"] path{fill:#333;stroke:#333;}#my-svg .sequenceNumber{fill:white;}#my-svg [id$="-sequencenumber"]{fill:#333;}#my-svg [id$="-crosshead"] path{fill:#333;stroke:#333;}#my-svg .messageText{fill:#333;stroke:none;}#my-svg .labelBox{stroke:#9370DB;fill:#ECECFF;filter:none;}#my-svg .labelText,#my-svg .labelText&gt;tspan{fill:black;stroke:none;}#my-svg .loopText,#my-svg .loopText&gt;tspan{fill:black;stroke:none;}#my-svg .sectionTitle,#my-svg .sectionTitle&gt;tspan{fill:black;stroke:none;}#my-svg .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#9370DB;fill:#9370DB;}#my-svg .note{stroke:#aaaa33;fill:#fff5ad;}#my-svg .noteText,#my-svg .noteText&gt;tspan{fill:black;stroke:none;font-weight:normal;}#my-svg .activation0{fill:#f4f4f4;stroke:#666;}#my-svg .activation1{fill:#f4f4f4;stroke:#666;}#my-svg .activation2{fill:#f4f4f4;stroke:#666;}#my-svg .actorPopupMenu{position:absolute;}#my-svg .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#my-svg .actor-man circle,#my-svg line{fill:#ECECFF;stroke-width:2px;}#my-svg g rect.rect{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));stroke:#9370DB;}#my-svg .node .neo-node{stroke:#9370DB;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].swimlane.cluster rect{filter:none;}#my-svg [data-look="neo"].node path{stroke:#9370DB;stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#9370DB;filter:none;}#my-svg [data-look="neo"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g/><defs><symbol id="my-svg-computer" width="24" height="24"><path transform="scale(.5)" d="M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z"/></symbol></defs><defs><symbol id="my-svg-database" fill-rule="evenodd" clip-rule="evenodd"><path transform="scale(.5)" d="M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z"/></symbol></defs><defs><symbol id="my-svg-clock" width="24" height="24"><path transform="scale(.5)" d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z"/></symbol></defs><defs><marker id="my-svg-arrowhead" refX="7.9" refY="5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M -1 0 L 10 5 L 0 10 z"/></marker></defs><defs><marker id="my-svg-crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="4" refY="4.5"><path fill="none" stroke="#000000" stroke-width="1pt" d="M 1,2 L 6,7 M 6,2 L 1,7" style="stroke-dasharray: 0, 0;"/></marker></defs><defs><marker id="my-svg-filled-head" refX="15.5" refY="7" markerWidth="20" markerHeight="28" orient="auto"><path d="M 18,7 L9,13 L14,7 L9,1 Z"/></marker></defs><defs><marker id="my-svg-sequencenumber" refX="15" refY="15" markerWidth="60" markerHeight="40" orient="auto"><circle cx="15" cy="15" r="6"/></marker></defs><defs><marker id="my-svg-solidTopArrowHead" refX="7.9" refY="7.25" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 0 L 10 8 L 0 8 z"/></marker></defs><defs><marker id="my-svg-solidBottomArrowHead" refX="7.9" refY="0.75" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 0 L 10 0 L 0 8 z"/></marker></defs><defs><marker id="my-svg-stickTopArrowHead" refX="7.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 0 L 7 7" stroke="black" stroke-width="1.5" fill="none"/></marker></defs><defs><marker id="my-svg-stickBottomArrowHead" refX="7.5" refY="0" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 7 L 7 0" stroke="black" stroke-width="1.5" fill="none"/></marker></defs><g data-et="note" data-id="i9"><rect x="1388.5" y="531" fill="#EDF2AE" stroke="#666" width="150" height="38" class="note"/><text x="1464" y="536" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="1464">public reader path</tspan></text></g><g data-et="note" data-id="i13"><rect x="1386" y="711" fill="#EDF2AE" stroke="#666" width="155" height="38" class="note"/><text x="1464" y="716" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="1464">threshold reader path</tspan></text></g><text x="76" y="80" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">encrypt content, PVSS split to n cells</text><path d="M 76,109 C 136,99 136,139 76,129" class="messageLine0" data-et="message" data-id="i0" data-from="P" data-to="P" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="252" y="154" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">intent: source-ip-hidden, hidden-onion, deny</text><line x1="76" y1="183" x2="428" y2="183" class="messageLine0" data-et="message" data-id="i1" data-from="P" data-to="Pol" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="255" y="198" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">selected: tor-v3-onion-v1 (evidence-bearing)</text><line x1="431" y1="227" x2="79" y2="227" class="messageLine1" data-et="message" data-id="i2" data-from="Pol" data-to="P" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"/><text x="668" y="242" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">signed custody intent v2 (to EVERY relay first)</text><line x1="76" y1="271" x2="1259.5" y2="271" class="messageLine0" data-et="message" data-id="i3" data-from="P" data-to="Reg" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="362" y="286" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">PUT cell i + signed pin (over onion)</text><line x1="76" y1="315" x2="647.5" y2="315" class="messageLine0" data-et="message" data-id="i4" data-from="P" data-to="T" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="782" y="330" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">peer vport then shard-store</text><line x1="652.5" y1="359" x2="911.5" y2="359" class="messageLine0" data-et="message" data-id="i5" data-from="T" data-to="R" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="917" y="374" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">pin sig + roster match then store (dedup)</text><path d="M 916.5,403 C 976.5,393 976.5,433 916.5,423" class="messageLine0" data-et="message" data-id="i6" data-from="R" data-to="R" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="1088" y="448" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">custody receipt (shareVerified) at seed time</text><line x1="916.5" y1="477" x2="1259.5" y2="477" class="messageLine0" data-et="message" data-id="i7" data-from="R" data-to="Reg" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="668" y="492" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">commit at quorum, then optional source-retired</text><line x1="76" y1="521" x2="1259.5" y2="521" class="messageLine0" data-et="message" data-id="i8" data-from="P" data-to="Reg" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="1059" y="584" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">GET /v1/hyper/:key/... (or nginx app origin)</text><line x1="1462.5" y1="613" x2="655.5" y2="613" class="messageLine0" data-et="message" data-id="i10" data-from="Rd" data-to="T" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="782" y="628" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">read-plane vport then gateway</text><line x1="652.5" y1="657" x2="911.5" y2="657" class="messageLine0" data-et="message" data-id="i11" data-from="T" data-to="R" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="1188" y="672" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">streamed bytes (public tier only, blind gives 403)</text><line x1="916.5" y1="701" x2="1459.5" y2="701" class="messageLine1" data-et="message" data-id="i12" data-from="R" data-to="Rd" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"/><text x="1191" y="764" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">GET /api/v1/shard/:hash (k relays)</text><line x1="1462.5" y1="793" x2="919.5" y2="793" class="messageLine0" data-et="message" data-id="i14" data-from="Rd" data-to="R" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="1465" y="808" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">re-hash, commitment-bind, DLEQ,</text><text x="1465" y="826" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">reconstruct key, decrypt locally</text><path d="M 1464.5,854 C 1524.5,844 1524.5,884 1464.5,874" class="messageLine0" data-et="message" data-id="i15" data-from="Rd" data-to="Rd" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/></svg></div>
<p>Read it as three independent compositions:</p>
<ol>
<li><strong>Custody composition</strong> — blind cells + registry + (soon) WAL: intent → cells → receipts → commit → burn/witness. The Tor/Nym lanes hide <em>who submitted</em> and <em>where the relay is</em>; the custody layer proves <em>what is stored</em> and <em>that it was burned</em>.</li>
<li><strong>Read composition</strong> — HTTPS gateway + Tor read plane + capability doc: one read plane, multiple ingresses (clearnet nginx, onion vport), with the signed capability doc advertising each ingress and its honest coverage labels.</li>
<li><strong>Messaging composition</strong> — namespaces + wake hints + privacy transports: app-neutral signed logs at the relay, with bounded encrypted wake/head hints as the exact messages the Tor/Nym control lanes were built to carry.</li>
</ol>
<h2>4. The honesty layer (shared across features)</h2>
<div class="mermaid-figure"><svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1989.08px; background-color: transparent;" viewBox="0 0 1989.078125 294" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#5a7196;stroke:#5a7196;}#my-svg .marker.cross{stroke:#5a7196;}#my-svg svg{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#5a7196!important;stroke-width:0;stroke:#5a7196;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#5a7196;stroke-width:1px;}#my-svg .flowchart-link{stroke:#5a7196;fill:none;}#my-svg .edgeLabel{background-color:#ffffff;text-align:center;}#my-svg .edgeLabel p{background-color:#ffffff;}#my-svg .edgeLabel rect{opacity:0.5;background-color:#ffffff;fill:#ffffff;}#my-svg .labelBkg{background-color:rgba(255, 255, 255, 0.5);}#my-svg .cluster rect{fill:#f6f8fc;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:#ffffff;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:#ffffff;padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:#ffffff;fill:#ffffff;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#9370DB;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].swimlane.cluster rect{filter:none;}#my-svg [data-look="neo"].node path{stroke:#9370DB;stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#9370DB;filter:none;}#my-svg [data-look="neo"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path d="M299.781,58.638L269.371,65.365C238.961,72.092,178.141,85.546,147.73,105.773C117.32,126,117.32,153,117.32,166.5L117.32,180" id="my-svg-L_Doc_T1_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Doc_T1_0" data-points="W3sieCI6Mjk5Ljc4MTI1LCJ5Ijo1OC42MzgxNjA1NTk1MDA5OX0seyJ4IjoxMTcuMzIwMzEyNSwieSI6OTl9LHsieCI6MTE3LjMyMDMxMjUsInkiOjE4NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M406.641,62L406.641,68.167C406.641,74.333,406.641,86.667,406.641,104.333C406.641,122,406.641,145,406.641,156.5L406.641,168" id="my-svg-L_Doc_T2_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Doc_T2_0" data-points="W3sieCI6NDA2LjY0MDYyNSwieSI6NjJ9LHsieCI6NDA2LjY0MDYyNSwieSI6OTl9LHsieCI6NDA2LjY0MDYyNSwieSI6MTcyfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M513.5,57.061L547.357,64.051C581.214,71.041,648.927,85.02,682.784,103.51C716.641,122,716.641,145,716.641,156.5L716.641,168" id="my-svg-L_Doc_T3_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Doc_T3_0" data-points="W3sieCI6NTEzLjUsInkiOjU3LjA2MTI5MDMyMjU4MDY0Nn0seyJ4Ijo3MTYuNjQwNjI1LCJ5Ijo5OX0seyJ4Ijo3MTYuNjQwNjI1LCJ5IjoxNzJ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1074.958,62L1062.477,68.167C1049.995,74.333,1025.033,86.667,1012.552,106.333C1000.07,126,1000.07,153,1000.07,166.5L1000.07,180" id="my-svg-L_Pol2_X1_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Pol2_X1_0" data-points="W3sieCI6MTA3NC45NTc4MjQ3MDcwMzEyLCJ5Ijo2Mn0seyJ4IjoxMDAwLjA3MDMxMjUsInkiOjk5fSx7IngiOjEwMDAuMDcwMzEyNSwieSI6MTg0fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1184.253,62L1196.734,68.167C1209.216,74.333,1234.178,86.667,1246.659,106.333C1259.141,126,1259.141,153,1259.141,166.5L1259.141,180" id="my-svg-L_Pol2_X2_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Pol2_X2_0" data-points="W3sieCI6MTE4NC4yNTMxMTI3OTI5Njg4LCJ5Ijo2Mn0seyJ4IjoxMjU5LjE0MDYyNSwieSI6OTl9LHsieCI6MTI1OS4xNDA2MjUsInkiOjE4NH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1542.93,62L1542.93,68.167C1542.93,74.333,1542.93,86.667,1542.93,104.333C1542.93,122,1542.93,145,1542.93,156.5L1542.93,168" id="my-svg-L_Red_Y_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Red_Y_0" data-points="W3sieCI6MTU0Mi45Mjk2ODc1LCJ5Ijo2Mn0seyJ4IjoxNTQyLjkyOTY4NzUsInkiOjk5fSx7IngiOjE1NDIuOTI5Njg3NSwieSI6MTcyfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1851.078,62L1851.078,68.167C1851.078,74.333,1851.078,86.667,1851.078,98.333C1851.078,110,1851.078,121,1851.078,126.5L1851.078,132" id="my-svg-L_Ladder_Z_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_Ladder_Z_0" data-points="W3sieCI6MTg1MS4wNzgxMjUsInkiOjYyfSx7IngiOjE4NTEuMDc4MTI1LCJ5Ijo5OX0seyJ4IjoxODUxLjA3ODEyNSwieSI6MTM2fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel"><g class="label" data-id="L_Doc_T1_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div>
<p></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Doc_T2_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Doc_T3_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1000.0703125, 99)"><g class="label" data-id="L_Pol2_X1_0" transform="translate(-65.6171875, -12)"><foreignObject width="131.234375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>deny → fail closed</p></span></div></foreignObject></g></g><g class="edgeLabel" transform="translate(1259.140625, 99)"><g class="label" data-id="L_Pol2_X2_0" transform="translate(-40.984375, -12)"><foreignObject width="81.96875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"><p>ordered list</p></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Red_Y_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g class="label" data-id="L_Ladder_Z_0" transform="translate(0, 0)"><foreignObject width="0" height="0"><div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g class="node default" id="my-svg-flowchart-Doc-0" data-look="classic" transform="translate(406.640625, 35)"><rect class="basic label-container" style="" x="-106.859375" y="-27" width="213.71875" height="54"/><g class="label" style="" transform="translate(-76.859375, -12)"><rect/><foreignObject width="153.71875" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>signed capability doc</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-T1-1" data-look="classic" transform="translate(117.3203125, 211)"><rect class="basic label-container" style="" x="-109.3203125" y="-27" width="218.640625" height="54"/><g class="label" style="" transform="translate(-79.3203125, -12)"><rect/><foreignObject width="158.640625" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>supported_transports</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-T2-3" data-look="classic" transform="translate(406.640625, 211)"><rect class="basic label-container" style="" x="-130" y="-39" width="260" height="78"/><g class="label" style="" transform="translate(-100, -24)"><rect/><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p>privacyTransports (health-gated)</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-T3-5" data-look="classic" transform="translate(716.640625, 211)"><rect class="basic label-container" style="" x="-130" y="-39" width="260" height="78"/><g class="label" style="" transform="translate(-100, -24)"><rect/><foreignObject width="200" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p>relayLocation + coverage labels</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Pol2-6" data-look="classic" transform="translate(1129.60546875, 35)"><rect class="basic label-container" style="" x="-104.3515625" y="-27" width="208.703125" height="54"/><g class="label" style="" transform="translate(-74.3515625, -12)"><rect/><foreignObject width="148.703125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>client policy resolver</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-X1-7" data-look="classic" transform="translate(1000.0703125, 211)"><rect class="basic label-container" style="" x="-103.4296875" y="-27" width="206.859375" height="54"/><g class="label" style="" transform="translate(-73.4296875, -12)"><rect/><foreignObject width="146.859375" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>no silent downgrade</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-X2-9" data-look="classic" transform="translate(1259.140625, 211)"><rect class="basic label-container" style="" x="-105.640625" y="-27" width="211.28125" height="54"/><g class="label" style="" transform="translate(-75.640625, -12)"><rect/><foreignObject width="151.28125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>recorded downgrade</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Red-10" data-look="classic" transform="translate(1542.9296875, 35)"><rect class="basic label-container" style="" x="-102.625" y="-27" width="205.25" height="54"/><g class="label" style="" transform="translate(-72.625, -12)"><rect/><foreignObject width="145.25" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>redaction audit gate</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Y-11" data-look="classic" transform="translate(1542.9296875, 211)"><rect class="basic label-container" style="" x="-128.1484375" y="-39" width="256.296875" height="78"/><g class="label" style="" transform="translate(-98.1484375, -24)"><rect/><foreignObject width="196.296875" height="48"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>no onion addrs / roster /<br />keys in public logs+metrics</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Ladder-12" data-look="classic" transform="translate(1851.078125, 35)"><rect class="basic label-container" style="" x="-78.0625" y="-27" width="156.125" height="54"/><g class="label" style="" transform="translate(-48.0625, -12)"><rect/><foreignObject width="96.125" height="24"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"><span class="nodeLabel"><p>claim ladders</p></span></div></foreignObject></g></g><g class="node default" id="my-svg-flowchart-Z-13" data-look="classic" transform="translate(1851.078125, 211)"><rect class="basic label-container" style="" x="-130" y="-75" width="260" height="150"/><g class="label" style="" transform="translate(-100, -60)"><rect/><foreignObject width="200" height="120"><div xmlns="http://www.w3.org/1999/xhtml" style="display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;"><span class="nodeLabel"><p>never: TA-resistant on Tor;<br />never: full-coverage on Nym;<br />never: private content on gateway</p></span></div></foreignObject></g></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs></svg></div></p>
<p>Every feature reports its properties through the same vocabulary (the orthogonal privacy axes), and every claim that cannot be evidenced is deliberately <em>not</em> made. This is a product feature in itself.</p>
<h2>5. WAL — the gate that ties the release</h2>
<p><strong>What it is:</strong> the blind custody store&#39;s write-ahead log, living in the blind-daemon line (<code>packages/blind-daemon/</code> in the vnext/hq lanes — <strong>not</strong> in the main hiverelay checkout). A hash-chained, fsync-before-ack journal (<code>wal.v2</code>, magic <code>HRWL</code>) providing:</p>
<ul>
<li><strong>atomic one-use spend</strong> — admission tokens burn exactly once (<code>SPEND_REPLAY</code> guard),</li>
<li><strong>durability</strong> — every frame write + <code>sync()</code> before ack,</li>
<li><strong>fail-closed recovery</strong> — full re-verification, torn-tail truncation, hard error on interior breaks,</li>
<li>writer fencing + <code>durabilityContinuityHash</code> + monotone epoch floor.</li>
</ul>
<div class="mermaid-figure"><svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="max-width: 805px; background-color: transparent;" viewBox="-50 -10 805 605" role="graphics-document document" aria-roledescription="sequence"><g><rect x="554" y="519" fill="#eaeaea" stroke="#666" width="150" height="65" name="W" rx="3" ry="3" class="actor actor-bottom"/><text x="629" y="551.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="629" dy="0">WAL (wal.v2)</tspan></text></g><g><rect x="219" y="519" fill="#eaeaea" stroke="#666" width="150" height="65" name="E" rx="3" ry="3" class="actor actor-bottom"/><text x="294" y="551.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="294" dy="0">storage engine</tspan></text></g><g><rect x="0" y="519" fill="#eaeaea" stroke="#666" width="150" height="65" name="C" rx="3" ry="3" class="actor actor-bottom"/><text x="75" y="551.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="75" dy="0">Client</tspan></text></g><g><line id="actor2" x1="629" y1="65" x2="629" y2="519" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="W" data-et="life-line" data-id="W"/><g id="root-2" data-et="participant" data-type="participant" data-id="W"><rect x="554" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="W" rx="3" ry="3" class="actor actor-top"/><text x="629" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="629" dy="0">WAL (wal.v2)</tspan></text></g></g><g><line id="actor1" x1="294" y1="65" x2="294" y2="519" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="E" data-et="life-line" data-id="E"/><g id="root-1" data-et="participant" data-type="participant" data-id="E"><rect x="219" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="E" rx="3" ry="3" class="actor actor-top"/><text x="294" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="294" dy="0">storage engine</tspan></text></g></g><g><line id="actor0" x1="75" y1="65" x2="75" y2="519" class="actor-line 200" stroke-width="0.5px" stroke="#999" name="C" data-et="life-line" data-id="C"/><g id="root-0" data-et="participant" data-type="participant" data-id="C"><rect x="0" y="0" fill="#eaeaea" stroke="#666" width="150" height="65" name="C" rx="3" ry="3" class="actor actor-top"/><text x="75" y="32.5" dominant-baseline="central" alignment-baseline="central" class="actor actor-box" style="text-anchor: middle; font-size: 16px; font-weight: 400;"><tspan x="75" dy="0">Client</tspan></text></g></g><style>#my-svg{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#5a7196;stroke:#5a7196;}#my-svg .marker.cross{stroke:#5a7196;}#my-svg svg{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .actor{stroke:#9370DB;fill:#ECECFF;stroke-width:1;}#my-svg rect.actor.outer-path[data-look="neo"]{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg rect.note[data-look="neo"]{stroke:#aaaa33;fill:#fff5ad;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg text.actor&gt;tspan{fill:black;stroke:none;}#my-svg .actor-line{stroke:#9370DB;}#my-svg .innerArc{stroke-width:1.5;stroke-dasharray:none;}#my-svg .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#my-svg .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#my-svg [id$="-arrowhead"] path{fill:#333;stroke:#333;}#my-svg .sequenceNumber{fill:white;}#my-svg [id$="-sequencenumber"]{fill:#333;}#my-svg [id$="-crosshead"] path{fill:#333;stroke:#333;}#my-svg .messageText{fill:#333;stroke:none;}#my-svg .labelBox{stroke:#9370DB;fill:#ECECFF;filter:none;}#my-svg .labelText,#my-svg .labelText&gt;tspan{fill:black;stroke:none;}#my-svg .loopText,#my-svg .loopText&gt;tspan{fill:black;stroke:none;}#my-svg .sectionTitle,#my-svg .sectionTitle&gt;tspan{fill:black;stroke:none;}#my-svg .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#9370DB;fill:#9370DB;}#my-svg .note{stroke:#aaaa33;fill:#fff5ad;}#my-svg .noteText,#my-svg .noteText&gt;tspan{fill:black;stroke:none;font-weight:normal;}#my-svg .activation0{fill:#f4f4f4;stroke:#666;}#my-svg .activation1{fill:#f4f4f4;stroke:#666;}#my-svg .activation2{fill:#f4f4f4;stroke:#666;}#my-svg .actorPopupMenu{position:absolute;}#my-svg .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#my-svg .actor-man circle,#my-svg line{fill:#ECECFF;stroke-width:2px;}#my-svg g rect.rect{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));stroke:#9370DB;}#my-svg .node .neo-node{stroke:#9370DB;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].swimlane.cluster rect{filter:none;}#my-svg [data-look="neo"].node path{stroke:#9370DB;stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#9370DB;filter:none;}#my-svg [data-look="neo"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g/><defs><symbol id="my-svg-computer" width="24" height="24"><path transform="scale(.5)" d="M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z"/></symbol></defs><defs><symbol id="my-svg-database" fill-rule="evenodd" clip-rule="evenodd"><path transform="scale(.5)" d="M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z"/></symbol></defs><defs><symbol id="my-svg-clock" width="24" height="24"><path transform="scale(.5)" d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z"/></symbol></defs><defs><marker id="my-svg-arrowhead" refX="7.9" refY="5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M -1 0 L 10 5 L 0 10 z"/></marker></defs><defs><marker id="my-svg-crosshead" markerWidth="15" markerHeight="8" orient="auto" refX="4" refY="4.5"><path fill="none" stroke="#000000" stroke-width="1pt" d="M 1,2 L 6,7 M 6,2 L 1,7" style="stroke-dasharray: 0, 0;"/></marker></defs><defs><marker id="my-svg-filled-head" refX="15.5" refY="7" markerWidth="20" markerHeight="28" orient="auto"><path d="M 18,7 L9,13 L14,7 L9,1 Z"/></marker></defs><defs><marker id="my-svg-sequencenumber" refX="15" refY="15" markerWidth="60" markerHeight="40" orient="auto"><circle cx="15" cy="15" r="6"/></marker></defs><defs><marker id="my-svg-solidTopArrowHead" refX="7.9" refY="7.25" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 0 L 10 8 L 0 8 z"/></marker></defs><defs><marker id="my-svg-solidBottomArrowHead" refX="7.9" refY="0.75" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 0 L 10 0 L 0 8 z"/></marker></defs><defs><marker id="my-svg-stickTopArrowHead" refX="7.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 0 L 7 7" stroke="black" stroke-width="1.5" fill="none"/></marker></defs><defs><marker id="my-svg-stickBottomArrowHead" refX="7.5" refY="0" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto-start-reverse"><path d="M 0 7 L 7 0" stroke="black" stroke-width="1.5" fill="none"/></marker></defs><g data-et="note" data-id="i7"><rect x="269" y="443" fill="#EDF2AE" stroke="#666" width="385" height="56" class="note"/><text x="462" y="448" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="462">today: 3 frames/PUT, serialized on one lock</tspan></text><text x="462" y="466" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="noteText" dy="1em" style="font-size: 16px; font-weight: 400;"><tspan x="462">→ ~58 PUTs/s/relay, 64 appenders gain 0%</tspan></text></g><text x="183" y="80" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">PUT (admission token)</text><line x1="76" y1="109" x2="290" y2="109" class="messageLine0" data-et="message" data-id="i0" data-from="C" data-to="E" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="460" y="124" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">INGRESS_RESERVED (burn spend tag)</text><line x1="295" y1="153" x2="625" y2="153" class="messageLine0" data-et="message" data-id="i1" data-from="E" data-to="W" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="630" y="168" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">fsync before ack</text><path d="M 630,197 C 690,187 690,227 630,217" class="messageLine0" data-et="message" data-id="i2" data-from="W" data-to="W" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="460" y="242" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">ATTEMPT_CONSUMED (+ fsync)</text><line x1="295" y1="271" x2="625" y2="271" class="messageLine0" data-et="message" data-id="i3" data-from="E" data-to="W" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="295" y="286" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">stage blob</text><path d="M 295,315 C 355,305 355,345 295,335" class="messageLine0" data-et="message" data-id="i4" data-from="E" data-to="E" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="460" y="360" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">PUT_COMMITTED (+ fsync)</text><line x1="295" y1="389" x2="625" y2="389" class="messageLine0" data-et="message" data-id="i5" data-from="E" data-to="W" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="fill: none;"/><text x="354" y="404" text-anchor="middle" dominant-baseline="middle" alignment-baseline="middle" class="messageText" dy="1em" style="font-size: 16px; font-weight: 400;">ack (durable)</text><line x1="628" y1="433" x2="79" y2="433" class="messageLine1" data-et="message" data-id="i6" data-from="W" data-to="C" stroke-width="2" stroke="none" marker-end="url(#my-svg-arrowhead)" style="stroke-dasharray: 3, 3; fill: none;"/></svg></div>
<p><strong>Why the release waits on it (status verified 2026-07-17):</strong></p>
<table>
<thead>
<tr>
<th>Phase</th>
<th>Content</th>
<th>Status</th>
</tr>
</thead>
<tbody><tr>
<td>0 — measure</td>
<td>capacity model + portable harnesses</td>
<td><strong>done</strong> (macOS upper bounds; Linux fleet rerun required for release-grade evidence)</td>
</tr>
<tr>
<td>1 — group commit</td>
<td>batching in the <code>&#39;\0wal&#39;</code> mutex + fdatasync + preallocation</td>
<td><strong>not implemented</strong></td>
</tr>
<tr>
<td>2 — single-commit PUT</td>
<td>3 frames → 1</td>
<td><strong>not implemented</strong></td>
</tr>
<tr>
<td>3 — segmented WAL</td>
<td>pruning + checkpoint-anchored recovery, one format rev paired with the D-6 <code>K_partition</code> decision</td>
<td><strong>not implemented</strong> (<code>walPruningSupported: false</code>)</td>
</tr>
<tr>
<td>4 — model rerun</td>
<td>scenarios with measured constants</td>
<td>partially done in Phase 0</td>
</tr>
</tbody></table>
<p>Phase 3 <strong>must</strong> land before the blind store-format authority and protocol hashes freeze — it shares one migration with D-6 and therefore gates the giga release&#39;s freeze. Invariants every phase must preserve: atomic one-use spend, fsync-before-ack (group fsync allowed), 15-min canonical retry, O(1) drop-wins, fail-closed recovery, writer fence + continuity hash, epoch floor, spent-marker horizon.</p>
<p><strong>Do-not-overclaim flags:</strong> no WAL code exists in the main hiverelay repo (it lives in the blind line); phases 1–3 do not exist anywhere as of 2026-07-17; Phase 0 numbers are macOS-only upper bounds.</p>
<h2>6. Release readiness map</h2>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Lane</th>
<th>Code</th>
<th>Tests</th>
<th>Gate to release</th>
</tr>
</thead>
<tbody><tr>
<td>Drift cleanup</td>
<td>hiverelay</td>
<td>merged</td>
<td>full unit suite green</td>
<td>— done</td>
</tr>
<tr>
<td>Blind cells</td>
<td>hiverelay</td>
<td>shipped v0.22+</td>
<td>e2e fleet tests green</td>
<td>repair/AutoHeal is roadmap (not a gate)</td>
</tr>
<tr>
<td>Tor onion transport</td>
<td>hiverelay</td>
<td>shipped 2026-07-17</td>
<td>48 unit + live-tor e2e green</td>
<td>follow-ups: pairing hookup, peer-vport listener, 100 MB gate measurement</td>
</tr>
<tr>
<td>HTTPS gateway (path)</td>
<td>hiverelay</td>
<td>shipped</td>
<td>streaming integration green</td>
<td>— done</td>
</tr>
<tr>
<td>HTTPS gateway (app origins)</td>
<td>hr-https-gateway</td>
<td>Phase-1 canary</td>
<td>canary suites</td>
<td><strong>not merged</strong>; readiness gates G1-G13; staging only</td>
</tr>
<tr>
<td>Namespace</td>
<td>hiverelay</td>
<td>shipped v0.24.1</td>
<td>unit + config/env green</td>
<td>bytesPerDay enforcement (minor)</td>
</tr>
<tr>
<td>WAL</td>
<td>blind line (vnext/hq)</td>
<td>v2 shipped; phases 1–3 pending</td>
<td>Phase-0 evidence</td>
<td><strong>the freeze gate</strong> (Phase 3 + D-6 pairing + Linux rerun)</td>
</tr>
</tbody></table>
<h2>7. The final test matrix (what &quot;test everything out&quot; means)</h2>
<ol>
<li><strong>Per-feature suites</strong> — all green today (unit suites incl. 48 new tor tests; custody/dispersal fleet e2e; gateway streaming; namespace config).</li>
<li><strong>Cross-feature journeys</strong> —<ul>
<li>disperse k-of-n cells over Tor onion endpoints; receipts commit; reconstruct client-side (blind × tor);</li>
<li>public app served via gateway while custody entries hard-403; same relay reachable over onion (gateway × tor);</li>
<li>two apps sharing one relay&#39;s outboxlog under distinct blind namespaces, with takedown (namespace × blind);</li>
<li>wake hints over the onion control path into namespaced outboxes (namespace × tor/nym).</li>
</ul>
</li>
<li><strong>Adversarial/privacy gates</strong> — fail-closed downgrade suites, redaction audit sweeps on public payloads, negative-probe on private onion endpoints, orphan-pin and cross-namespace replay rejection.</li>
<li><strong>Release-gate holdouts</strong> — WAL phases 1–3 + Linux Phase-0 rerun (durability/throughput), app-origin gateway readiness checklist, 100 MB bulk-over-onion measurement.</li>
</ol>
<h2>8. Sources of truth</h2>
<ul>
<li>Feature docs: <a href="./BLIND-CELLS.md">BLIND-CELLS</a>, <a href="./TOR-ONION-TRANSPORT.md">TOR-ONION-TRANSPORT</a>, <a href="./HTTPS-GATEWAY.md">HTTPS-GATEWAY</a>, <a href="./NAMESPACE.md">NAMESPACE</a>, plus <code>docs/tor-transport.md</code> (operator guide).</li>
<li>Research vault (<code>00-brain/research/</code>): Nym × HiveRelay spec, Nym economics deep dive, relay-anonymity decision matrix, Tor v3 spec, M0 evidence pack.</li>
<li>WAL: <code>00-core/WAL-DESIGN-ATTACK-2026-07-13.md</code>, <code>00-core/wal-phase0-evidence-2026-07-13/</code>, blind line (<code>hr-blind-review</code>, vnext/hq lanes).</li>
<li>Gateway canary: <code>00-core/hr-https-gateway/docs/PUBLIC-HTTPS-HIVE-GATEWAY-SPEC.md</code> and canary runbook.</li>
</ul>

<hr>
<p style="color:#7a869e;font-size:.8rem">HiveRelay release documentation — rendered 2026-07-18. Source: <code>docs/GIGA-RELEASE-ARCHITECTURE</code> in the hiverelay repository.</p>
</div>
</body>
</html>