<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 420" font-family="ui-monospace, Menlo, monospace">
	<rect width="800" height="420" fill="#120c08" />

	<g stroke="#e8a33d" stroke-width="1.5" fill="none">
		<path d="M110 50 L110 90" />
		<path d="M110 90 L110 130" />
		<path d="M110 130 L260 170" />
		<path d="M110 130 L260 250" />
		<path d="M260 190 L410 230" />
		<path d="M260 270 L410 310" />
		<path d="M410 250 L560 250" />
		<path d="M410 330 L560 330" />
	</g>

	<circle cx="110" cy="50" r="4" fill="#e8a33d" />
	<text x="125" y="55" fill="#f3e7d4" font-size="14">{root}</text>

	<circle cx="110" cy="90" r="4" fill="#e8a33d" />
	<text x="125" y="95" fill="#f3e7d4" font-size="14">{thread_id}/</text>

	<circle cx="110" cy="130" r="4" fill="#e8a33d" />
	<text x="125" y="135" fill="#f3e7d4" font-size="14">{checkpoint_ns}/</text>

	<circle cx="260" cy="170" r="4" fill="#e0532a" />
	<text x="275" y="175" fill="#f3e7d4" font-size="14">checkpoints/</text>

	<circle cx="260" cy="270" r="4" fill="#e0532a" />
	<text x="275" y="275" fill="#f3e7d4" font-size="14">writes/</text>

	<rect x="410" y="210" width="290" height="60" rx="8" fill="rgba(232,163,61,0.08)" stroke="#e8a33d" stroke-width="1.5" />
	<text x="425" y="235" fill="#ffd789" font-size="13">{checkpoint_id}.msgpack</text>
	<text x="425" y="255" fill="#f3e7d4" font-size="11">checkpoint + metadata + parent_id</text>

	<circle cx="410" cy="310" r="4" fill="#e0532a" />
	<text x="425" y="315" fill="#f3e7d4" font-size="14">{checkpoint_id}/{task_id}/</text>

	<rect x="560" y="300" width="200" height="60" rx="8" fill="rgba(224,83,42,0.08)" stroke="#e0532a" stroke-width="1.5" />
	<text x="575" y="325" fill="#ffd789" font-size="13">{idx}.msgpack</text>
	<text x="575" y="345" fill="#f3e7d4" font-size="11">task_id + idx + channel</text>

	<text x="60" y="400" fill="#e8a33d" font-size="12">
		each checkpoint and write is one object, named by ID — never read, modified, rewritten
	</text>
</svg>
