Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/nornir

.nornir/assets/docbook-pipeline.svg

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1180 560" font-family="'DejaVu Sans', 'Segoe UI', sans-serif">
  <defs>
    <linearGradient id="board" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#0b1c2e"/><stop offset="1" stop-color="#06111d"/>
    </linearGradient>
    <linearGradient id="chip" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#14384f"/><stop offset="1" stop-color="#0e2a3e"/>
    </linearGradient>
    <linearGradient id="rail" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#173d57"/><stop offset="1" stop-color="#0c2438"/>
    </linearGradient>
    <linearGradient id="slot" x1="0" y1="0" x2="0" y2="1">
      <stop offset="0" stop-color="#123448"/><stop offset="1" stop-color="#0a2032"/>
    </linearGradient>
    <marker id="arr" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0 0 L10 5 L0 10 z" fill="#6fd3f5"/>
    </marker>
    <marker id="arrg" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
      <path d="M0 0 L10 5 L0 10 z" fill="#7CFFB2"/>
    </marker>
  </defs>

  <rect x="0" y="0" width="1180" height="560" fill="url(#board)"/>
  <g stroke="#143a52" stroke-width="1"><line x1="0" y1="74" x2="1180" y2="74"/><line x1="0" y1="516" x2="1180" y2="516"/></g>
  <g fill="#16415c"><circle cx="40" cy="38" r="2"/><circle cx="1140" cy="38" r="2"/><circle cx="40" cy="536" r="2"/><circle cx="1140" cy="536" r="2"/></g>

  <text x="40" y="38" fill="#eaf6ff" font-size="22" font-weight="700">the docbook pipeline</text>
  <text x="40" y="60" fill="#9fc9e0" font-size="14"><tspan font-family="'DejaVu Sans Mono', monospace" fill="#bfe6ff">.nornir/*.md</tspan> sources &#8594; marker expansion &#8594; one typst engine &#8594; README + three class-routed books</text>

  <g font-size="12.5">
    <line x1="820" y1="54" x2="860" y2="54" stroke="#7CFFB2" stroke-width="3" marker-end="url(#arrg)"/>
    <text x="868" y="58" fill="#cfe6f5">render / build</text>
    <line x1="990" y1="54" x2="1030" y2="54" stroke="#6fd3f5" stroke-width="3" marker-end="url(#arr)"/>
    <text x="1038" y="58" fill="#cfe6f5">index / observe</text>
  </g>

  <!-- 1. sources -->
  <rect x="30" y="104" width="212" height="330" rx="12" fill="url(#chip)" stroke="#5aa6cf" stroke-width="2"/>
  <text x="136" y="130" fill="#eaf6ff" font-size="14.5" font-weight="700" text-anchor="middle">1 &#183; sources</text>
  <text x="136" y="148" fill="#9fc9e0" font-size="10" text-anchor="middle">you edit these (SOURCE OF TRUTH)</text>
  <g font-family="'DejaVu Sans Mono', monospace">
    <rect x="48" y="162" width="176" height="24" rx="5" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.2"/><text x="136" y="178" fill="#bfe6ff" font-size="10" text-anchor="middle">README.md</text>
    <rect x="48" y="190" width="176" height="24" rx="5" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.2"/><text x="136" y="206" fill="#bfe6ff" font-size="10" text-anchor="middle">CHANGELOG.md</text>
    <rect x="48" y="218" width="176" height="24" rx="5" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.2"/><text x="136" y="234" fill="#7CFFB2" font-size="10" text-anchor="middle">*-design.md</text>
    <rect x="48" y="246" width="176" height="24" rx="5" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.2"/><text x="136" y="262" fill="#7CFFB2" font-size="10" text-anchor="middle">*-guide.md</text>
    <rect x="48" y="274" width="176" height="24" rx="5" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.2"/><text x="136" y="290" fill="#7CFFB2" font-size="10" text-anchor="middle">*-reasoning.md</text>
    <rect x="48" y="302" width="176" height="24" rx="5" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.2"/><text x="136" y="318" fill="#bfe6ff" font-size="10" text-anchor="middle">*-for-idiots.md</text>
  </g>
  <text x="136" y="352" fill="#86b3cc" font-size="9.5" text-anchor="middle" font-family="'DejaVu Sans Mono', monospace">assets/ &#183; docs.toml (routing)</text>
  <text x="136" y="374" fill="#a9d8ee" font-size="9.5" text-anchor="middle">each carries marker regions:</text>
  <text x="136" y="392" fill="#7fa8c4" font-size="9" text-anchor="middle" font-family="'DejaVu Sans Mono', monospace">&lt;!-- nornir:gen:start:X --&gt;</text>
  <text x="136" y="406" fill="#7fa8c4" font-size="9" text-anchor="middle" font-family="'DejaVu Sans Mono', monospace">&lt;!-- nornir:gen:end:X --&gt;</text>
  <text x="136" y="424" fill="#86b3cc" font-size="9.5" text-anchor="middle">filename suffix = class</text>

  <line x1="242" y1="270" x2="306" y2="270" stroke="#7CFFB2" stroke-width="3" marker-end="url(#arrg)"/>

  <!-- 2. markers -->
  <rect x="312" y="150" width="222" height="240" rx="12" fill="url(#rail)" stroke="#7CFFB2" stroke-width="2.4"/>
  <text x="423" y="176" fill="#eaf6ff" font-size="14.5" font-weight="700" text-anchor="middle">2 &#183; marker expansion</text>
  <text x="423" y="194" fill="#9fc9e0" font-size="10" text-anchor="middle" font-family="'DejaVu Sans Mono', monospace">sections::rewrite</text>
  <g font-family="'DejaVu Sans Mono', monospace">
    <rect x="330" y="208" width="186" height="22" rx="5" fill="url(#slot)" stroke="#7CFFB2" stroke-width="1.2"/><text x="423" y="223" fill="#bfe6ff" font-size="9.5" text-anchor="middle">bench / benches / mashup</text>
    <rect x="330" y="234" width="186" height="22" rx="5" fill="url(#slot)" stroke="#7CFFB2" stroke-width="1.2"/><text x="423" y="249" fill="#bfe6ff" font-size="9.5" text-anchor="middle">tests / coverage</text>
    <rect x="330" y="260" width="186" height="22" rx="5" fill="url(#slot)" stroke="#7CFFB2" stroke-width="1.2"/><text x="423" y="275" fill="#bfe6ff" font-size="9.5" text-anchor="middle">depgraph / bench_chart</text>
    <rect x="330" y="286" width="186" height="22" rx="5" fill="url(#slot)" stroke="#7CFFB2" stroke-width="1.2"/><text x="423" y="301" fill="#bfe6ff" font-size="9.5" text-anchor="middle">symbols / callgraph</text>
  </g>
  <text x="423" y="330" fill="#86b3cc" font-size="9.5" text-anchor="middle">renderers read pre-fetched Ctx</text>
  <text x="423" y="346" fill="#7fa8c4" font-size="9" text-anchor="middle">(warehouse: bench, coverage;</text>
  <text x="423" y="360" fill="#7fa8c4" font-size="9" text-anchor="middle">cargo metadata: depgraph; DWARF: symbols)</text>
  <text x="423" y="378" fill="#86b3cc" font-size="9.5" text-anchor="middle">body re-emitted with sorted args</text>

  <line x1="534" y1="270" x2="598" y2="270" stroke="#7CFFB2" stroke-width="3" marker-end="url(#arrg)"/>

  <!-- 3. typst -->
  <rect x="604" y="182" width="150" height="176" rx="12" fill="url(#chip)" stroke="#7fc8ea" stroke-width="2.5"/>
  <text x="679" y="212" fill="#eaf6ff" font-size="15" font-weight="700" text-anchor="middle" font-family="'DejaVu Sans Mono', monospace">typst</text>
  <text x="679" y="232" fill="#9fc9e0" font-size="10" text-anchor="middle">one engine</text>
  <text x="679" y="248" fill="#9fc9e0" font-size="10" text-anchor="middle">no JS &#183; no Mermaid</text>
  <text x="679" y="272" fill="#bfe6ff" font-size="9.5" text-anchor="middle" font-family="'DejaVu Sans Mono', monospace">export::export</text>
  <text x="679" y="288" fill="#7fa8c4" font-size="9" text-anchor="middle">report.typ (PDF/MD)</text>
  <text x="679" y="302" fill="#7fa8c4" font-size="9" text-anchor="middle">web.typ (HTML)</text>
  <text x="679" y="326" fill="#86b3cc" font-size="9" text-anchor="middle">SVG depgraph +</text>
  <text x="679" y="340" fill="#86b3cc" font-size="9" text-anchor="middle">bench charts inline</text>

  <line x1="754" y1="270" x2="818" y2="270" stroke="#7CFFB2" stroke-width="3" marker-end="url(#arrg)"/>

  <!-- 4. outputs -->
  <rect x="824" y="98" width="326" height="360" rx="12" fill="url(#rail)" stroke="#7CFFB2" stroke-width="2.4"/>
  <text x="987" y="124" fill="#eaf6ff" font-size="14.5" font-weight="700" text-anchor="middle">4 &#183; outputs</text>
  <text x="987" y="142" fill="#9fc9e0" font-size="10" text-anchor="middle" font-family="'DejaVu Sans Mono', monospace">book::build_books (routing = docs.toml)</text>

  <rect x="844" y="156" width="286" height="40" rx="7" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.4"/>
  <text x="987" y="174" fill="#bfe6ff" font-size="11" text-anchor="middle" font-weight="700">README.md &#183; CHANGELOG.md</text>
  <text x="987" y="189" fill="#86b3cc" font-size="9" text-anchor="middle">repo root, GENERATED, chmod -w</text>

  <rect x="844" y="204" width="286" height="42" rx="7" fill="url(#slot)" stroke="#7CFFB2" stroke-width="1.6"/>
  <text x="987" y="222" fill="#7CFFB2" font-size="11" text-anchor="middle" font-weight="700">manual.pdf</text>
  <text x="987" y="237" fill="#86b3cc" font-size="9" text-anchor="middle">readme + design + guide + benchmarks</text>

  <rect x="844" y="254" width="286" height="42" rx="7" fill="url(#slot)" stroke="#7CFFB2" stroke-width="1.6"/>
  <text x="987" y="272" fill="#7CFFB2" font-size="11" text-anchor="middle" font-weight="700">idiot_guide.pdf</text>
  <text x="987" y="287" fill="#86b3cc" font-size="9" text-anchor="middle">every idiot section</text>

  <rect x="844" y="304" width="286" height="42" rx="7" fill="url(#slot)" stroke="#7CFFB2" stroke-width="1.6"/>
  <text x="987" y="322" fill="#7CFFB2" font-size="11" text-anchor="middle" font-weight="700">unsorted.pdf</text>
  <text x="987" y="337" fill="#86b3cc" font-size="9" text-anchor="middle">reasoning + history + unsorted</text>

  <rect x="844" y="354" width="286" height="38" rx="7" fill="url(#slot)" stroke="#6fd3f5" stroke-width="1.4"/>
  <text x="987" y="371" fill="#bfe6ff" font-size="10.5" text-anchor="middle">docs index + BM25 search</text>
  <text x="987" y="385" fill="#86b3cc" font-size="9" text-anchor="middle" font-family="'DejaVu Sans Mono', monospace">docs_index_snapshots</text>

  <line x1="987" y1="392" x2="987" y2="418" stroke="#6fd3f5" stroke-width="3" marker-end="url(#arr)"/>
  <rect x="844" y="420" width="286" height="26" rx="7" fill="url(#chip)" stroke="#5aa6cf" stroke-width="1.4"/>
  <text x="987" y="437" fill="#cfe6f5" font-size="10" text-anchor="middle">Codeberg Pages &#183; nordisk.codeberg.page/&lt;repo&gt;</text>

  <!-- ground -->
  <rect x="30" y="464" width="1120" height="40" rx="10" fill="url(#rail)" stroke="#7fc8ea" stroke-width="2"/>
  <text x="52" y="489" fill="#bcd9ec" font-size="11.5">One typst engine, no JS. A source's class (filename suffix) is the routing key: it decides which of the three PDFs a chapter lands in &#8212; split by AUDIENCE, never thrown away.</text>
</svg>