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>
117 lines
36 KiB
XML
117 lines
36 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 1654 1115"><svg class="d2-2726864434 d2-svg" width="1654" height="1115" viewBox="-101 -101 1654 1115"><rect x="-101.000000" y="-101.000000" width="1654.000000" height="1115.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
|
|
.d2-2726864434 .text {
|
|
font-family: "d2-2726864434-font-regular";
|
|
}
|
|
@font-face {
|
|
font-family: d2-2726864434-font-regular;
|
|
src: url("data:application/font-woff;base64,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");
|
|
}
|
|
.d2-2726864434 .text-bold {
|
|
font-family: "d2-2726864434-font-bold";
|
|
}
|
|
@font-face {
|
|
font-family: d2-2726864434-font-bold;
|
|
src: url("data:application/font-woff;base64,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");
|
|
}
|
|
.d2-2726864434 .text-italic {
|
|
font-family: "d2-2726864434-font-italic";
|
|
}
|
|
@font-face {
|
|
font-family: d2-2726864434-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-2726864434 .fill-N1{fill:#0A0F25;}
|
|
.d2-2726864434 .fill-N2{fill:#676C7E;}
|
|
.d2-2726864434 .fill-N3{fill:#9499AB;}
|
|
.d2-2726864434 .fill-N4{fill:#CFD2DD;}
|
|
.d2-2726864434 .fill-N5{fill:#DEE1EB;}
|
|
.d2-2726864434 .fill-N6{fill:#EEF1F8;}
|
|
.d2-2726864434 .fill-N7{fill:#FFFFFF;}
|
|
.d2-2726864434 .fill-B1{fill:#0D32B2;}
|
|
.d2-2726864434 .fill-B2{fill:#0D32B2;}
|
|
.d2-2726864434 .fill-B3{fill:#E3E9FD;}
|
|
.d2-2726864434 .fill-B4{fill:#E3E9FD;}
|
|
.d2-2726864434 .fill-B5{fill:#EDF0FD;}
|
|
.d2-2726864434 .fill-B6{fill:#F7F8FE;}
|
|
.d2-2726864434 .fill-AA2{fill:#4A6FF3;}
|
|
.d2-2726864434 .fill-AA4{fill:#EDF0FD;}
|
|
.d2-2726864434 .fill-AA5{fill:#F7F8FE;}
|
|
.d2-2726864434 .fill-AB4{fill:#EDF0FD;}
|
|
.d2-2726864434 .fill-AB5{fill:#F7F8FE;}
|
|
.d2-2726864434 .stroke-N1{stroke:#0A0F25;}
|
|
.d2-2726864434 .stroke-N2{stroke:#676C7E;}
|
|
.d2-2726864434 .stroke-N3{stroke:#9499AB;}
|
|
.d2-2726864434 .stroke-N4{stroke:#CFD2DD;}
|
|
.d2-2726864434 .stroke-N5{stroke:#DEE1EB;}
|
|
.d2-2726864434 .stroke-N6{stroke:#EEF1F8;}
|
|
.d2-2726864434 .stroke-N7{stroke:#FFFFFF;}
|
|
.d2-2726864434 .stroke-B1{stroke:#0D32B2;}
|
|
.d2-2726864434 .stroke-B2{stroke:#0D32B2;}
|
|
.d2-2726864434 .stroke-B3{stroke:#E3E9FD;}
|
|
.d2-2726864434 .stroke-B4{stroke:#E3E9FD;}
|
|
.d2-2726864434 .stroke-B5{stroke:#EDF0FD;}
|
|
.d2-2726864434 .stroke-B6{stroke:#F7F8FE;}
|
|
.d2-2726864434 .stroke-AA2{stroke:#4A6FF3;}
|
|
.d2-2726864434 .stroke-AA4{stroke:#EDF0FD;}
|
|
.d2-2726864434 .stroke-AA5{stroke:#F7F8FE;}
|
|
.d2-2726864434 .stroke-AB4{stroke:#EDF0FD;}
|
|
.d2-2726864434 .stroke-AB5{stroke:#F7F8FE;}
|
|
.d2-2726864434 .background-color-N1{background-color:#0A0F25;}
|
|
.d2-2726864434 .background-color-N2{background-color:#676C7E;}
|
|
.d2-2726864434 .background-color-N3{background-color:#9499AB;}
|
|
.d2-2726864434 .background-color-N4{background-color:#CFD2DD;}
|
|
.d2-2726864434 .background-color-N5{background-color:#DEE1EB;}
|
|
.d2-2726864434 .background-color-N6{background-color:#EEF1F8;}
|
|
.d2-2726864434 .background-color-N7{background-color:#FFFFFF;}
|
|
.d2-2726864434 .background-color-B1{background-color:#0D32B2;}
|
|
.d2-2726864434 .background-color-B2{background-color:#0D32B2;}
|
|
.d2-2726864434 .background-color-B3{background-color:#E3E9FD;}
|
|
.d2-2726864434 .background-color-B4{background-color:#E3E9FD;}
|
|
.d2-2726864434 .background-color-B5{background-color:#EDF0FD;}
|
|
.d2-2726864434 .background-color-B6{background-color:#F7F8FE;}
|
|
.d2-2726864434 .background-color-AA2{background-color:#4A6FF3;}
|
|
.d2-2726864434 .background-color-AA4{background-color:#EDF0FD;}
|
|
.d2-2726864434 .background-color-AA5{background-color:#F7F8FE;}
|
|
.d2-2726864434 .background-color-AB4{background-color:#EDF0FD;}
|
|
.d2-2726864434 .background-color-AB5{background-color:#F7F8FE;}
|
|
.d2-2726864434 .color-N1{color:#0A0F25;}
|
|
.d2-2726864434 .color-N2{color:#676C7E;}
|
|
.d2-2726864434 .color-N3{color:#9499AB;}
|
|
.d2-2726864434 .color-N4{color:#CFD2DD;}
|
|
.d2-2726864434 .color-N5{color:#DEE1EB;}
|
|
.d2-2726864434 .color-N6{color:#EEF1F8;}
|
|
.d2-2726864434 .color-N7{color:#FFFFFF;}
|
|
.d2-2726864434 .color-B1{color:#0D32B2;}
|
|
.d2-2726864434 .color-B2{color:#0D32B2;}
|
|
.d2-2726864434 .color-B3{color:#E3E9FD;}
|
|
.d2-2726864434 .color-B4{color:#E3E9FD;}
|
|
.d2-2726864434 .color-B5{color:#EDF0FD;}
|
|
.d2-2726864434 .color-B6{color:#F7F8FE;}
|
|
.d2-2726864434 .color-AA2{color:#4A6FF3;}
|
|
.d2-2726864434 .color-AA4{color:#EDF0FD;}
|
|
.d2-2726864434 .color-AA5{color:#F7F8FE;}
|
|
.d2-2726864434 .color-AB4{color:#EDF0FD;}
|
|
.d2-2726864434 .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-2726864434);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-2726864434);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-2726864434);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-2726864434);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-2726864434);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-2726864434);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-2726864434);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-2726864434);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g class="dW5nZW5lcmF0ZWQ="><g class="shape" ><rect x="856.000000" y="0.000000" width="138.000000" height="82.000000" stroke="#333340" fill="#1a1e24" style="stroke-width:2;stroke-dasharray:10.000000,9.865639;" /></g><text x="925.000000" y="38.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="925.000000" dy="0.000000">Tier 4</tspan><tspan x="925.000000" dy="18.500000">Ungenerated</tspan></text></g><g class="c3RhdGVfc2F2ZWQ="><g class="shape" ><rect x="830.000000" y="232.000000" width="190.000000" height="98.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="925.000000" y="270.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="925.000000" dy="0.000000">Tier 3</tspan><tspan x="925.000000" dy="17.666667">State-Saved</tspan><tspan x="925.000000" dy="17.666667">~1-2KB frozen struct</tspan></text></g><g class="YmFja2dyb3VuZA=="><g class="shape" ><rect x="919.000000" y="530.000000" width="154.000000" height="98.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="996.000000" y="568.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="996.000000" dy="0.000000">Tier 2</tspan><tspan x="996.000000" dy="17.666667">Background</tspan><tspan x="996.000000" dy="17.666667">500-2,000 NPCs</tspan></text></g><g class="YWN0aXZl"><g class="shape" ><rect x="880.000000" y="815.000000" width="188.000000" height="98.000000" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="974.000000" y="853.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="974.000000" dy="0.000000">Tier 1</tspan><tspan x="974.000000" dy="17.666667">Active</tspan><tspan x="974.000000" dy="17.666667">30-80 NPCs · full sim</tspan></text></g><g class="c2NvcGVfdGFncw=="><g class="shape" ><path d="M 0 480 L 150 480 L 150 520 L 803 520 L 803 678 L 0 678 Z" stroke="#c8d8f0" fill="#1a1e24" style="stroke-width:2;" /></g><text x="401.500000" y="467.000000" fill="#c8d0e0" class="text" style="text-anchor:middle;font-size:28px">Scope Tags (prevent eviction)</text></g><g class="bHJ1"><g class="shape" ><path d="M 1266 343 C 1265 343 1264 343 1263 343 L 1081 282 C 1079 281 1079 280 1081 280 L 1263 219 C 1265 218 1268 218 1270 219 L 1451 279 C 1453 280 1453 281 1451 281 L 1269 343 C 1268 343 1267 343 1266 343 Z" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="1266.000000" y="278.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1266.000000" dy="0.000000">LRU Priority Queue</tspan><tspan x="1266.000000" dy="18.500000">(interaction-timestamp)</tspan></text></g><g class="c2NvcGVfdGFncy5uZWlnaGJvcmhvb2Q="><g class="shape" ><rect x="40.000000" y="546.000000" width="144.000000" height="66.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="112.000000" y="584.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px">neighborhood</text></g><g class="c2NvcGVfdGFncy5hY3RpdmVfcXVlc3Q="><g class="shape" ><rect x="244.000000" y="546.000000" width="134.000000" height="66.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="311.000000" y="584.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px">active-quest</text></g><g class="c2NvcGVfdGFncy5jb2xsZWFndWU="><g class="shape" ><rect x="438.000000" y="546.000000" width="113.000000" height="66.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="494.500000" y="584.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px">colleague</text></g><g class="c2NvcGVfdGFncy5rbm93bl9jb250YWN0"><g class="shape" ><rect x="611.000000" y="546.000000" width="152.000000" height="66.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="687.000000" y="584.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px">known-contact</text></g><g class="KHVuZ2VuZXJhdGVkIC0mZ3Q7IHN0YXRlX3NhdmVkKVswXQ=="><marker id="mk-d2-2726864434-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 924.500000 83.500000 C 924.500000 136.699997 924.500000 166.899994 924.500000 228.500000" stroke="#333340" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-2726864434-3962577600)" mask="url(#d2-2726864434)" /><text x="924.500000" y="155.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px"><tspan x="924.500000" dy="0.000000">player approach</tspan><tspan x="924.500000" dy="18.500000">(generated ahead)</tspan></text></g><g class="KHN0YXRlX3NhdmVkIC0mZ3Q7IGJhY2tncm91bmQpWzBd"><path d="M 943.207244 331.370777 C 967.299988 395.100006 975.700012 490.000000 983.640554 526.093422" stroke="#333340" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-2726864434-3962577600)" mask="url(#d2-2726864434)" /><text x="970.000000" y="426.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px"><tspan x="970.000000" dy="0.000000">player return</tspan><tspan x="970.000000" dy="18.500000">(~2-5ms reactivation)</tspan></text></g><g class="KGJhY2tncm91bmQgLSZndDsgc3RhdGVfc2F2ZWQpWzBd"><path d="M 917.014750 533.877570 C 842.150024 490.973999 835.599976 395.100006 883.563026 332.671933" stroke="#333340" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" marker-end="url(#mk-d2-2726864434-3962577600)" mask="url(#d2-2726864434)" /><text x="839.500000" y="451.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">LRU eviction</text></g><g class="KGJhY2tncm91bmQgLSZndDsgYWN0aXZlKVswXQ=="><marker id="mk-d2-2726864434-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 1055.286443 629.280369 C 1101.750000 668.000000 1097.550049 760.299988 1035.794974 812.906135" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-2726864434-1961329247)" mask="url(#d2-2726864434)" /><text x="1099.500000" y="723.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px"><tspan x="1099.500000" dy="0.000000">player proximity</tspan><tspan x="1099.500000" dy="18.500000">or scope tag match</tspan></text></g><g class="KGFjdGl2ZSAtJmd0OyBiYWNrZ3JvdW5kKVswXQ=="><path d="M 929.200232 813.979933 C 883.299988 760.299988 884.099976 668.000000 931.366844 630.486631" stroke="#333340" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" marker-end="url(#mk-d2-2726864434-3962577600)" mask="url(#d2-2726864434)" /><text x="884.000000" y="716.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px"><tspan x="884.000000" dy="0.000000">LRU eviction</tspan><tspan x="884.000000" dy="18.500000">(no scope tag)</tspan></text></g><g class="KHNjb3BlX3RhZ3MgLSZndDsgYWN0aXZlKVswXQ=="><path d="M 494.014598 679.999947 C 494.399994 732.799988 571.500000 765.388000 875.615174 839.988024" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" marker-end="url(#mk-d2-2726864434-1961329247)" mask="url(#d2-2726864434)" /><text x="658.000000" y="792.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">prevents eviction</text></g><g class="KGxydSAtJmd0OyBhY3RpdmUpWzBd"><path d="M 1265.985401 344.999947 C 1265.599976 397.799988 1265.500000 425.200012 1265.500000 445.750000 C 1265.500000 466.299988 1265.500000 499.799988 1265.500000 529.500000 C 1265.500000 559.200012 1265.500000 598.799988 1265.500000 628.500000 C 1265.500000 658.200012 1225.900024 762.299988 1071.215199 824.017673" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-2726864434-1961329247)" mask="url(#d2-2726864434)" /><text x="1266.000000" y="647.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">manages</text></g><g class="KGxydSAtJmd0OyBiYWNrZ3JvdW5kKVswXQ=="><path d="M 1216.590039 329.418454 C 1151.599976 394.799988 1121.000000 490.000000 1068.254934 527.675047" stroke="#333340" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-2726864434-3962577600)" mask="url(#d2-2726864434)" /><text x="1140.000000" y="436.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">manages</text></g><mask id="d2-2726864434" maskUnits="userSpaceOnUse" x="-101" y="-101" width="1654" height="1115">
|
|
<rect x="-101" y="-101" width="1654" height="1115" fill="white"></rect>
|
|
<rect x="861.000000" y="139.000000" width="127" height="37" fill="black"></rect>
|
|
<rect x="898.000000" y="410.000000" width="144" height="37" fill="black"></rect>
|
|
<rect x="797.000000" y="435.000000" width="85" height="21" fill="black"></rect>
|
|
<rect x="1034.000000" y="707.000000" width="131" height="37" fill="black"></rect>
|
|
<rect x="836.000000" y="700.000000" width="96" height="37" fill="black"></rect>
|
|
<rect x="600.000000" y="776.000000" width="116" height="21" fill="black"></rect>
|
|
<rect x="1233.000000" y="631.000000" width="66" height="21" fill="black"></rect>
|
|
<rect x="1107.000000" y="420.000000" width="66" height="21" fill="black"></rect>
|
|
</mask></svg></svg>
|