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
Bencherimpls inxtask/examples/nornir-bench.rs; nornir spawns it vianornir bench run znippyand persists results into the icebergbench_runstable at<workspace>/.nornir/warehouse. No JSONL files, no per-repo persistence code. Seeznippy/.nornir/benching.mdfor the full contract and anti-patterns (why it is notcargo 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.