Files
settled-reach/docs/diagrams/architecture/system-tiers.svg
T
jpmschweitzerandClaude Opus 5 0817befcba docs(diagrams): SVG replaces PNG, and a map of the wiki generator flow
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>
2026-08-20 01:49:19 +02:00

114 lines
39 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 3018 1206"><svg class="d2-399906874 d2-svg" width="3018" height="1206" viewBox="-91 -100 3018 1206"><rect x="-91.000000" y="-100.000000" width="3018.000000" height="1206.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-399906874 .text {
font-family: "d2-399906874-font-regular";
}
@font-face {
font-family: d2-399906874-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-399906874 .text-bold {
font-family: "d2-399906874-font-bold";
}
@font-face {
font-family: d2-399906874-font-bold;
src: url("data:application/font-woff;base64,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");
}
.d2-399906874 .text-italic {
font-family: "d2-399906874-font-italic";
}
@font-face {
font-family: d2-399906874-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-399906874 .fill-N1{fill:#0A0F25;}
.d2-399906874 .fill-N2{fill:#676C7E;}
.d2-399906874 .fill-N3{fill:#9499AB;}
.d2-399906874 .fill-N4{fill:#CFD2DD;}
.d2-399906874 .fill-N5{fill:#DEE1EB;}
.d2-399906874 .fill-N6{fill:#EEF1F8;}
.d2-399906874 .fill-N7{fill:#FFFFFF;}
.d2-399906874 .fill-B1{fill:#0D32B2;}
.d2-399906874 .fill-B2{fill:#0D32B2;}
.d2-399906874 .fill-B3{fill:#E3E9FD;}
.d2-399906874 .fill-B4{fill:#E3E9FD;}
.d2-399906874 .fill-B5{fill:#EDF0FD;}
.d2-399906874 .fill-B6{fill:#F7F8FE;}
.d2-399906874 .fill-AA2{fill:#4A6FF3;}
.d2-399906874 .fill-AA4{fill:#EDF0FD;}
.d2-399906874 .fill-AA5{fill:#F7F8FE;}
.d2-399906874 .fill-AB4{fill:#EDF0FD;}
.d2-399906874 .fill-AB5{fill:#F7F8FE;}
.d2-399906874 .stroke-N1{stroke:#0A0F25;}
.d2-399906874 .stroke-N2{stroke:#676C7E;}
.d2-399906874 .stroke-N3{stroke:#9499AB;}
.d2-399906874 .stroke-N4{stroke:#CFD2DD;}
.d2-399906874 .stroke-N5{stroke:#DEE1EB;}
.d2-399906874 .stroke-N6{stroke:#EEF1F8;}
.d2-399906874 .stroke-N7{stroke:#FFFFFF;}
.d2-399906874 .stroke-B1{stroke:#0D32B2;}
.d2-399906874 .stroke-B2{stroke:#0D32B2;}
.d2-399906874 .stroke-B3{stroke:#E3E9FD;}
.d2-399906874 .stroke-B4{stroke:#E3E9FD;}
.d2-399906874 .stroke-B5{stroke:#EDF0FD;}
.d2-399906874 .stroke-B6{stroke:#F7F8FE;}
.d2-399906874 .stroke-AA2{stroke:#4A6FF3;}
.d2-399906874 .stroke-AA4{stroke:#EDF0FD;}
.d2-399906874 .stroke-AA5{stroke:#F7F8FE;}
.d2-399906874 .stroke-AB4{stroke:#EDF0FD;}
.d2-399906874 .stroke-AB5{stroke:#F7F8FE;}
.d2-399906874 .background-color-N1{background-color:#0A0F25;}
.d2-399906874 .background-color-N2{background-color:#676C7E;}
.d2-399906874 .background-color-N3{background-color:#9499AB;}
.d2-399906874 .background-color-N4{background-color:#CFD2DD;}
.d2-399906874 .background-color-N5{background-color:#DEE1EB;}
.d2-399906874 .background-color-N6{background-color:#EEF1F8;}
.d2-399906874 .background-color-N7{background-color:#FFFFFF;}
.d2-399906874 .background-color-B1{background-color:#0D32B2;}
.d2-399906874 .background-color-B2{background-color:#0D32B2;}
.d2-399906874 .background-color-B3{background-color:#E3E9FD;}
.d2-399906874 .background-color-B4{background-color:#E3E9FD;}
.d2-399906874 .background-color-B5{background-color:#EDF0FD;}
.d2-399906874 .background-color-B6{background-color:#F7F8FE;}
.d2-399906874 .background-color-AA2{background-color:#4A6FF3;}
.d2-399906874 .background-color-AA4{background-color:#EDF0FD;}
.d2-399906874 .background-color-AA5{background-color:#F7F8FE;}
.d2-399906874 .background-color-AB4{background-color:#EDF0FD;}
.d2-399906874 .background-color-AB5{background-color:#F7F8FE;}
.d2-399906874 .color-N1{color:#0A0F25;}
.d2-399906874 .color-N2{color:#676C7E;}
.d2-399906874 .color-N3{color:#9499AB;}
.d2-399906874 .color-N4{color:#CFD2DD;}
.d2-399906874 .color-N5{color:#DEE1EB;}
.d2-399906874 .color-N6{color:#EEF1F8;}
.d2-399906874 .color-N7{color:#FFFFFF;}
.d2-399906874 .color-B1{color:#0D32B2;}
.d2-399906874 .color-B2{color:#0D32B2;}
.d2-399906874 .color-B3{color:#E3E9FD;}
.d2-399906874 .color-B4{color:#E3E9FD;}
.d2-399906874 .color-B5{color:#EDF0FD;}
.d2-399906874 .color-B6{color:#F7F8FE;}
.d2-399906874 .color-AA2{color:#4A6FF3;}
.d2-399906874 .color-AA4{color:#EDF0FD;}
.d2-399906874 .color-AA5{color:#F7F8FE;}
.d2-399906874 .color-AB4{color:#EDF0FD;}
.d2-399906874 .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-399906874);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-399906874);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-399906874);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-399906874);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-399906874);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-399906874);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-399906874);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-399906874);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g class="cHJpbmNpcGxlcw=="><g class="shape" ><rect x="10.000000" y="41.000000" width="1216.000000" height="142.000000" rx="4.000000" stroke="#c8d8f0" fill="#1a1e24" style="stroke-width:2;" /></g><text x="618.000000" y="28.000000" fill="#c8d0e0" class="text" style="text-anchor:middle;font-size:28px">Architectural Principles (D-010)</text></g><g class="dGllcnM="><g class="shape" ><rect x="1908.000000" y="49.000000" width="524.000000" height="691.000000" rx="4.000000" stroke="#c8d8f0" fill="#1a1e24" style="stroke-width:2;" /></g><text x="2170.000000" y="36.000000" fill="#c8d0e0" class="text" style="text-anchor:middle;font-size:28px">Simulation Tiers (D-026)</text></g><g class="YWN0aXZlX2RldGFpbA=="><g class="shape" ><path d="M 2518 361 H 2730 C 2731 361 2732 361 2733 362 L 2750 378 C 2751 379 2751 380 2751 381 V 480 C 2751 480 2751 480 2751 480 H 2518 C 2517 480 2517 480 2517 480 V 362 C 2517 361 2517 361 2518 361 Z" stroke="#c8d8f0" fill="#1a1e24" style="stroke-width:2;" /><path d="M 2750 480 H 2518 C 2517 480 2517 480 2517 479 V 362 C 2517 361 2517 361 2518 361 H 2729 C 2730 361 2730 361 2730 362 V 379 C 2730 380 2731 381 2732 381 H 2750 C 2751 381 2751 381 2751 382 V 479 C 2750 480 2751 480 2750 480 Z" stroke="#c8d8f0" fill="#1a1e24" style="stroke-width:2;" /></g><text x="2634.000000" y="410.000000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="2634.000000" dy="0.000000">30-80 NPCs</tspan><tspan x="2634.000000" dy="17.666667">Full sim · 10-20 ticks/sec</tspan><tspan x="2634.000000" dy="17.666667">Scope tags keep NPCs here</tspan></text></g><g class="YmFja2dyb3VuZF9kZXRhaWw="><g class="shape" ><path d="M 2518 617 H 2805 C 2806 617 2807 617 2808 618 L 2825 634 C 2826 635 2826 636 2826 637 V 736 C 2826 736 2826 736 2826 736 H 2518 C 2517 736 2517 736 2517 736 V 618 C 2517 617 2517 617 2518 617 Z" stroke="#333340" fill="#1a1e24" style="stroke-width:2;" /><path d="M 2825 736 H 2518 C 2517 736 2517 736 2517 735 V 618 C 2517 617 2517 617 2518 617 H 2804 C 2805 617 2805 617 2805 618 V 635 C 2805 636 2806 637 2807 637 H 2825 C 2826 637 2826 637 2826 638 V 735 C 2825 736 2826 736 2825 736 Z" stroke="#333340" fill="#1a1e24" style="stroke-width:2;" /></g><text x="2671.500000" y="666.000000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="2671.500000" dy="0.000000">500-2,000 NPCs</tspan><tspan x="2671.500000" dy="17.666667">State machine · 1 tick/game-minute</tspan><tspan x="2671.500000" dy="17.666667">(schedule · mood · relationships · job)</tspan></text></g><g class="c2F2ZWRfZGV0YWls"><g class="shape" ><path d="M 2045 886 H 2316 C 2317 886 2318 886 2319 887 L 2336 903 C 2337 904 2337 905 2337 906 V 1005 C 2337 1005 2337 1005 2337 1005 H 2045 C 2044 1005 2044 1005 2044 1005 V 887 C 2044 886 2044 886 2045 886 Z" stroke="#333340" fill="#1a1e24" style="stroke-width:2;" /><path d="M 2336 1005 H 2045 C 2044 1005 2044 1005 2044 1004 V 887 C 2044 886 2044 886 2045 886 H 2315 C 2316 886 2316 886 2316 887 V 904 C 2316 905 2317 906 2318 906 H 2336 C 2337 906 2337 906 2337 907 V 1004 C 2336 1005 2337 1005 2336 1005 Z" stroke="#333340" fill="#1a1e24" style="stroke-width:2;" /></g><text x="2190.500000" y="935.000000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="2190.500000" dy="0.000000">10,000+ NPCs</tspan><tspan x="2190.500000" dy="17.666667">Frozen serialized structs ~1-2KB</tspan><tspan x="2190.500000" dy="17.666667">Reactivate on player return ~2-5ms</tspan></text></g><g class="ZXZpY3Rpb24="><g class="shape" ><path d="M 1567 174 C 1565 174 1563 174 1562 174 L 1278 113 C 1275 112 1275 111 1278 111 L 1562 50 C 1565 49 1570 49 1573 50 L 1856 110 C 1859 111 1859 112 1856 112 L 1572 174 C 1571 174 1569 174 1567 174 Z" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="1567.000000" y="109.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1567.000000" dy="0.000000">LRU Eviction</tspan><tspan x="1567.000000" dy="18.500000">(interaction-timestamp priority queue)</tspan></text></g><g class="cHJpbmNpcGxlcy5wMQ=="><g class="shape" ><rect x="40.000000" y="71.000000" width="220.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="150.000000" y="109.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="150.000000" dy="0.000000">Client-Server Separation</tspan><tspan x="150.000000" dy="18.500000">even in single-player</tspan></text></g><g class="cHJpbmNpcGxlcy5wMg=="><g class="shape" ><rect x="320.000000" y="71.000000" width="215.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="427.500000" y="109.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="427.500000" dy="0.000000">Information Boundaries</tspan><tspan x="427.500000" dy="18.500000">as first-class system</tspan></text></g><g class="cHJpbmNpcGxlcy5wMw=="><g class="shape" ><rect x="595.000000" y="71.000000" width="309.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="749.500000" y="109.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="749.500000" dy="0.000000">No Baked Player Identity</tspan><tspan x="749.500000" dy="18.500000">&#34;characters, some player-controlled&#34;</tspan></text></g><g class="cHJpbmNpcGxlcy5wNA=="><g class="shape" ><rect x="964.000000" y="71.000000" width="232.000000" height="82.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="1080.000000" y="109.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1080.000000" dy="0.000000">Deterministic Simulation</tspan><tspan x="1080.000000" dy="18.500000">timestamped input events</tspan></text></g><g class="dGllcnMuYWN0aXZl"><g class="shape" ><rect x="2256.000000" y="79.000000" width="146.000000" height="66.000000" stroke="#c8d8f0" fill="#2a3040" style="stroke-width:2;" /></g><text x="2329.000000" y="117.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px">Tier 1 — Active</text></g><g class="dGllcnMuYmFja2dyb3VuZA=="><g class="shape" ><rect x="2209.000000" y="388.000000" width="188.000000" height="66.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="2303.000000" y="426.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px">Tier 2 — Background</text></g><g class="dGllcnMuc2F2ZWQ="><g class="shape" ><rect x="2096.000000" y="644.000000" width="189.000000" height="66.000000" stroke="#333340" fill="#2a3040" style="stroke-width:2;" /></g><text x="2190.500000" y="682.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px">Tier 3 — State-Saved</text></g><g class="dGllcnMudW5nZW5lcmF0ZWQ="><g class="shape" ><rect x="1938.000000" y="388.000000" width="195.000000" height="66.000000" stroke="#333340" fill="#1a1e24" style="stroke-width:2;stroke-dasharray:10.000000,9.865639;" /></g><text x="2035.500000" y="426.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px">Tier 4 — Ungenerated</text></g><g class="KHRpZXJzLmFjdGl2ZSAtJmd0OyBhY3RpdmVfZGV0YWlsKVswXQ=="><marker id="mk-d2-399906874-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 2361.097208 146.478184 C 2417.350098 208.199997 2453.000000 306.200012 2534.638116 358.832574" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-399906874-1961329247)" mask="url(#d2-399906874)" /></g><g class="KHRpZXJzLmJhY2tncm91bmQgLSZndDsgYmFja2dyb3VuZF9kZXRhaWwpWzBd"><marker id="mk-d2-399906874-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 2338.426845 455.908640 C 2412.801025 529.700012 2457.000000 562.200012 2554.484169 615.092401" stroke="#333340" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-399906874-3962577600)" mask="url(#d2-399906874)" /></g><g class="KHRpZXJzLnNhdmVkIC0mZ3Q7IHNhdmVkX2RldGFpbClbMF0="><path d="M 2190.250000 712.500000 C 2190.250000 770.900024 2190.199951 846.000000 2190.019995 882.000050" stroke="#333340" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-399906874-3962577600)" mask="url(#d2-399906874)" /></g><g class="dGllcnMuKGFjdGl2ZSAtJmd0OyBiYWNrZ3JvdW5kKVswXQ=="><path d="M 2340.896814 146.892520 C 2361.850098 208.199997 2357.675049 311.500000 2321.177947 383.927895" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" marker-end="url(#mk-d2-399906874-1961329247)" mask="url(#d2-399906874)" /><text x="2359.500000" y="274.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">evict (LRU)</text></g><g class="dGllcnMuKGJhY2tncm91bmQgLSZndDsgYWN0aXZlKVswXQ=="><path d="M 2275.936574 385.919474 C 2218.231934 311.500000 2221.300049 208.199997 2289.508510 147.655369" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-399906874-1961329247)" mask="url(#d2-399906874)" /><text x="2219.500000" y="258.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px"><tspan x="2219.500000" dy="0.000000">player proximity</tspan><tspan x="2219.500000" dy="18.500000">or scope tag</tspan></text></g><g class="dGllcnMuKGJhY2tncm91bmQgLSZndDsgc2F2ZWQpWzBd"><path d="M 2307.056882 456.484711 C 2316.162109 529.700012 2299.461914 567.500000 2226.145141 640.674325" stroke="#333340" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" marker-end="url(#mk-d2-399906874-3962577600)" mask="url(#d2-399906874)" /><text x="2301.500000" y="569.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">evict (LRU)</text></g><g class="dGllcnMuKHNhdmVkIC0mZ3Q7IGJhY2tncm91bmQpWzBd"><path d="M 2193.188382 641.507017 C 2199.404053 567.500000 2216.000000 529.500000 2273.521423 456.639531" stroke="#333340" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-399906874-3962577600)" mask="url(#d2-399906874)" /><text x="2212.000000" y="545.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">player return</text></g><g class="dGllcnMuKHVuZ2VuZXJhdGVkIC0mZ3Q7IHNhdmVkKVswXQ=="><path d="M 2035.500000 456.500000 C 2035.500000 529.700012 2058.469971 567.500000 2147.270772 640.950549" stroke="#333340" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" marker-end="url(#mk-d2-399906874-3962577600)" mask="url(#d2-399906874)" /><text x="2058.500000" y="565.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px"><tspan x="2058.500000" dy="0.000000">player approach</tspan><tspan x="2058.500000" dy="18.500000">(generated ahead of arrival)</tspan></text></g><g class="KGV2aWN0aW9uIC0mZ3Q7IHRpZXJzKVswXQ=="><path d="M 1697.958268 147.406433 L 1904.083465 190.187134" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" marker-end="url(#mk-d2-399906874-1961329247)" mask="url(#d2-399906874)" /></g><mask id="d2-399906874" maskUnits="userSpaceOnUse" x="-91" y="-100" width="3018" height="1206">
<rect x="-91" y="-100" width="3018" height="1206" fill="white"></rect>
<rect x="2323.000000" y="258.000000" width="73" height="21" fill="black"></rect>
<rect x="2163.000000" y="242.000000" width="113" height="37" fill="black"></rect>
<rect x="2265.000000" y="553.000000" width="73" height="21" fill="black"></rect>
<rect x="2167.000000" y="529.000000" width="90" height="21" fill="black"></rect>
<rect x="1964.000000" y="549.000000" width="189" height="37" fill="black"></rect>
</mask></svg></svg>