d2 emits SVG natively; its PNG path wants a ~150 MB headless-Chromium download and prompts interactively, so every PNG here was produced by an out-of-band magick step. There is no Chromium on this system. Dropping PNG removes the dependency rather than trading one format for another, and cuts docs/diagrams/ from 17 MB to 3.3 MB. SVG renders in Gitea and in clide (`clide draw --file <path>`, which takes .d2 source directly), and diffs as text. One PNG is kept on purpose: design/star-map-concentric.png has no .d2 source. Also renders the 7 star-map .d2 files for the first time. star-map-plan.md listed their renders as a deliverable in March and the step never ran; the new `make check-diagrams` is what surfaced it. New: docs/diagrams/data-flow/wiki-generator-flow.d2 — which way the arrows point for any file under wiki/. Every edge was read in the tool's own source rather than inferred. It records the trap that keeps costing us: scaffold_bodies.py writes a body page once and never overwrites it, and the generator then reads that frontmatter directly — so a hand-edit there is not reverted, it is obeyed, and silently changes world generation. Two rendering traps found the expensive way and now written down: - A d2 `|md` block becomes an SVG <foreignObject>. ImageMagick and flutter_svg both silently drop it, so the legend was in the file and invisible in every viewer except a browser. Plain labels render as real <text> everywhere. - Container boxes fight the layout engine. Grouping nodes whose flow-depths differ forces long edge routes; this diagram went from an unreadable 2.4:1 sprawl to a legible 0.75:1 by deleting five containers and changing nothing else. Colour classes carry the grouping instead. make diagrams / make check-diagrams render and gate. Repo-specific rules in .claude/rules/diagrams.md; d2 syntax and the traps live in the user-scope d2-diagram skill, whose PNG default was flipped to SVG to match. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
118 lines
48 KiB
XML
118 lines
48 KiB
XML
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" data-d2-version="v0.8.1-HEAD" preserveAspectRatio="xMinYMin meet" viewBox="0 0 3093 1850"><svg class="d2-696590181 d2-svg" width="3093" height="1850" viewBox="-91 -101 3093 1850"><rect x="-91.000000" y="-101.000000" width="3093.000000" height="1850.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
|
|
.d2-696590181 .text {
|
|
font-family: "d2-696590181-font-regular";
|
|
}
|
|
@font-face {
|
|
font-family: d2-696590181-font-regular;
|
|
src: url("data:application/font-woff;base64,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");
|
|
}
|
|
.d2-696590181 .text-bold {
|
|
font-family: "d2-696590181-font-bold";
|
|
}
|
|
@font-face {
|
|
font-family: d2-696590181-font-bold;
|
|
src: url("data:application/font-woff;base64,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");
|
|
}
|
|
.d2-696590181 .text-italic {
|
|
font-family: "d2-696590181-font-italic";
|
|
}
|
|
@font-face {
|
|
font-family: d2-696590181-font-italic;
|
|
src: url("data:application/font-woff;base64,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");
|
|
}]]></style><style type="text/css"><![CDATA[.shape {
|
|
shape-rendering: geometricPrecision;
|
|
stroke-linejoin: round;
|
|
}
|
|
.connection {
|
|
stroke-linecap: round;
|
|
stroke-linejoin: round;
|
|
}
|
|
.blend {
|
|
mix-blend-mode: multiply;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.d2-696590181 .fill-N1{fill:#0A0F25;}
|
|
.d2-696590181 .fill-N2{fill:#676C7E;}
|
|
.d2-696590181 .fill-N3{fill:#9499AB;}
|
|
.d2-696590181 .fill-N4{fill:#CFD2DD;}
|
|
.d2-696590181 .fill-N5{fill:#DEE1EB;}
|
|
.d2-696590181 .fill-N6{fill:#EEF1F8;}
|
|
.d2-696590181 .fill-N7{fill:#FFFFFF;}
|
|
.d2-696590181 .fill-B1{fill:#0D32B2;}
|
|
.d2-696590181 .fill-B2{fill:#0D32B2;}
|
|
.d2-696590181 .fill-B3{fill:#E3E9FD;}
|
|
.d2-696590181 .fill-B4{fill:#E3E9FD;}
|
|
.d2-696590181 .fill-B5{fill:#EDF0FD;}
|
|
.d2-696590181 .fill-B6{fill:#F7F8FE;}
|
|
.d2-696590181 .fill-AA2{fill:#4A6FF3;}
|
|
.d2-696590181 .fill-AA4{fill:#EDF0FD;}
|
|
.d2-696590181 .fill-AA5{fill:#F7F8FE;}
|
|
.d2-696590181 .fill-AB4{fill:#EDF0FD;}
|
|
.d2-696590181 .fill-AB5{fill:#F7F8FE;}
|
|
.d2-696590181 .stroke-N1{stroke:#0A0F25;}
|
|
.d2-696590181 .stroke-N2{stroke:#676C7E;}
|
|
.d2-696590181 .stroke-N3{stroke:#9499AB;}
|
|
.d2-696590181 .stroke-N4{stroke:#CFD2DD;}
|
|
.d2-696590181 .stroke-N5{stroke:#DEE1EB;}
|
|
.d2-696590181 .stroke-N6{stroke:#EEF1F8;}
|
|
.d2-696590181 .stroke-N7{stroke:#FFFFFF;}
|
|
.d2-696590181 .stroke-B1{stroke:#0D32B2;}
|
|
.d2-696590181 .stroke-B2{stroke:#0D32B2;}
|
|
.d2-696590181 .stroke-B3{stroke:#E3E9FD;}
|
|
.d2-696590181 .stroke-B4{stroke:#E3E9FD;}
|
|
.d2-696590181 .stroke-B5{stroke:#EDF0FD;}
|
|
.d2-696590181 .stroke-B6{stroke:#F7F8FE;}
|
|
.d2-696590181 .stroke-AA2{stroke:#4A6FF3;}
|
|
.d2-696590181 .stroke-AA4{stroke:#EDF0FD;}
|
|
.d2-696590181 .stroke-AA5{stroke:#F7F8FE;}
|
|
.d2-696590181 .stroke-AB4{stroke:#EDF0FD;}
|
|
.d2-696590181 .stroke-AB5{stroke:#F7F8FE;}
|
|
.d2-696590181 .background-color-N1{background-color:#0A0F25;}
|
|
.d2-696590181 .background-color-N2{background-color:#676C7E;}
|
|
.d2-696590181 .background-color-N3{background-color:#9499AB;}
|
|
.d2-696590181 .background-color-N4{background-color:#CFD2DD;}
|
|
.d2-696590181 .background-color-N5{background-color:#DEE1EB;}
|
|
.d2-696590181 .background-color-N6{background-color:#EEF1F8;}
|
|
.d2-696590181 .background-color-N7{background-color:#FFFFFF;}
|
|
.d2-696590181 .background-color-B1{background-color:#0D32B2;}
|
|
.d2-696590181 .background-color-B2{background-color:#0D32B2;}
|
|
.d2-696590181 .background-color-B3{background-color:#E3E9FD;}
|
|
.d2-696590181 .background-color-B4{background-color:#E3E9FD;}
|
|
.d2-696590181 .background-color-B5{background-color:#EDF0FD;}
|
|
.d2-696590181 .background-color-B6{background-color:#F7F8FE;}
|
|
.d2-696590181 .background-color-AA2{background-color:#4A6FF3;}
|
|
.d2-696590181 .background-color-AA4{background-color:#EDF0FD;}
|
|
.d2-696590181 .background-color-AA5{background-color:#F7F8FE;}
|
|
.d2-696590181 .background-color-AB4{background-color:#EDF0FD;}
|
|
.d2-696590181 .background-color-AB5{background-color:#F7F8FE;}
|
|
.d2-696590181 .color-N1{color:#0A0F25;}
|
|
.d2-696590181 .color-N2{color:#676C7E;}
|
|
.d2-696590181 .color-N3{color:#9499AB;}
|
|
.d2-696590181 .color-N4{color:#CFD2DD;}
|
|
.d2-696590181 .color-N5{color:#DEE1EB;}
|
|
.d2-696590181 .color-N6{color:#EEF1F8;}
|
|
.d2-696590181 .color-N7{color:#FFFFFF;}
|
|
.d2-696590181 .color-B1{color:#0D32B2;}
|
|
.d2-696590181 .color-B2{color:#0D32B2;}
|
|
.d2-696590181 .color-B3{color:#E3E9FD;}
|
|
.d2-696590181 .color-B4{color:#E3E9FD;}
|
|
.d2-696590181 .color-B5{color:#EDF0FD;}
|
|
.d2-696590181 .color-B6{color:#F7F8FE;}
|
|
.d2-696590181 .color-AA2{color:#4A6FF3;}
|
|
.d2-696590181 .color-AA4{color:#EDF0FD;}
|
|
.d2-696590181 .color-AA5{color:#F7F8FE;}
|
|
.d2-696590181 .color-AB4{color:#EDF0FD;}
|
|
.d2-696590181 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker-d2-696590181);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-696590181);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-696590181);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-696590181);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-696590181);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-696590181);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-696590181);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-696590181);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g class="d29ybGQ="><g class="shape" ><path d="M 1311 0 L 1259 34 L 1311 69 L 1414 69 L 1465 34 L 1414 0 Z" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="1362.000000" y="40.000000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px">ECS World State</text></g><g class="bG9z"><g class="shape" ><rect x="226.000000" y="210.000000" width="655.000000" height="142.000000" rx="4.000000" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="553.500000" y="169.000000" fill="#c8d0e0" class="text" style="text-anchor:middle;font-size:28px"><tspan x="553.500000" dy="0.000000">LOS System</tspan><tspan x="553.500000" dy="32.000000">(Albert Ford symmetric shadowcasting — D-035)</tspan></text></g><g class="cGVyY2VwdGlvbl9tb2Rlcw=="><g class="shape" ><rect x="10.000000" y="539.000000" width="1419.000000" height="142.000000" stroke="#333340" fill="#1a1e24" style="stroke-width:2;" /></g><text x="719.500000" y="526.000000" fill="#c8d0e0" class="text" style="text-anchor:middle;font-size:28px">Perception Modes (D-017)</text></g><g class="c291bmQ="><g class="shape" ><rect x="1469.000000" y="539.000000" width="1024.000000" height="142.000000" stroke="#333340" fill="#1a1e24" style="stroke-width:2;" /></g><text x="1981.000000" y="498.000000" fill="#c8d0e0" class="text" style="text-anchor:middle;font-size:28px"><tspan x="1981.000000" dy="0.000000">Sound System (D-018)</tspan><tspan x="1981.000000" dy="32.000000">Three-Range Model</tspan></text></g><g class="c25hcHNob3Q="><g class="shape" ><path d="M 1960 864 H 2141 C 2165 864 2165 894 2165 897 C 2165 900 2165 930 2141 930 H 1960 C 1936 930 1936 900 1936 897 C 1936 894 1936 864 1960 864 Z" stroke="#c8d8f0" fill="#1a1e24" style="stroke-width:2;" /><path d="M 2141 864 C 2117 864 2117 894 2117 897 C 2117 900 2117 930 2141 930" stroke="#c8d8f0" fill="#1a1e24" style="stroke-width:2;" /></g><text x="2038.500000" y="902.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px">ObserverSnapshot</text></g><g class="a2dfcmVhZA=="><g class="shape" ><path d="M 2543 567 C 2543 543 2704 543 2722 543 C 2740 543 2901 543 2901 567 V 653 C 2901 677 2740 677 2722 677 C 2704 677 2543 677 2543 653 V 567 Z" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /><path d="M 2543 567 C 2543 591 2704 591 2722 591 C 2740 591 2901 591 2901 567" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="2722.000000" y="619.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="2722.000000" dy="0.000000">KnowledgeGraph read</tspan><tspan x="2722.000000" dy="18.500000">(per-character — what THIS observer knows)</tspan></text></g><g class="Zm9n"><g class="shape" ><rect x="358.000000" y="1071.000000" width="1514.000000" height="142.000000" stroke="#c8d8f0" fill="#1a1e24" style="stroke-width:2;" /></g><text x="1115.000000" y="1030.000000" fill="#c8d0e0" class="text" style="text-anchor:middle;font-size:28px"><tspan x="1115.000000" dy="0.000000">Fog Rendering (D-059)</tspan><tspan x="1115.000000" dy="32.000000">5-layer shader system</tspan></text></g><g class="cmVjb2duaXRpb24="><g class="shape" ><rect x="1912.000000" y="1071.000000" width="676.000000" height="577.000000" stroke="#333340" fill="#1a1e24" style="stroke-width:2;" /></g><text x="2250.000000" y="1058.000000" fill="#c8d0e0" class="text" style="text-anchor:middle;font-size:28px">Fog Entity Recognition</text></g><g class="bG9zLmZvdg=="><g class="shape" ><rect x="256.000000" y="240.000000" width="336.000000" height="82.000000" stroke="#333340" fill="#1a1e24" style="stroke-width:2;" /></g><text x="424.000000" y="278.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="424.000000" dy="0.000000">compute_fov(is_opaque, origin, range, z)</tspan><tspan x="424.000000" dy="18.500000">→ VisibilityMap</tspan></text></g><g class="bG9zLnN5bW1ldHJ5"><g class="shape" ><rect x="652.000000" y="240.000000" width="199.000000" height="82.000000" stroke="#333340" fill="#1a1e24" style="stroke-width:2;" /></g><text x="751.500000" y="278.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="751.500000" dy="0.000000">Symmetry guarantee:</tspan><tspan x="751.500000" dy="18.500000">if A sees B → B sees A</tspan></text></g><g class="cGVyY2VwdGlvbl9tb2Rlcy5uYXR1cmFs"><g class="shape" ><rect x="40.000000" y="569.000000" width="224.000000" height="82.000000" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="152.000000" y="607.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="152.000000" dy="0.000000">Natural Vision</tspan><tspan x="152.000000" dy="18.500000">(walls block, cone model)</tspan></text></g><g class="cGVyY2VwdGlvbl9tb2Rlcy50aGVybWFs"><g class="shape" ><rect x="324.000000" y="569.000000" width="274.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" /></g><text x="461.000000" y="607.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="461.000000" dy="0.000000">Thermal</tspan><tspan x="461.000000" dy="18.500000">(heat through walls, no identity)</tspan></text></g><g class="cGVyY2VwdGlvbl9tb2Rlcy5jYW1lcmE="><g class="shape" ><rect x="658.000000" y="569.000000" width="186.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" /></g><text x="751.000000" y="607.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="751.000000" dy="0.000000">Camera Feeds</tspan><tspan x="751.000000" dy="18.500000">(remote, spoofable)</tspan></text></g><g class="cGVyY2VwdGlvbl9tb2Rlcy51bmlzcGhlcmU="><g class="shape" ><rect x="904.000000" y="569.000000" width="232.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" /></g><text x="1020.000000" y="607.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1020.000000" dy="0.000000">Unisphere Tracking</tspan><tspan x="1020.000000" dy="18.500000">(known inserts, maskable)</tspan></text></g><g class="cGVyY2VwdGlvbl9tb2Rlcy5hdWRpb19hbmFseXNpcw=="><g class="shape" ><rect x="1196.000000" y="569.000000" width="203.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" /></g><text x="1297.500000" y="607.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1297.500000" dy="0.000000">Audio Analysis</tspan><tspan x="1297.500000" dy="18.500000">(signatures, no visual)</tspan></text></g><g class="c291bmQuY2xvc2U="><g class="shape" ><rect x="1499.000000" y="569.000000" width="244.000000" height="82.000000" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="1621.000000" y="607.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1621.000000" dy="0.000000">Close (in/near LOS)</tspan><tspan x="1621.000000" dy="18.500000">High accuracy · stereo audio</tspan></text></g><g class="c291bmQubWVkaXVt"><g class="shape" ><rect x="1803.000000" y="569.000000" width="340.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="1973.000000" y="607.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1973.000000" dy="0.000000">Medium (outside LOS)</tspan><tspan x="1973.000000" dy="18.500000">Visual indicators at fog edge + monologue</tspan></text></g><g class="c291bmQubG9uZw=="><g class="shape" ><rect x="2203.000000" y="569.000000" width="260.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" /></g><text x="2333.000000" y="607.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="2333.000000" dy="0.000000">Long (across map)</tspan><tspan x="2333.000000" dy="18.500000">Insert notifications · spoofable</tspan></text></g><g class="Zm9nLmNsZWFy"><g class="shape" ><rect x="388.000000" y="1101.000000" width="224.000000" height="82.000000" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="500.000000" y="1139.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="500.000000" dy="0.000000">Clear (vision cone)</tspan><tspan x="500.000000" dy="18.500000">soft gradient 6-8 sim tiles</tspan></text></g><g class="Zm9nLmxpZ2h0X2ZvZw=="><g class="shape" ><rect x="672.000000" y="1101.000000" width="279.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="811.500000" y="1139.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="811.500000" dy="0.000000">Light Fog (peripheral)</tspan><tspan x="811.500000" dy="18.500000">desaturated 40-50%, Perlin noise</tspan></text></g><g class="Zm9nLmRlZXBfZm9n"><g class="shape" ><rect x="1011.000000" y="1101.000000" width="254.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="1138.000000" y="1139.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1138.000000" dy="0.000000">Deep Fog (explored)</tspan><tspan x="1138.000000" dy="18.500000">near-monochrome + zone tint</tspan></text></g><g class="Zm9nLnVuZXhwbG9yZWRfbWFwcw=="><g class="shape" ><rect x="1325.000000" y="1101.000000" width="255.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="1452.500000" y="1139.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1452.500000" dy="0.000000">Unexplored (has maps)</tspan><tspan x="1452.500000" dy="18.500000">geometric wireframe outlines</tspan></text></g><g class="Zm9nLnVuZXhwbG9yZWRfZGFyaw=="><g class="shape" ><rect x="1640.000000" y="1101.000000" width="202.000000" height="82.000000" stroke="#333340" fill="#1a1e24" style="stroke-width:2;" /></g><text x="1741.000000" y="1139.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1741.000000" dy="0.000000">Unexplored (no maps)</tspan><tspan x="1741.000000" dy="18.500000">solid near-black</tspan></text></g><g class="cmVjb2duaXRpb24uY2hpbWU="><g class="shape" ><rect x="2292.000000" y="1101.000000" width="266.000000" height="82.000000" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="2425.000000" y="1139.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="2425.000000" dy="0.000000">Recognition chime fires (D-067)</tspan><tspan x="2425.000000" dy="18.500000">at ONSET of cognitive delay</tspan></text></g><g class="cmVjb2duaXRpb24uZGVsYXk="><g class="shape" ><rect x="2305.000000" y="1354.000000" width="240.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="2425.000000" y="1392.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="2425.000000" dy="0.000000">Cognitive delay (D-060)</tspan><tspan x="2425.000000" dy="18.500000">0.6s base · 0.3s for anomaly</tspan></text></g><g class="cmVjb2duaXRpb24ubW9ub2xvZ3VlX2ZpcmU="><g class="shape" ><rect x="1942.000000" y="1536.000000" width="317.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="2100.500000" y="1574.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="2100.500000" dy="0.000000">Monologue fires DURING delay</tspan><tspan x="2100.500000" dy="18.500000">"Those footsteps... that's Kael's walk"</tspan></text></g><g class="cmVjb2duaXRpb24udHJhbnNpdGlvbg=="><g class="shape" ><rect x="2319.000000" y="1536.000000" width="212.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="2425.000000" y="1574.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="2425.000000" dy="0.000000">Grey blob → D-033 color</tspan><tspan x="2425.000000" dy="18.500000">+ silhouette over 0.3s</tspan></text></g><g class="KHdvcmxkIC0mZ3Q7IGxvcylbMF0="><marker id="mk-d2-696590181-1961329247" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#c8d8f0" class="connection" stroke-width="2" /> </marker><path d="M 1277.023976 47.308753 C 856.598999 113.000000 751.000000 131.899994 751.000000 137.500000" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-1961329247)" mask="url(#d2-696590181)" /><text x="1010.500000" y="95.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">entity positions + opaque tiles</text></g><g class="KHdvcmxkIC0mZ3Q7IHNvdW5kKVswXQ=="><marker id="mk-d2-696590181-3962577600" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#333340" class="connection" stroke-width="2" /> </marker><path d="M 1446.976024 47.308754 C 1867.400024 113.000000 1973.000000 141.600006 1973.000000 159.750000 C 1973.000000 177.899994 1973.000000 208.199997 1973.000000 235.500000 C 1973.000000 262.799988 1973.000000 299.200012 1973.000000 326.500000 C 1973.000000 353.799988 1973.000000 440.100006 1973.000000 466.500000" stroke="#333340" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-3962577600)" mask="url(#d2-696590181)" /><text x="1873.000000" y="120.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">sound events</text></g><g class="KGxvcyAtJmd0OyBwZXJjZXB0aW9uX21vZGVzKVswXQ=="><path d="M 751.000000 353.500000 C 751.000000 416.299988 751.000000 445.700012 751.000000 494.500000" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-1961329247)" mask="url(#d2-696590181)" /><text x="751.000000" y="431.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">VisibilityMap</text></g><g class="KHBlcmNlcHRpb25fbW9kZXMgLSZndDsgc25hcHNob3QpWzBd"><path d="M 751.000000 682.500000 C 751.000000 772.500000 988.200012 814.000000 1933.012111 887.688972" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-1961329247)" mask="url(#d2-696590181)" /><text x="1297.000000" y="836.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px"><tspan x="1297.000000" dy="0.000000">observer query result</tspan><tspan x="1297.000000" dy="18.500000">(what this sensor reveals)</tspan></text></g><g class="KHNvdW5kIC0mZ3Q7IHNuYXBzaG90KVswXQ=="><path d="M 1973.000000 682.500000 C 1973.000000 772.500000 1983.400024 809.200012 2022.581437 860.814007" stroke="#333340" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-3962577600)" mask="url(#d2-696590181)" /><text x="1975.000000" y="785.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">sound events</text></g><g class="KGtnX3JlYWQgLSZndDsgc25hcHNob3QpWzBd"><path d="M 2722.000000 679.000000 C 2722.000000 717.000000 2610.000000 812.400024 2165.955226 879.403185" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-1961329247)" mask="url(#d2-696590181)" /><text x="2479.000000" y="838.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">per-entity recognition data</text></g><g class="KHNuYXBzaG90IC0mZ3Q7IGZvZylbMF0="><path d="M 1935.010311 909.202826 C 1297.400024 974.200012 1137.500000 992.900024 1137.500000 998.500000" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-1961329247)" mask="url(#d2-696590181)" /><text x="1532.500000" y="956.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">visible entities + fog state</text></g><g class="KHNuYXBzaG90IC0mZ3Q7IHJlY29nbml0aW9uKVswXQ=="><path d="M 2158.939214 923.489334 C 2371.000000 977.000000 2424.500000 1006.700012 2424.500000 1067.500000" stroke="#333340" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-3962577600)" mask="url(#d2-696590181)" /><text x="2325.500000" y="971.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">heard/sensed entity not in LOS</text></g><g class="cmVjb2duaXRpb24uKGNoaW1lIC0mZ3Q7IGRlbGF5KVswXQ=="><path d="M 2424.500000 1185.000000 C 2424.500000 1223.000000 2424.500000 1305.699951 2424.500000 1350.500000" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-1961329247)" mask="url(#d2-696590181)" /><text x="2424.500000" y="1274.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">concurrent</text></g><g class="cmVjb2duaXRpb24uKGRlbGF5IC0mZ3Q7IG1vbm9sb2d1ZV9maXJlKVswXQ=="><marker id="mk-d2-696590181-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#0D32B2" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 2302.574289 1429.191036 C 2140.899902 1474.530029 2100.000000 1496.000000 2100.000000 1532.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-3488378134)" mask="url(#d2-696590181)" /></g><g class="cmVjb2duaXRpb24uKGRlbGF5IC0mZ3Q7IHRyYW5zaXRpb24pWzBd"><path d="M 2424.500000 1438.000000 C 2424.500000 1476.000000 2424.500000 1496.000000 2424.500000 1532.000000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-696590181-3488378134)" mask="url(#d2-696590181)" /></g><mask id="d2-696590181" maskUnits="userSpaceOnUse" x="-91" y="-101" width="3093" height="1850">
|
|
<rect x="-91" y="-101" width="3093" height="1850" fill="white"></rect>
|
|
<rect x="911.000000" y="79.000000" width="199" height="21" fill="black"></rect>
|
|
<rect x="1827.000000" y="104.000000" width="92" height="21" fill="black"></rect>
|
|
<rect x="708.000000" y="415.000000" width="86" height="21" fill="black"></rect>
|
|
<rect x="1212.000000" y="820.000000" width="170" height="37" fill="black"></rect>
|
|
<rect x="1929.000000" y="769.000000" width="92" height="21" fill="black"></rect>
|
|
<rect x="2388.000000" y="822.000000" width="182" height="21" fill="black"></rect>
|
|
<rect x="1448.000000" y="940.000000" width="169" height="21" fill="black"></rect>
|
|
<rect x="2223.000000" y="955.000000" width="205" height="21" fill="black"></rect>
|
|
<rect x="2386.000000" y="1258.000000" width="77" height="21" fill="black"></rect>
|
|
</mask></svg></svg>
|