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

mikronova/workspace_znippy

release/RUNBOOK.md

znippy — full release runbook

How to cut a complete znippy release from this control plane: nornir runs every bencher, gates on regression, renders docs, commits + tags, and publishes to crates.io; you do the one git push it deliberately leaves to the operator. The declarative gate contract is in SPEC.md; the manifest (publish order, gates, bench requirements) is in nornir.toml.

(This workspace-wide release lives here in workspace_znippy, the control plane — not in znippy/.nornir, which is the znippy repo's own docs.)

TL;DR

Two commands, from the workspace root (where the sibling repos live):

cd /run/media/rickard/T9/git
NORNIR_CONFIG=workspace_znippy/release/nornir.toml nornir release run
git -C znippy push origin master --follow-tags   # the step nornir leaves to you

There is no wrapper script — this is an all-Rust toolchain; the single non-Rust action, git push, is a deliberate manual step (see The one manual step below).

What nornir release run does (per repo, in order)

  1. cargo test --workspace (serialized) — abort on failure.
  2. Bench — runs xtask/examples/nornir-bench.rs (every registered Bencher: the codec/stream/archive/uring/maven benches and the stree size-sweep), parses the BenchRun JSON, persists it to the Iceberg bench_runs warehouse.
  3. Render docs — rewrites the <!-- nornir:gen --> regions of README.md from the fresh bench row (don't hand-edit inside those markers).
  4. Gates — regression ≤ 10 % vs history, docs-fresh, no path-patches, metadata (see SPEC.md's 5 gates).
  5. Capture (skip with --skip-snapshot) — knowledge map / search index / semantic vectors / DWARF facts → Iceberg.
  6. Commit + tag — pure-Rust gix commit of the rendered docs + a vX.Y.Z tag, locally.
  7. cargo publish — walks publish_order (linflate → lgz/ljar/lzip/lbzip2 → znippy-zoomies → osm-katana → znippy-common → compress/decompress → plugins → iceberg → znippy → znippy-cli). "Already uploaded" is an idempotent skip.
  8. Lineage — appends a release_lineage row to Iceberg.

The one manual step nornir leaves: git push

By design, nornir does not push to the remote: gix 0.84 has no send-pack, and nornir forbids git subprocesses + libgit2 (see release/publish.rs::push). It creates the commit + tag locally and prints the exact git push command — you run it (the TL;DR's second line). That keeps the toolchain pure-Rust; the crates.io publish is automated, the remote push is the one deliberate human step.

Prerequisites

Status — what was blocking, now cleared (2026-06-11)

So a full release run is runnable today. Dry-run tip: run nornir bench run first (bench + persist, no gates/publish) to confirm the bench + warehouse path on a quiescent box before the real release.