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

nordisk/Skidbladnir

.nornir/assets/archive-format.svg

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 820 340" font-family="-apple-system,Segoe UI,Roboto,sans-serif" font-size="13">
  <defs>
    <marker id="a" markerWidth="9" markerHeight="9" refX="7" refY="3" orient="auto">
      <path d="M0,0 L7,3 L0,6 Z" fill="#555"/>
    </marker>
  </defs>
  <text x="24" y="28" font-weight="700" font-size="16">The Archive seam — one trait, two engines</text>

  <!-- Archive trait -->
  <rect x="24" y="52" width="200" height="66" rx="8" fill="#eef3fb" stroke="#2b5fb3" stroke-width="1.5"/>
  <text x="124" y="76" text-anchor="middle" font-weight="600">Archive (trait)</text>
  <text x="124" y="94" text-anchor="middle" fill="#555" font-size="11">pack · list · extract_all</text>
  <text x="124" y="109" text-anchor="middle" fill="#555" font-size="11">read_entry · verify_entries · delta</text>

  <!-- TarZstd -->
  <rect x="300" y="40" width="230" height="52" rx="8" fill="#eefaf0" stroke="#2f8f4e" stroke-width="1.5"/>
  <text x="415" y="61" text-anchor="middle" font-weight="600">TarZstd — always-on default</text>
  <text x="415" y="79" text-anchor="middle" fill="#555" font-size="11">pure Rust · always builds offline</text>

  <!-- ZnippyArchive -->
  <rect x="300" y="104" width="230" height="52" rx="8" fill="#f6eefb" stroke="#7a3fb3" stroke-width="1.5"/>
  <text x="415" y="125" text-anchor="middle" font-weight="600">ZnippyArchive — feature "znippy"</text>
  <text x="415" y="143" text-anchor="middle" fill="#555" font-size="11">REAL znippy-core · seal · read · delta</text>

  <path d="M224,78 C255,72 270,68 300,66" fill="none" stroke="#555" stroke-width="1.5" marker-end="url(#a)"/>
  <path d="M224,96 C255,110 270,122 300,128" fill="none" stroke="#555" stroke-width="1.5" marker-end="url(#a)"/>

  <!-- manifest -->
  <rect x="580" y="40" width="216" height="116" rx="8" fill="#fdf2ec" stroke="#c26a2b" stroke-width="1.5"/>
  <text x="688" y="62" text-anchor="middle" font-weight="600">BundleManifest (sidecar)</text>
  <text x="688" y="82" text-anchor="middle" fill="#555" font-size="11">EntryDigest{path, sha256, len}</text>
  <text x="688" y="100" text-anchor="middle" fill="#555" font-size="11">+ root_sha256 (verify_root)</text>
  <text x="688" y="122" text-anchor="middle" fill="#555" font-size="11">&lt;bundle&gt;.manifest.json</text>
  <text x="688" y="140" text-anchor="middle" fill="#c26a2b" font-size="11">→ verify-on-receipt</text>
  <path d="M530,66 C550,60 560,54 580,66" fill="none" stroke="#c26a2b" stroke-width="1.5" marker-end="url(#a)"/>

  <!-- znippy on-disk layout (the REAL znippy format, via ../znippy) -->
  <text x="24" y="196" font-weight="600" fill="#7a3fb3">REAL znippy archive — one canonical format (znippy CLI / DuckDB readable)</text>
  <rect x="24" y="210" width="420" height="60" rx="6" fill="#f6eefb" stroke="#7a3fb3" stroke-width="1.3"/>
  <text x="234" y="244" text-anchor="middle" font-weight="600">zstd / OpenZL chunk blob region</text>
  <text x="234" y="260" text-anchor="middle" fill="#555" font-size="11">per-chunk blake3 (Design law 3)</text>

  <rect x="452" y="210" width="200" height="60" rx="6" fill="#eef3fb" stroke="#2b5fb3" stroke-width="1.3"/>
  <text x="552" y="238" text-anchor="middle" font-weight="600">Arrow-IPC sub-index</text>
  <text x="552" y="256" text-anchor="middle" fill="#555" font-size="11">relative_path·offset·size·checksum</text>

  <rect x="660" y="210" width="136" height="60" rx="6" fill="#fdf2ec" stroke="#c26a2b" stroke-width="1.3"/>
  <text x="728" y="234" text-anchor="middle" font-weight="600">global footer</text>
  <text x="728" y="252" text-anchor="middle" fill="#555" font-size="10">manifest offset</text>
  <text x="728" y="266" text-anchor="middle" fill="#555" font-size="10">ZNPYMIDX</text>

  <path d="M728,210 C728,190 620,190 560,270" fill="none" stroke="#c26a2b" stroke-width="1.3" marker-end="url(#a)"/>
  <text x="628" y="300" fill="#888" font-size="11">znippy-common get_file: locate via lookup sub-index → pread only its blobs → blake3-verify. Selective read.</text>
</svg>