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

mikronova/workspace_znippy

WORKSPACE.md

workspace_znippy

Coordination workspace for the znippy constellation — the Arrow-IPC archive format, its package plugins, and the znippy-zoomies fast primitives (ljar, lgz, lbzip2, lzip-parallel, linflate, osm-katana).

This repo holds no source code. It is the nornir control plane for znippy: the workspace descriptor, the release/bench contract, the guard rails, and the warehouse the bench runs land in. The code lives in the sibling znippy/ checkout.

📐 Bench / measurement pattern. Every benchmark is wired the same way: the child repo exposes Bencher impls in xtask/examples/nornir-bench.rs; nornir spawns it via nornir bench run znippy and persists results into the iceberg bench_runs table at <workspace>/.nornir/warehouse. No JSONL files, no per-repo persistence code. See znippy/.nornir/benching.md for the full contract and anti-patterns (why it is not cargo bench/criterion).

📦 Bench fixtures live on local disk only — never on T9. T9 is an external USB drive and its throughput would skew every measurement; copy to /home/rickard/work/ first.

Layout

workspace_znippy/
├── WORKSPACE.md              this file
├── nornir-workspace.toml     SOURCE descriptor (registered with the nornir server)
├── release/
│   ├── SPEC.md               declarative release/bench contract
│   └── nornir.toml           per-repo recipes + guard rails (read at runtime)
└── .nornir/
    ├── warehouse/            iceberg bench_runs table (gitignored; LFS for parquet)
    └── logs/                 release-run logs (gitignored)

Members

repo transport role
znippy HTTPS (public) primary — archive format + l* family + zoomies
nornir SSH (private) the build/release/docs tooling itself (dogfood)

znippy is also a dependency member of workspace_holger (holger archives are znippy archives). Here it is the primary member, so znippy gets its own warehouse and its own MCP workspace scope (NORNIR_WORKSPACE=znippy).

Tooling policy

All build, release, deploy, and benchmark tooling is Rust, via nornir (sibling checkout at ../nornir/). No shell scripts, no Make, no Just. The two drivers — nornir-cli and nornir-mcp — both read release/nornir.toml at runtime; there is no generated per-repo release.rs.

Agent guard rails

release/nornir.toml carries a [guard] table listing paths that AI agents (and humans) must not modify casually: append-only bench histories, generated docs (CHANGELOG.md, the <!-- nornir:gen --> regions of README.md), and the release contract itself. nornir-cli guard apply enforces it with chmod -w; nornir-cli guard release restores the write bit.

Registering with the nornir server (oden)

# on the host (oden), where nornir-server runs:
nornir workspace register znippy \
  --descriptor /run/media/rickard/T9/git/workspace_znippy/nornir-workspace.toml \
  --monitored --poll 60s

Once registered, znippy joins the monitored set (njord · holger · knut · nornir-catalog · znippy) and the MCP tools can be scoped to it. See znippy/.mcp.json and nornir/.nornir/mcp-from-claude-code.md for wiring an agent (NORNIR_WORKSPACE=znippy).

Release gate

See release/SPEC.md for the full gate sequence and znippy/CLAUDE.md §Release procedure for the publish order. Short form: nornir bench run znippy → no metric drops >10% (same machine) → append history → docs fresh → tag → cargo publish bottom-up.