Files
settled-reach/docs/diagrams/entity/knowledge-graph.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

119 lines
49 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 2230 1203"><svg class="d2-3842682610 d2-svg" width="2230" height="1203" viewBox="-101 -101 2230 1203"><rect x="-101.000000" y="-101.000000" width="2230.000000" height="1203.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
.d2-3842682610 .text {
font-family: "d2-3842682610-font-regular";
}
@font-face {
font-family: d2-3842682610-font-regular;
src: url("data:application/font-woff;base64,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");
}
.d2-3842682610 .text-bold {
font-family: "d2-3842682610-font-bold";
}
@font-face {
font-family: d2-3842682610-font-bold;
src: url("data:application/font-woff;base64,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");
}
.d2-3842682610 .text-italic {
font-family: "d2-3842682610-font-italic";
}
@font-face {
font-family: d2-3842682610-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-3842682610 .fill-N1{fill:#0A0F25;}
.d2-3842682610 .fill-N2{fill:#676C7E;}
.d2-3842682610 .fill-N3{fill:#9499AB;}
.d2-3842682610 .fill-N4{fill:#CFD2DD;}
.d2-3842682610 .fill-N5{fill:#DEE1EB;}
.d2-3842682610 .fill-N6{fill:#EEF1F8;}
.d2-3842682610 .fill-N7{fill:#FFFFFF;}
.d2-3842682610 .fill-B1{fill:#0D32B2;}
.d2-3842682610 .fill-B2{fill:#0D32B2;}
.d2-3842682610 .fill-B3{fill:#E3E9FD;}
.d2-3842682610 .fill-B4{fill:#E3E9FD;}
.d2-3842682610 .fill-B5{fill:#EDF0FD;}
.d2-3842682610 .fill-B6{fill:#F7F8FE;}
.d2-3842682610 .fill-AA2{fill:#4A6FF3;}
.d2-3842682610 .fill-AA4{fill:#EDF0FD;}
.d2-3842682610 .fill-AA5{fill:#F7F8FE;}
.d2-3842682610 .fill-AB4{fill:#EDF0FD;}
.d2-3842682610 .fill-AB5{fill:#F7F8FE;}
.d2-3842682610 .stroke-N1{stroke:#0A0F25;}
.d2-3842682610 .stroke-N2{stroke:#676C7E;}
.d2-3842682610 .stroke-N3{stroke:#9499AB;}
.d2-3842682610 .stroke-N4{stroke:#CFD2DD;}
.d2-3842682610 .stroke-N5{stroke:#DEE1EB;}
.d2-3842682610 .stroke-N6{stroke:#EEF1F8;}
.d2-3842682610 .stroke-N7{stroke:#FFFFFF;}
.d2-3842682610 .stroke-B1{stroke:#0D32B2;}
.d2-3842682610 .stroke-B2{stroke:#0D32B2;}
.d2-3842682610 .stroke-B3{stroke:#E3E9FD;}
.d2-3842682610 .stroke-B4{stroke:#E3E9FD;}
.d2-3842682610 .stroke-B5{stroke:#EDF0FD;}
.d2-3842682610 .stroke-B6{stroke:#F7F8FE;}
.d2-3842682610 .stroke-AA2{stroke:#4A6FF3;}
.d2-3842682610 .stroke-AA4{stroke:#EDF0FD;}
.d2-3842682610 .stroke-AA5{stroke:#F7F8FE;}
.d2-3842682610 .stroke-AB4{stroke:#EDF0FD;}
.d2-3842682610 .stroke-AB5{stroke:#F7F8FE;}
.d2-3842682610 .background-color-N1{background-color:#0A0F25;}
.d2-3842682610 .background-color-N2{background-color:#676C7E;}
.d2-3842682610 .background-color-N3{background-color:#9499AB;}
.d2-3842682610 .background-color-N4{background-color:#CFD2DD;}
.d2-3842682610 .background-color-N5{background-color:#DEE1EB;}
.d2-3842682610 .background-color-N6{background-color:#EEF1F8;}
.d2-3842682610 .background-color-N7{background-color:#FFFFFF;}
.d2-3842682610 .background-color-B1{background-color:#0D32B2;}
.d2-3842682610 .background-color-B2{background-color:#0D32B2;}
.d2-3842682610 .background-color-B3{background-color:#E3E9FD;}
.d2-3842682610 .background-color-B4{background-color:#E3E9FD;}
.d2-3842682610 .background-color-B5{background-color:#EDF0FD;}
.d2-3842682610 .background-color-B6{background-color:#F7F8FE;}
.d2-3842682610 .background-color-AA2{background-color:#4A6FF3;}
.d2-3842682610 .background-color-AA4{background-color:#EDF0FD;}
.d2-3842682610 .background-color-AA5{background-color:#F7F8FE;}
.d2-3842682610 .background-color-AB4{background-color:#EDF0FD;}
.d2-3842682610 .background-color-AB5{background-color:#F7F8FE;}
.d2-3842682610 .color-N1{color:#0A0F25;}
.d2-3842682610 .color-N2{color:#676C7E;}
.d2-3842682610 .color-N3{color:#9499AB;}
.d2-3842682610 .color-N4{color:#CFD2DD;}
.d2-3842682610 .color-N5{color:#DEE1EB;}
.d2-3842682610 .color-N6{color:#EEF1F8;}
.d2-3842682610 .color-N7{color:#FFFFFF;}
.d2-3842682610 .color-B1{color:#0D32B2;}
.d2-3842682610 .color-B2{color:#0D32B2;}
.d2-3842682610 .color-B3{color:#E3E9FD;}
.d2-3842682610 .color-B4{color:#E3E9FD;}
.d2-3842682610 .color-B5{color:#EDF0FD;}
.d2-3842682610 .color-B6{color:#F7F8FE;}
.d2-3842682610 .color-AA2{color:#4A6FF3;}
.d2-3842682610 .color-AA4{color:#EDF0FD;}
.d2-3842682610 .color-AA5{color:#F7F8FE;}
.d2-3842682610 .color-AB4{color:#EDF0FD;}
.d2-3842682610 .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-3842682610);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker-d2-3842682610);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark-d2-3842682610);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker-d2-3842682610);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark-d2-3842682610);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal-d2-3842682610);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal-d2-3842682610);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright-d2-3842682610);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g class="S25vd2xlZGdlR3JhcGg="><g class="shape" ><rect x="838.000000" y="219.000000" width="527.000000" height="108.000000" stroke="#0A0F25" fill="#FFFFFF" class="shape stroke-N1 fill-N7" style="stroke-width:2;" /><rect x="838.000000" y="219.000000" width="527.000000" height="36.000000" fill="#0A0F25" class="class_header fill-N1" /><text x="848.000000" y="244.750000" fill="#FFFFFF" class="text fill-N7" style="text-anchor:start;font-size:24px">KnowledgeGraph</text><text x="848.000000" y="278.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">entity_knowledge</text><text x="1019.000000" y="278.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">BTreeMap&lt;StableId, EntityKnowledge&gt;</text><text x="1355.000000" y="278.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="838.000000" x2="1365.000000" y1="291.000000" y2="291.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="848.000000" y="314.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">fact_knowledge</text><text x="1019.000000" y="314.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">BTreeMap&lt;FactId, FactKnowledge&gt;</text><text x="1355.000000" y="314.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="838.000000" x2="1365.000000" y1="327.000000" y2="327.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /></g></g><g class="RW50aXR5S25vd2xlZGdl"><g class="shape" ><rect x="1132.000000" y="448.000000" width="437.000000" height="216.000000" stroke="#0A0F25" fill="#FFFFFF" class="shape stroke-N1 fill-N7" style="stroke-width:2;" /><rect x="1132.000000" y="448.000000" width="437.000000" height="36.000000" fill="#0A0F25" class="class_header fill-N1" /><text x="1142.000000" y="473.750000" fill="#FFFFFF" class="text fill-N7" style="text-anchor:start;font-size:24px">EntityKnowledge</text><text x="1142.000000" y="507.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">stable_id</text><text x="1320.000000" y="507.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">StableId(u64)</text><text x="1559.000000" y="507.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px">FK</text><line x1="1132.000000" x2="1569.000000" y1="520.000000" y2="520.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="1142.000000" y="543.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">confidence</text><text x="1320.000000" y="543.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">KnowledgeConfidence</text><text x="1559.000000" y="543.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1132.000000" x2="1569.000000" y1="556.000000" y2="556.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="1142.000000" y="579.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">state</text><text x="1320.000000" y="579.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">KnowledgeState</text><text x="1559.000000" y="579.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1132.000000" x2="1569.000000" y1="592.000000" y2="592.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="1142.000000" y="615.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">source</text><text x="1320.000000" y="615.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">KnowledgeSource</text><text x="1559.000000" y="615.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1132.000000" x2="1569.000000" y1="628.000000" y2="628.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="1142.000000" y="651.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">last_observed_tick</text><text x="1320.000000" y="651.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">u64</text><text x="1559.000000" y="651.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1132.000000" x2="1569.000000" y1="664.000000" y2="664.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /></g></g><g class="RmFjdEtub3dsZWRnZQ=="><g class="shape" ><rect x="359.000000" y="448.000000" width="439.000000" height="216.000000" stroke="#0A0F25" fill="#FFFFFF" class="shape stroke-N1 fill-N7" style="stroke-width:2;" /><rect x="359.000000" y="448.000000" width="439.000000" height="36.000000" fill="#0A0F25" class="class_header fill-N1" /><text x="369.000000" y="473.750000" fill="#FFFFFF" class="text fill-N7" style="text-anchor:start;font-size:24px">FactKnowledge</text><text x="369.000000" y="507.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">fact_id</text><text x="547.000000" y="507.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">FactId</text><text x="788.000000" y="507.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px">PK</text><line x1="359.000000" x2="798.000000" y1="520.000000" y2="520.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="369.000000" y="543.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">confidence</text><text x="547.000000" y="543.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">KnowledgeConfidence</text><text x="788.000000" y="543.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="359.000000" x2="798.000000" y1="556.000000" y2="556.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="369.000000" y="579.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">state</text><text x="547.000000" y="579.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">KnowledgeState</text><text x="788.000000" y="579.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="359.000000" x2="798.000000" y1="592.000000" y2="592.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="369.000000" y="615.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">source</text><text x="547.000000" y="615.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">KnowledgeSource</text><text x="788.000000" y="615.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="359.000000" x2="798.000000" y1="628.000000" y2="628.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="369.000000" y="651.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">last_observed_tick</text><text x="547.000000" y="651.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">u64</text><text x="788.000000" y="651.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="359.000000" x2="798.000000" y1="664.000000" y2="664.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /></g></g><g class="S25vd2xlZGdlQ29uZmlkZW5jZQ=="><g class="shape" ><rect x="0.000000" y="803.000000" width="492.000000" height="180.000000" stroke="#0A0F25" fill="#FFFFFF" class="shape stroke-N1 fill-N7" style="stroke-width:2;" /><rect x="0.000000" y="803.000000" width="492.000000" height="36.000000" fill="#0A0F25" class="class_header fill-N1" /><text x="10.000000" y="828.750000" fill="#FFFFFF" class="text fill-N7" style="text-anchor:start;font-size:24px">KnowledgeConfidence</text><text x="10.000000" y="862.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">direct</text><text x="150.000000" y="862.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">Direct — currently in LOS</text><text x="482.000000" y="862.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="0.000000" x2="492.000000" y1="875.000000" y2="875.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="10.000000" y="898.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">knows_details</text><text x="150.000000" y="898.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">KnowsDetails — actionable (secret tier)</text><text x="482.000000" y="898.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="0.000000" x2="492.000000" y1="911.000000" y2="911.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="10.000000" y="934.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">knows_of</text><text x="150.000000" y="934.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">KnowsOf — involved in Y (real tier)</text><text x="482.000000" y="934.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="0.000000" x2="492.000000" y1="947.000000" y2="947.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="10.000000" y="970.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">suspects</text><text x="150.000000" y="970.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">Suspects — something off (surface tier)</text><text x="482.000000" y="970.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="0.000000" x2="492.000000" y1="983.000000" y2="983.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /></g></g><g class="S25vd2xlZGdlU3RhdGU="><g class="shape" ><rect x="552.000000" y="821.000000" width="519.000000" height="144.000000" stroke="#0A0F25" fill="#FFFFFF" class="shape stroke-N1 fill-N7" style="stroke-width:2;" /><rect x="552.000000" y="821.000000" width="519.000000" height="36.000000" fill="#0A0F25" class="class_header fill-N1" /><text x="562.000000" y="846.750000" fill="#FFFFFF" class="text fill-N7" style="text-anchor:start;font-size:24px">KnowledgeState</text><text x="562.000000" y="880.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">active</text><text x="689.000000" y="880.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">Active — believed true</text><text x="1061.000000" y="880.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="552.000000" x2="1071.000000" y1="893.000000" y2="893.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="562.000000" y="916.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">contradicted</text><text x="689.000000" y="916.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">Contradicted — conflict detected (Sprint 3+)</text><text x="1061.000000" y="916.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="552.000000" x2="1071.000000" y1="929.000000" y2="929.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="562.000000" y="952.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">stale</text><text x="689.000000" y="952.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">Stale — aged beyond threshold (Sprint 3+)</text><text x="1061.000000" y="952.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="552.000000" x2="1071.000000" y1="965.000000" y2="965.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /></g></g><g class="S25vd2xlZGdlU291cmNl"><g class="shape" ><rect x="1663.000000" y="785.000000" width="365.000000" height="216.000000" stroke="#0A0F25" fill="#FFFFFF" class="shape stroke-N1 fill-N7" style="stroke-width:2;" /><rect x="1663.000000" y="785.000000" width="365.000000" height="36.000000" fill="#0A0F25" class="class_header fill-N1" /><text x="1673.000000" y="810.750000" fill="#FFFFFF" class="text fill-N7" style="text-anchor:start;font-size:24px">KnowledgeSource</text><text x="1673.000000" y="844.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">direct_observation</text><text x="1851.000000" y="844.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">DirectObservation</text><text x="2018.000000" y="844.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1663.000000" x2="2028.000000" y1="857.000000" y2="857.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="1673.000000" y="880.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">heard</text><text x="1851.000000" y="880.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">Heard</text><text x="2018.000000" y="880.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1663.000000" x2="2028.000000" y1="893.000000" y2="893.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="1673.000000" y="916.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">told_by</text><text x="1851.000000" y="916.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">ToldBy (Sprint 3+)</text><text x="2018.000000" y="916.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1663.000000" x2="2028.000000" y1="929.000000" y2="929.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="1673.000000" y="952.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">inferred</text><text x="1851.000000" y="952.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">Inferred (Sprint 3+)</text><text x="2018.000000" y="952.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1663.000000" x2="2028.000000" y1="965.000000" y2="965.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="1673.000000" y="988.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">background</text><text x="1851.000000" y="988.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">Background</text><text x="2018.000000" y="988.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1663.000000" x2="2028.000000" y1="1001.000000" y2="1001.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /></g></g><g class="RW50aXR5UmVnaXN0cnk="><g class="shape" ><rect x="1156.000000" y="839.000000" width="422.000000" height="108.000000" stroke="#0A0F25" fill="#FFFFFF" class="shape stroke-N1 fill-N7" style="stroke-width:2;" /><rect x="1156.000000" y="839.000000" width="422.000000" height="36.000000" fill="#0A0F25" class="class_header fill-N1" /><text x="1166.000000" y="864.750000" fill="#FFFFFF" class="text fill-N7" style="text-anchor:start;font-size:24px">EntityRegistry</text><text x="1166.000000" y="898.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">stable_to_entity</text><text x="1325.000000" y="898.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">BTreeMap&lt;StableId, Entity&gt;</text><text x="1568.000000" y="898.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1156.000000" x2="1578.000000" y1="911.000000" y2="911.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /><text x="1166.000000" y="934.000000" fill="#0D32B2" class="text fill-B2" style="text-anchor:start;font-size:20px">entity_to_stable</text><text x="1325.000000" y="934.000000" fill="#676C7E" class="text fill-N2" style="text-anchor:start;font-size:20px">BTreeMap&lt;Entity, StableId&gt;</text><text x="1568.000000" y="934.000000" fill="#4A6FF3" class="text fill-AA2" style="text-anchor:end;font-size:20px" /><line x1="1156.000000" x2="1578.000000" y1="947.000000" y2="947.000000" stroke="#0A0F25" class=" stroke-N1" style="stroke-width:2" /></g></g><g class="S25vd2xlZGdlRXZlbnRRdWV1ZQ=="><g class="shape" ><path d="M 995 0 H 1209 C 1233 0 1233 37 1233 41 C 1233 45 1233 82 1209 82 H 995 C 971 82 971 45 971 41 C 971 37 971 0 995 0 Z" stroke="#c8d8f0" fill="#1a1e24" style="stroke-width:2;" /><path d="M 1209 0 C 1185 0 1185 37 1185 41 C 1185 45 1185 82 1209 82" stroke="#c8d8f0" fill="#1a1e24" style="stroke-width:2;" /></g><text x="1090.000000" y="38.500000" fill="#c8d0e0" class="text-bold" style="text-anchor:middle;font-size:16px"><tspan x="1090.000000" dy="0.000000">KnowledgeEventQueue</tspan><tspan x="1090.000000" dy="18.500000">(bevy_ecs Resource)</tspan></text></g><g class="KEtub3dsZWRnZUdyYXBoIC0mZ3Q7IEVudGl0eUtub3dsZWRnZSlbMF0="><marker id="mk-d2-3842682610-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 1220.565516 327.338988 C 1324.349976 375.299988 1350.750000 399.700012 1350.750000 444.500000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3842682610-3488378134)" mask="url(#d2-3842682610)" /><text x="1310.000000" y="374.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">contains many</text></g><g class="KEtub3dsZWRnZUdyYXBoIC0mZ3Q7IEZhY3RLbm93bGVkZ2UpWzBd"><path d="M 852.797128 326.931613 C 633.950012 375.299988 578.750000 399.700012 578.750000 444.500000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3842682610-3488378134)" mask="url(#d2-3842682610)" /><text x="691.000000" y="368.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">contains many</text></g><g class="KEVudGl0eUtub3dsZWRnZSAtJmd0OyBLbm93bGVkZ2VDb25maWRlbmNlKVswXQ=="><path d="M 1129.790991 600.902847 C 649.348999 699.700012 502.549988 740.299988 401.175348 801.434331" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3842682610-3488378134)" mask="url(#d2-3842682610)" /><text x="756.000000" y="683.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">uses</text></g><g class="KEVudGl0eUtub3dsZWRnZSAtJmd0OyBLbm93bGVkZ2VTdGF0ZSlbMF0="><path d="M 1161.770653 664.504668 C 1079.500000 712.299988 1030.500000 743.900024 921.787923 819.221939" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3842682610-3488378134)" mask="url(#d2-3842682610)" /><text x="1039.000000" y="744.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">uses</text></g><g class="KEVudGl0eUtub3dsZWRnZSAtJmd0OyBLbm93bGVkZ2VTb3VyY2UpWzBd"><path d="M 1571.143211 631.059766 C 1790.250000 705.682983 1845.500000 736.700012 1845.500000 781.500000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3842682610-3488378134)" mask="url(#d2-3842682610)" /><text x="1733.000000" y="692.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">uses</text></g><g class="KEZhY3RLbm93bGVkZ2UgLSZndDsgS25vd2xlZGdlQ29uZmlkZW5jZSlbMF0="><path d="M 363.220209 664.412329 C 269.799988 712.299988 246.000000 740.299988 246.000000 799.500000" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3842682610-3488378134)" mask="url(#d2-3842682610)" /><text x="273.000000" y="716.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">uses</text></g><g class="KEZhY3RLbm93bGVkZ2UgLSZndDsgS25vd2xlZGdlU3RhdGUpWzBd"><path d="M 578.750000 665.500000 C 578.750000 712.299988 605.150024 743.900024 707.526710 819.131371" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3842682610-3488378134)" mask="url(#d2-3842682610)" /><text x="622.000000" y="762.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">uses</text></g><g class="KEZhY3RLbm93bGVkZ2UgLSZndDsgS25vd2xlZGdlU291cmNlKVswXQ=="><path d="M 800.225119 591.263463 C 1469.250000 697.789001 1651.800049 736.700012 1707.913484 782.955708" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-d2-3842682610-3488378134)" mask="url(#d2-3842682610)" /><text x="1264.000000" y="671.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">uses</text></g><g class="KEVudGl0eUtub3dsZWRnZSAtJmd0OyBFbnRpdHlSZWdpc3RyeSlbMF0="><marker id="mk-d2-3842682610-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 1361.195779 665.490395 C 1365.800049 712.299988 1367.000000 747.500000 1367.000000 835.500000" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;stroke-dasharray:8.000000,7.892511;" marker-end="url(#mk-d2-3842682610-1961329247)" mask="url(#d2-3842682610)" /><text x="1367.500000" y="757.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px">StableId lookup</text></g><g class="KEtub3dsZWRnZUV2ZW50UXVldWUgLSZndDsgS25vd2xlZGdlR3JhcGgpWzBd"><path d="M 1101.992703 83.999987 C 1101.800049 136.800003 1101.750000 164.300003 1101.750000 215.500000" stroke="#c8d8f0" fill="none" class="connection" style="stroke-width:2;" marker-end="url(#mk-d2-3842682610-1961329247)" mask="url(#d2-3842682610)" /><text x="1102.000000" y="148.000000" fill="#676C7E" class="text-italic fill-N2" style="text-anchor:middle;font-size:16px"><tspan x="1102.000000" dy="0.000000">drained each tick</tspan><tspan x="1102.000000" dy="18.500000">→ writes components</tspan></text></g><mask id="d2-3842682610" maskUnits="userSpaceOnUse" x="-101" y="-101" width="2230" height="1203">
<rect x="-101" y="-101" width="2230" height="1203" fill="white"></rect>
<rect x="1259.000000" y="358.000000" width="102" height="21" fill="black"></rect>
<rect x="640.000000" y="352.000000" width="102" height="21" fill="black"></rect>
<rect x="739.000000" y="667.000000" width="34" height="21" fill="black"></rect>
<rect x="1022.000000" y="728.000000" width="34" height="21" fill="black"></rect>
<rect x="1716.000000" y="676.000000" width="34" height="21" fill="black"></rect>
<rect x="256.000000" y="700.000000" width="34" height="21" fill="black"></rect>
<rect x="605.000000" y="746.000000" width="34" height="21" fill="black"></rect>
<rect x="1247.000000" y="655.000000" width="34" height="21" fill="black"></rect>
<rect x="1314.000000" y="741.000000" width="107" height="21" fill="black"></rect>
<rect x="1031.000000" y="132.000000" width="142" height="37" fill="black"></rect>
</mask></svg></svg>