<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" style="background: #ffffff; background-color: light-dark(#ffffff, #121212); color-scheme: light;" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1815px" height="1024px" viewBox="0 0 1815 1024"><defs/><rect fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));" width="100%" height="100%" x="0" y="0"/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="07-2"><g><rect x="16.1" y="15.21" width="1780" height="44" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 37px; margin-left: 18px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: nowrap; "><span style="font-size:30px"><b>Anatomy of a policy document</b></span></div></div></div></foreignObject><text x="18" y="41" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="12px">Anatomy of a policy document</text></switch></g></g></g><g data-cell-id="07-3"><g><rect x="16.1" y="59.21" width="1780" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 74px; margin-left: 18px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#000000, #ffffff); line-height: 1.2; pointer-events: all; white-space: nowrap; "><span style="font-size: 17px; color: light-dark(rgb(82, 96, 109), rgb(146, 158, 170));">One JSON schema for open and sealed carriers: a subject-wide global set, the deny gates, and permissions in eight categories. Every top-level key is optional; {} is a valid document.</span></div></div></div></foreignObject><text x="18" y="78" fill="#000000" style="fill: light-dark(rgb(0, 0, 0), rgb(255, 255, 255));" font-family="Helvetica" font-size="12px">One JSON schema for open and sealed carriers: a subject-wide global set, the deny gates, and permissions in eight categories. Every top-level key is optional; {} is a valid document.</text></switch></g></g></g><g data-cell-id="07-4"><g><path d="M 406.1 155.21 L 406.1 125.21 Q 406.1 121.21 402.1 121.21 L 20.1 121.21 Q 16.1 121.21 16.1 125.21 L 16.1 155.21" fill="#b0e3e6" style="fill: light-dark(rgb(176, 227, 230), rgb(16, 60, 63)); stroke: light-dark(rgb(14, 128, 136), rgb(70, 168, 175));" stroke="#0e8088" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 16.1 155.21 L 16.1 379.21 Q 16.1 383.21 20.1 383.21 L 402.1 383.21 Q 406.1 383.21 406.1 379.21 L 406.1 155.21" fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(14, 128, 136), rgb(70, 168, 175));" stroke="#0e8088" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 16.1 155.21 L 406.1 155.21" fill="none" stroke="#0e8088" style="stroke: light-dark(rgb(14, 128, 136), rgb(70, 168, 175));" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 138px; margin-left: 211px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; "><span style="font-size:16px"><b>global — the subject-wide gate</b></span></div></div></div></foreignObject><text x="211" y="142" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">global — the subject-wide gate</text></switch></g></g><g data-cell-id="07-5"><g><rect x="26.1" y="161.21" width="370" height="216" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 372px; height: 1px; padding-top: 166px; margin-left: 26px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">An array. Each element is either a restriction entry written inline, or a restriction-driving profile reference:<br /><span style="font-family: Courier New;">{"profile": {"id": "…", "relays": […]}}</span><br />Joins the one global set — the union over every guardian's binding carriers — and gates both directions, the guardians' own line included.<br /><span style="font-size: 12px; color: light-dark(rgb(82, 96, 109), rgb(146, 158, 170));">A harvested carrier's global section never applies.</span></div></div></div></foreignObject><text x="26" y="180" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="14px"><tspan x="26" y="180">An array. Each element is either a restriction entry written</tspan><tspan x="26" y="197">inline, or a restriction-driving profile reference:</tspan><tspan x="26" y="214">{"profile": {"id": "…", "relays": […]}}</tspan><tspan x="26" y="231">Joins the one global set — the union over every guardian's</tspan><tspan x="26" y="248">binding carriers — and gates both directions, the guardians'</tspan><tspan x="26" y="265">own line included.</tspan><tspan x="26" y="282">A harvested carrier's global section never applies.</tspan></text></switch></g></g></g></g><g data-cell-id="07-6"><g><path d="M 811.1 155.21 L 811.1 125.21 Q 811.1 121.21 807.1 121.21 L 425.1 121.21 Q 421.1 121.21 421.1 125.21 L 421.1 155.21" fill="#f8cecc" style="fill: light-dark(rgb(248, 206, 204), rgb(81, 45, 43)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));" stroke="#b85450" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 421.1 155.21 L 421.1 379.21 Q 421.1 383.21 425.1 383.21 L 807.1 383.21 Q 811.1 383.21 811.1 379.21 L 811.1 155.21" fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));" stroke="#b85450" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 421.1 155.21 L 811.1 155.21" fill="none" stroke="#b85450" style="stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 138px; margin-left: 616px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; "><span style="font-size:16px"><b>deny — the deny gates</b></span></div></div></div></foreignObject><text x="616" y="142" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">deny — the deny gates</text></switch></g></g><g data-cell-id="07-7"><g><rect x="431.1" y="161.21" width="370" height="216" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 372px; height: 1px; padding-top: 166px; margin-left: 431px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">pubkeys</span>  people<br /><span style="font-family: Courier New;">events</span>   things, by id or coordinate — the thing, never its author<br /><span style="font-family: Courier New;">relays</span>   places<br /><span style="font-family: Courier New;">lists</span>    shared blocklists, read one level deep<br />Unioned over every guardian's binding carriers; over-rules every grant.<br /><span style="font-size: 12px; color: light-dark(rgb(82, 96, 109), rgb(146, 158, 170));">A deny value naming a current guardian refuses the assembly.</span></div></div></div></foreignObject><text x="431" y="180" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="14px"><tspan x="431" y="180">pubkeys people</tspan><tspan x="431" y="197">events things, by id or coordinate — the thing, never its</tspan><tspan x="431" y="214">author</tspan><tspan x="431" y="231">relays places</tspan><tspan x="431" y="248">lists shared blocklists, read one level deep</tspan><tspan x="431" y="265">Unioned over every guardian's binding carriers; over-rules</tspan><tspan x="431" y="282">every grant.</tspan><tspan x="431" y="299">A deny value naming a current guardian refuses the</tspan><tspan x="431" y="316">assembly.</tspan></text></switch></g></g></g></g><g data-cell-id="07-8"><g><path d="M 1216.1 155.21 L 1216.1 125.21 Q 1216.1 121.21 1212.1 121.21 L 830.1 121.21 Q 826.1 121.21 826.1 125.21 L 826.1 155.21" fill="#dae8fc" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));" stroke="#6c8ebf" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 826.1 155.21 L 826.1 379.21 Q 826.1 383.21 830.1 383.21 L 1212.1 383.21 Q 1216.1 383.21 1216.1 379.21 L 1216.1 155.21" fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));" stroke="#6c8ebf" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 826.1 155.21 L 1216.1 155.21" fill="none" stroke="#6c8ebf" style="stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 138px; margin-left: 1021px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; "><span style="font-size:16px"><b>permissions — eight categories</b></span></div></div></div></foreignObject><text x="1021" y="142" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">permissions — eight categories</text></switch></g></g><g data-cell-id="07-9"><g><rect x="836.1" y="161.21" width="370" height="216" fill="none" stroke="none" pointer-events="all"/></g></g></g><g data-cell-id="07-10"><g><rect x="846.1" y="169.21" width="170" height="32" rx="16" ry="16" fill="#dae8fc" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));" stroke="#6c8ebf" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 185px; margin-left: 847px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 13px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">interact/npub</span></div></div></div></foreignObject><text x="931" y="189" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="13px" text-anchor="middle">interact/npub</text></switch></g></g></g><g data-cell-id="07-11"><g><rect x="1026.1" y="169.21" width="170" height="32" rx="16" ry="16" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 185px; margin-left: 1027px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 13px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">view/npub</span></div></div></div></foreignObject><text x="1111" y="189" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="13px" text-anchor="middle">view/npub</text></switch></g></g></g><g data-cell-id="07-12"><g><rect x="846.1" y="209.21" width="170" height="32" rx="16" ry="16" fill="#dae8fc" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));" stroke="#6c8ebf" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 225px; margin-left: 847px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 13px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">interact/relay</span></div></div></div></foreignObject><text x="931" y="229" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="13px" text-anchor="middle">interact/relay</text></switch></g></g></g><g data-cell-id="07-13"><g><rect x="1026.1" y="209.21" width="170" height="32" rx="16" ry="16" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 225px; margin-left: 1027px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 13px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">view/relay</span></div></div></div></foreignObject><text x="1111" y="229" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="13px" text-anchor="middle">view/relay</text></switch></g></g></g><g data-cell-id="07-14"><g><rect x="846.1" y="249.21" width="170" height="32" rx="16" ry="16" fill="#dae8fc" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));" stroke="#6c8ebf" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 265px; margin-left: 847px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 13px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">interact/event</span></div></div></div></foreignObject><text x="931" y="269" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="13px" text-anchor="middle">interact/event</text></switch></g></g></g><g data-cell-id="07-15"><g><rect x="1026.1" y="249.21" width="170" height="32" rx="16" ry="16" fill="#f5f5f5" style="fill: light-dark(rgb(245, 245, 245), rgb(26, 26, 26)); stroke: light-dark(rgb(102, 102, 102), rgb(149, 149, 149));" stroke="#666666" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 265px; margin-left: 1027px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 13px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">view/event</span></div></div></div></foreignObject><text x="1111" y="269" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="13px" text-anchor="middle">view/event</text></switch></g></g></g><g data-cell-id="07-16"><g><rect x="846.1" y="289.21" width="170" height="32" rx="16" ry="16" fill="#e1d5e7" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));" stroke="#9673a6" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 305px; margin-left: 847px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 13px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">extend/npub</span></div></div></div></foreignObject><text x="931" y="309" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="13px" text-anchor="middle">extend/npub</text></switch></g></g></g><g data-cell-id="07-17"><g><rect x="1026.1" y="289.21" width="170" height="32" rx="16" ry="16" fill="#e1d5e7" style="fill: light-dark(rgb(225, 213, 231), rgb(57, 47, 63)); stroke: light-dark(rgb(150, 115, 166), rgb(149, 119, 163));" stroke="#9673a6" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 305px; margin-left: 1027px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 13px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">extend/relay</span></div></div></div></foreignObject><text x="1111" y="309" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="13px" text-anchor="middle">extend/relay</text></switch></g></g></g><g data-cell-id="07-18"><g><rect x="846.1" y="335.21" width="350" height="44" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 352px; height: 1px; padding-top: 340px; margin-left: 846px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Each holds an array of permissions.<br /><span style="font-size: 12px; color: light-dark(rgb(82, 96, 109), rgb(146, 158, 170));">Admission composes 1-of-N across all guardians.</span></div></div></div></foreignObject><text x="846" y="354" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="14px"><tspan x="846" y="354">Each holds an array of permissions.</tspan><tspan x="846" y="371">Admission composes 1-of-N across all guardians.</tspan></text></switch></g></g></g><g data-cell-id="07-19"><g><path d="M 486.1 437.21 L 486.1 407.21 Q 486.1 403.21 482.1 403.21 L 20.1 403.21 Q 16.1 403.21 16.1 407.21 L 16.1 437.21" fill="#dae8fc" style="fill: light-dark(rgb(218, 232, 252), rgb(29, 41, 59)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));" stroke="#6c8ebf" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 16.1 437.21 L 16.1 769.21 Q 16.1 773.21 20.1 773.21 L 482.1 773.21 Q 486.1 773.21 486.1 769.21 L 486.1 437.21" fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));" stroke="#6c8ebf" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 16.1 437.21 L 486.1 437.21" fill="none" stroke="#6c8ebf" style="stroke: light-dark(rgb(108, 142, 191), rgb(92, 121, 163));" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 420px; margin-left: 251px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; "><span style="font-size:16px"><b>A permission — one card</b></span></div></div></div></foreignObject><text x="251" y="424" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">A permission — one card</text></switch></g></g><g data-cell-id="07-20"><g><rect x="26.1" y="443.21" width="450" height="324" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 452px; height: 1px; padding-top: 448px; margin-left: 26px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">label</span>  a name for prompts and the trace; never evaluated<br /><span style="font-family: Courier New;">restrictions</span>  its own entries — they narrow this permission alone<br /><span style="font-family: Courier New;">profile</span>  one grant-scoping profile, joined conjunctively<br /><span style="font-family: Courier New;">pubkeys</span> | <span style="font-family: Courier New;">relays</span> | <span style="font-family: Courier New;">events</span>  direct members, matching the category's scope<br /><span style="font-family: Courier New;">lists</span>  members by reference: NIP-51 lists<br /><span style="font-family: Courier New;">interactionRelays</span>  where exchanges with its members happen<br /><span style="font-family: Courier New;">monitorRelays</span>  an oversight copy of what the subject signs under it<br /><span style="font-family: Courier New;">extend</span>  <span style="font-family: Courier New;">{via, map}</span>: its members become sources (via: npub categories only)<br /><br /><span style="font-size: 12px; color: light-dark(rgb(82, 96, 109), rgb(146, 158, 170));">Routing is carried per permission, never per member. Which fields a category admits is fixed by a matrix; a field in the wrong place invalidates the permission. One exception to 'alone': a direct interact/relay permission keeps the relay whitelist on even when it is void or invalid.</span></div></div></div></foreignObject><text x="26" y="462" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="14px"><tspan x="26" y="462">label a name for prompts and the trace; never evaluated</tspan><tspan x="26" y="479">restrictions its own entries — they narrow this permission alone</tspan><tspan x="26" y="496">profile one grant-scoping profile, joined conjunctively</tspan><tspan x="26" y="513">pubkeys | relays | events direct members, matching the category's scope</tspan><tspan x="26" y="530">lists members by reference: NIP-51 lists</tspan><tspan x="26" y="547">interactionRelays where exchanges with its members happen</tspan><tspan x="26" y="564">monitorRelays an oversight copy of what the subject signs under it</tspan><tspan x="26" y="581">extend {via, map}: its members become sources (via: npub categories</tspan><tspan x="26" y="598">only)</tspan><tspan x="26" y="615"></tspan><tspan x="26" y="632">Routing is carried per permission, never per member. Which fields a</tspan><tspan x="26" y="649">category admits is fixed by a matrix; a field in the wrong place invalidates</tspan><tspan x="26" y="666">the permission. One exception to 'alone': a direct interact/relay</tspan><tspan x="26" y="683">permission keeps the relay whitelist on even when it is void or invalid.</tspan></text></switch></g></g></g></g><g data-cell-id="07-21"><g><path d="M 851.1 437.21 L 851.1 407.21 Q 851.1 403.21 847.1 403.21 L 505.1 403.21 Q 501.1 403.21 501.1 407.21 L 501.1 437.21" fill="#fff2cc" style="fill: light-dark(rgb(255, 242, 204), rgb(40, 29, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));" stroke="#d6b656" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 501.1 437.21 L 501.1 769.21 Q 501.1 773.21 505.1 773.21 L 847.1 773.21 Q 851.1 773.21 851.1 769.21 L 851.1 437.21" fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));" stroke="#d6b656" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 501.1 437.21 L 851.1 437.21" fill="none" stroke="#d6b656" style="stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 420px; margin-left: 676px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; "><span style="font-size:16px"><b>A restriction entry</b></span></div></div></div></foreignObject><text x="676" y="424" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">A restriction entry</text></switch></g></g><g data-cell-id="07-22"><g><rect x="511.1" y="443.21" width="330" height="324" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 332px; height: 1px; padding-top: 448px; margin-left: 511px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Six predicate fields, always all present — <span style="font-family: Courier New;">*</span> is the wildcard, never absence:<br /><br /><span style="font-family: Courier New;">polarity   allow | deny</span><br /><span style="font-family: Courier New;">kinds      * | 1,7,…</span><br /><span style="font-family: Courier New;">weekdays   * | 1,…,7</span><br /><span style="font-family: Courier New;">time       * | 21:00-07:00</span><br /><span style="font-family: Courier New;">direction  * | input | output</span><br /><span style="font-family: Courier New;">opacity    * | opaque | plain</span><br /><br />One optional demand, on allow entries only:<br /><span style="font-family: Courier New;">rebroadcast  "deny"</span><br /><br /><span style="font-size: 12px; color: light-dark(rgb(82, 96, 109), rgb(146, 158, 170));">Inside a permission, a malformed entry costs the whole permission: dropping it alone could loosen the grant.</span></div></div></div></foreignObject><text x="511" y="462" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="14px"><tspan x="511" y="462">Six predicate fields, always all present — * is the</tspan><tspan x="511" y="479">wildcard, never absence:</tspan><tspan x="511" y="496"></tspan><tspan x="511" y="513">polarity allow | deny</tspan><tspan x="511" y="530">kinds * | 1,7,…</tspan><tspan x="511" y="547">weekdays * | 1,…,7</tspan><tspan x="511" y="564">time * | 21:00-07:00</tspan><tspan x="511" y="581">direction * | input | output</tspan><tspan x="511" y="598">opacity * | opaque | plain</tspan><tspan x="511" y="615"></tspan><tspan x="511" y="632">One optional demand, on allow entries only:</tspan><tspan x="511" y="649">rebroadcast "deny"</tspan><tspan x="511" y="666"></tspan><tspan x="511" y="683">Inside a permission, a malformed entry costs the</tspan><tspan x="511" y="700">whole permission: dropping it alone could loosen the</tspan><tspan x="511" y="717">grant.</tspan></text></switch></g></g></g></g><g data-cell-id="07-23"><g><path d="M 1216.1 437.21 L 1216.1 407.21 Q 1216.1 403.21 1212.1 403.21 L 870.1 403.21 Q 866.1 403.21 866.1 407.21 L 866.1 437.21" fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(77, 77, 77), rgb(171, 171, 171));" stroke="#4d4d4d" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 866.1 437.21 L 866.1 769.21 Q 866.1 773.21 870.1 773.21 L 1212.1 773.21 Q 1216.1 773.21 1216.1 769.21 L 1216.1 437.21" fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(77, 77, 77), rgb(171, 171, 171));" stroke="#4d4d4d" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 866.1 437.21 L 1216.1 437.21" fill="none" stroke="#4d4d4d" style="stroke: light-dark(rgb(77, 77, 77), rgb(171, 171, 171));" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 420px; margin-left: 1041px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; "><span style="font-size:16px"><b>A list reference</b></span></div></div></div></foreignObject><text x="1041" y="424" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">A list reference</text></switch></g></g><g data-cell-id="07-24"><g><rect x="876.1" y="443.21" width="330" height="324" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 332px; height: 1px; padding-top: 448px; margin-left: 876px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">{"a": "30000:&lt;pk&gt;:classmates"}</span><br />live — follows the list at that address<br /><br /><span style="font-family: Courier New;">{"a": "…", "id": "&lt;event id&gt;"}</span><br />pinned — exactly that one event<br /><br />Read by the site's scope: <span style="font-family: Courier New;">p</span> for people, <span style="font-family: Courier New;">relay</span>/<span style="font-family: Courier New;">r</span> for places, <span style="font-family: Courier New;">e</span>/<span style="font-family: Courier New;">a</span> for things; <span style="font-family: Courier New;">deny.lists</span> reads them all.<br /><br />A live list is followed only when its owner is a current guardian — or, inside a harvested carrier, that carrier's author.<br /><span style="font-size: 12px; color: light-dark(rgb(82, 96, 109), rgb(146, 158, 170));">Members are third-party material, read leniently: a malformed one is skipped.</span></div></div></div></foreignObject><text x="876" y="462" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="14px"><tspan x="876" y="462">{"a": "30000:&lt;pk&gt;:classmates"}</tspan><tspan x="876" y="479">live — follows the list at that address</tspan><tspan x="876" y="496"></tspan><tspan x="876" y="513">{"a": "…", "id": "&lt;event id&gt;"}</tspan><tspan x="876" y="530">pinned — exactly that one event</tspan><tspan x="876" y="547"></tspan><tspan x="876" y="564">Read by the site's scope: p for people, relay/r for</tspan><tspan x="876" y="581">places, e/a for things; deny.lists reads them all.</tspan><tspan x="876" y="598"></tspan><tspan x="876" y="615">A live list is followed only when its owner is a current</tspan><tspan x="876" y="632">guardian — or, inside a harvested carrier, that</tspan><tspan x="876" y="649">carrier's author.</tspan><tspan x="876" y="666">Members are third-party material, read leniently: a</tspan><tspan x="876" y="683">malformed one is skipped.</tspan></text></switch></g></g></g></g><g data-cell-id="07-25"><g><path d="M 1796.1 155.21 L 1796.1 125.21 Q 1796.1 121.21 1792.1 121.21 L 1240.1 121.21 Q 1236.1 121.21 1236.1 125.21 L 1236.1 155.21" fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(77, 77, 77), rgb(171, 171, 171));" stroke="#4d4d4d" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 1236.1 155.21 L 1236.1 769.21 Q 1236.1 773.21 1240.1 773.21 L 1792.1 773.21 Q 1796.1 773.21 1796.1 769.21 L 1796.1 155.21" fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(77, 77, 77), rgb(171, 171, 171));" stroke="#4d4d4d" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/><path d="M 1236.1 155.21 L 1796.1 155.21" fill="none" stroke="#4d4d4d" style="stroke: light-dark(rgb(77, 77, 77), rgb(171, 171, 171));" stroke-width="1.5" stroke-miterlimit="10" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 138px; margin-left: 1516px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; color: #1f2933; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: nowrap; "><span style="font-size:16px"><b>Example (abridged from the specification)</b></span></div></div></div></foreignObject><text x="1516" y="142" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Example (abridged from the specification)</text></switch></g></g><g data-cell-id="07-26"><g><rect x="1246.1" y="161.21" width="540" height="606" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 542px; height: 1px; padding-top: 166px; margin-left: 1246px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 12.5px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-family: Courier New;">{</span><br /><span style="font-family: Courier New;">  "global": [</span><br /><span style="font-family: Courier New;">    { "polarity": "deny", "kinds": "*",</span><br /><span style="font-family: Courier New;">      "weekdays": "*", "time": "21:00-07:00",</span><br /><span style="font-family: Courier New;">      "direction": "*", "opacity": "*" },</span><br /><span style="font-family: Courier New;">    { "profile": { "id": "&lt;event id&gt;",</span><br /><span style="font-family: Courier New;">        "relays": ["wss://relay.example"] } }</span><br /><span style="font-family: Courier New;">  ],</span><br /><span style="font-family: Courier New;">  "deny": {</span><br /><span style="font-family: Courier New;">    "pubkeys": ["&lt;pubkey&gt;"],</span><br /><span style="font-family: Courier New;">    "events": ["&lt;event id&gt;", "30023:&lt;pubkey&gt;:an-article"],</span><br /><span style="font-family: Courier New;">    "relays": ["wss://denied.example"],</span><br /><span style="font-family: Courier New;">    "lists": [{ "a": "30000:&lt;pk&gt;:blocklist", "id": "&lt;id&gt;" }]</span><br /><span style="font-family: Courier New;">  },</span><br /><span style="font-family: Courier New;">  "permissions": {</span><br /><span style="font-family: Courier New;">    "interact/npub": [</span><br /><span style="font-family: Courier New;">      { "label": "school friends",</span><br /><span style="font-family: Courier New;">        "restrictions": [</span><br /><span style="font-family: Courier New;">          { "polarity": "allow", "kinds": "1,7",</span><br /><span style="font-family: Courier New;">            "weekdays": "1,2,3,4,5",</span><br /><span style="font-family: Courier New;">            "time": "07:00-20:00",</span><br /><span style="font-family: Courier New;">            "direction": "*", "opacity": "*",</span><br /><span style="font-family: Courier New;">            "rebroadcast": "deny" } ],</span><br /><span style="font-family: Courier New;">        "monitorRelays": ["wss://family.example"],</span><br /><span style="font-family: Courier New;">        "pubkeys": ["&lt;pubkey&gt;"],</span><br /><span style="font-family: Courier New;">        "lists": [{ "a": "30000:&lt;guardian&gt;:classmates" }] }</span><br /><span style="font-family: Courier New;">    ],</span><br /><span style="font-family: Courier New;">    "extend/npub": [</span><br /><span style="font-family: Courier New;">      { "pubkeys": ["&lt;pubkey&gt;"],</span><br /><span style="font-family: Courier New;">        "extend": { "via": "curator",</span><br /><span style="font-family: Courier New;">          "map": { "interact/npub": "view",</span><br /><span style="font-family: Courier New;">                   "view/npub": "view" } } }</span><br /><span style="font-family: Courier New;">    ]</span><br /><span style="font-family: Courier New;">  }</span><br /><span style="font-family: Courier New;">}</span></div></div></div></foreignObject><text x="1246" y="179" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="13px"><tspan x="1246" y="179">{</tspan><tspan x="1246" y="194">"global": [</tspan><tspan x="1246" y="209">{ "polarity": "deny", "kinds": "*",</tspan><tspan x="1246" y="224">"weekdays": "*", "time": "21:00-07:00",</tspan><tspan x="1246" y="239">"direction": "*", "opacity": "*" },</tspan><tspan x="1246" y="254">{ "profile": { "id": "&lt;event id&gt;",</tspan><tspan x="1246" y="269">"relays": ["wss://relay.example"] } }</tspan><tspan x="1246" y="284">],</tspan><tspan x="1246" y="299">"deny": {</tspan><tspan x="1246" y="314">"pubkeys": ["&lt;pubkey&gt;"],</tspan><tspan x="1246" y="329">"events": ["&lt;event id&gt;", "30023:&lt;pubkey&gt;:an-article"],</tspan><tspan x="1246" y="344">"relays": ["wss://denied.example"],</tspan><tspan x="1246" y="359">"lists": [{ "a": "30000:&lt;pk&gt;:blocklist", "id": "&lt;id&gt;" }]</tspan><tspan x="1246" y="374">},</tspan><tspan x="1246" y="389">"permissions": {</tspan><tspan x="1246" y="404">"interact/npub": [</tspan><tspan x="1246" y="419">{ "label": "school friends",</tspan><tspan x="1246" y="434">"restrictions": [</tspan><tspan x="1246" y="449">{ "polarity": "allow", "kinds": "1,7",</tspan><tspan x="1246" y="464">"weekdays": "1,2,3,4,5",</tspan><tspan x="1246" y="479">"time": "07:00-20:00",</tspan><tspan x="1246" y="494">"direction": "*", "opacity": "*",</tspan><tspan x="1246" y="509">"rebroadcast": "deny" } ],</tspan><tspan x="1246" y="524">"monitorRelays": ["wss://family.example"],</tspan><tspan x="1246" y="539">"pubkeys": ["&lt;pubkey&gt;"],</tspan><tspan x="1246" y="554">"lists": [{ "a": "30000:&lt;guardian&gt;:classmates" }] }</tspan><tspan x="1246" y="569">],</tspan><tspan x="1246" y="584">"extend/npub": [</tspan><tspan x="1246" y="599">{ "pubkeys": ["&lt;pubkey&gt;"],</tspan><tspan x="1246" y="614">"extend": { "via": "curator",</tspan><tspan x="1246" y="629">"map": { "interact/npub": "view",</tspan><tspan x="1246" y="644">"view/npub": "view" } } }</tspan><tspan x="1246" y="659">]</tspan><tspan x="1246" y="674">}</tspan><tspan x="1246" y="689">}</tspan></text></switch></g></g></g></g><g data-cell-id="07-27"><g><rect x="16.1" y="801.21" width="1200" height="30" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1202px; height: 1px; padding-top: 806px; margin-left: 16px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 15px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="font-size:19px"><b>Strict where TEPP writes, lenient where others do</b></span></div></div></div></foreignObject><text x="16" y="821" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="15px">Strict where TEPP writes, lenient where others do</text></switch></g></g></g><g data-cell-id="07-28"><g><rect x="16.1" y="841.21" width="430" height="112" rx="4" ry="4" fill="#f8cecc" style="fill: light-dark(rgb(248, 206, 204), rgb(81, 45, 43)); stroke: light-dark(rgb(184, 84, 80), rgb(215, 129, 126));" stroke="#b85450" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 408px; height: 1px; padding-top: 858px; margin-left: 28px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>Unknown or duplicate key, null, odd numbers, a bad map mode</b><br />The whole payload is invalid (numbers must be plain integers). In a binding carrier the assembly refuses — loud and local; a harvested carrier drops.</div></div></div></foreignObject><text x="28" y="872" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="14px"><tspan x="28" y="872">Unknown or duplicate key, null, odd numbers, a bad map mode</tspan><tspan x="28" y="889">The whole payload is invalid (numbers must be plain integers). In</tspan><tspan x="28" y="906">a binding carrier the assembly refuses — loud and local; a</tspan><tspan x="28" y="923">harvested carrier drops.</tspan></text></switch></g></g></g><g data-cell-id="07-29"><g><rect x="466.1" y="841.21" width="430" height="112" rx="4" ry="4" fill="#fff2cc" style="fill: light-dark(rgb(255, 242, 204), rgb(40, 29, 0)); stroke: light-dark(rgb(214, 182, 86), rgb(109, 81, 0));" stroke="#d6b656" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 408px; height: 1px; padding-top: 858px; margin-left: 478px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>A malformed entry or field inside a permission</b><br />That whole permission is invalid: it grants nothing and vetoes nothing; the rest of the carrier stands.</div></div></div></foreignObject><text x="478" y="872" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="14px"><tspan x="478" y="872">A malformed entry or field inside a permission</tspan><tspan x="478" y="889">That whole permission is invalid: it grants nothing and vetoes</tspan><tspan x="478" y="906">nothing; the rest of the carrier stands.</tspan></text></switch></g></g></g><g data-cell-id="07-30"><g><rect x="916.1" y="841.21" width="430" height="112" rx="4" ry="4" fill="#b0e3e6" style="fill: light-dark(rgb(176, 227, 230), rgb(16, 60, 63)); stroke: light-dark(rgb(14, 128, 136), rgb(70, 168, 175));" stroke="#0e8088" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 408px; height: 1px; padding-top: 858px; margin-left: 928px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>A list or profile that cannot be loaded</b><br />Absent, retried and reported: a grant-side failure leaves its permission inert; a deny list lapses, visibly.</div></div></div></foreignObject><text x="928" y="872" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="14px"><tspan x="928" y="872">A list or profile that cannot be loaded</tspan><tspan x="928" y="889">Absent, retried and reported: a grant-side failure leaves its</tspan><tspan x="928" y="906">permission inert; a deny list lapses, visibly.</tspan></text></switch></g></g></g><g data-cell-id="07-31"><g><rect x="1366.1" y="841.21" width="430" height="112" rx="4" ry="4" fill="#ffffff" style="fill: light-dark(rgb(255, 255, 255), rgb(18, 18, 18)); stroke: light-dark(rgb(77, 77, 77), rgb(171, 171, 171));" stroke="#4d4d4d" stroke-width="1.5" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 408px; height: 1px; padding-top: 858px; margin-left: 1378px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b>{} — the empty document</b><br />Valid. Republished at a coordinate, it retires the carrier: policy shrinks only by a signed act.</div></div></div></foreignObject><text x="1378" y="872" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="14px"><tspan x="1378" y="872">{} — the empty document</tspan><tspan x="1378" y="889">Valid. Republished at a coordinate, it retires the carrier: policy</tspan><tspan x="1378" y="906">shrinks only by a signed act.</tspan></text></switch></g></g></g><g data-cell-id="07-32"><g transform="translate(0.5,0.5)"><path d="M 16.1 973.21 L 1796.1 973.21" fill="none" stroke="#d9dee4" style="stroke: light-dark(rgb(217, 222, 228), rgb(42, 47, 52));" stroke-miterlimit="10" pointer-events="stroke"/></g></g><g data-cell-id="07-33"><g><rect x="16.1" y="981.21" width="1780" height="26" fill="none" stroke="none" pointer-events="all"/></g><g><g><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 1782px; height: 1px; padding-top: 994px; margin-left: 16px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; color: #1f2933; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: light-dark(#1f2933, #c4ccd5); line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: light-dark(rgb(82, 96, 109), rgb(146, 158, 170));">TEPP Zeta · diagram 07 · statements: POL-001–POL-135 (schema, grammar, degradation, matrix), LIST-001–LIST-026, CONS-003, CONS-095, ADDR-022</span></div></div></div></foreignObject><text x="16" y="998" fill="#1f2933" style="fill: light-dark(rgb(31, 41, 51), rgb(196, 204, 213));" font-family="Helvetica" font-size="12px">TEPP Zeta · diagram 07 · statements: POL-001–POL-135 (schema, grammar, degradation, matrix), LIST-001–LIST-026, CONS-003, CONS-095, ADDR-022</text></switch></g></g></g></g></g></g></svg>