# agent_fix.md — handoff (2026-06-11)
Session notes: what was fixed, and what's left. Spans znippy, skade, the nornir
release pipeline, and the nornir **server** (oden).
## Done & verified
### Crates published (crates.io)
- **znippy perf pass:** `znippy-zoomies 0.1.10` (stree AVX2-once + hugepage),
`lbzip2 0.5.2`, `lgz 0.3.3`, `ljar 0.2.1`, `lzip-parallel 0.2.2`,
`znippy-compress 0.9.2`. All tagged + pushed (codeberg).
- **`znippy-common 0.9.2`** — it had diverged from 0.9.1 without a bump
(`MetaSinkFactory` iceberg-sink API), blocking the compress/cli publish step.
Bumped + published; every dependent's version req raised to 0.9.2.
### Docs
- **skade/.nornir:** added `design.md`, `tutorial.md`, `dummy-guide.md`; fixed a
stale note (REST-shim `commit_table` is implemented, not 501). Pushed.
- **workspace_znippy/release/RUNBOOK.md:** script-free full-release runbook
(no `release.sh` — pure-Rust toolchain). The workspace-wide release lives in
the control plane, not znippy/.nornir.
### Config
- **workspace_znippy/release/nornir.toml:** added `[storage] local_path =
"workspace_znippy/.nornir"`. Without it `warehouse_root()` fell back to
`workspace_holger/.nornir/warehouse`, so znippy benches wrote into *holger's*
warehouse and gated against its history.
### nornir server (oden, systemd `nornir.service`, user `nornir`)
- **Fresh binaries** built from current source → `/usr/local/bin/{nornir,nornir-server}`
(the old installed binary wrote a 10-column `bench_runs` batch vs the current
7-field schema → local-append failure).
- **znippy added to `NORNIR_MONITOR`** in `/etc/nornir/nornir.env` (it was
missing → `workspace 'git'/'znippy' is not served`). Env backed up to
`nornir.env.bak.<mtime>`. Drop-ins (`cuda.conf`, `path.conf`) preserved.
- **Clean-slate wipe** (server stopped, as `nornir`): `registry.redb`,
`workspaces/*/builds`, `default/{warehouse,cache}`, `funnel`. Kept `.ssh`,
`descriptors/`, the env, the unit. (git checkouts kept to avoid a full
re-clone; the poll loop refreshes them.)
- **git committer set** for the `nornir` user (`user.name=nornir`,
`user.email=nornir@oden`) — the poll-loop fetch was failing with
`reflog … needs a committer which isn't set`. `nornir workspace fetch znippy`
now succeeds (2/2 members, incl. the private `nornir` repo over SSH).
- **Verified:** `nornir workspace ls` shows all 5 monitored (holger, knut, njord,
skade, znippy); `serving 6 workspace(s)`; a server-routed
`nornir bench run znippy` persisted into `/home/nornir/workspaces/znippy/builds/`
(stree_8mb/_128mb, lbzip2_scala, lgz_scala present). Service `active`.
## What's left
1. **GitHub push is not automated in `nornir release`** (`src/release/publish.rs:270`).
By design — gix 0.84 has no send-pack and nornir forbids git-subprocess +
libgit2. `release run` commits + tags locally + `cargo publish`es, then the
operator runs `git push` (see workspace_znippy/release/RUNBOOK.md). If you want
it automated, the options are: implement gix send-pack, sanction a single
`git push` subprocess, or keep the manual step.
2. **Full `nornir release run` for znippy not yet run end-to-end** — only the
bench→persist path was validated (with `NORNIR_BENCH_SKIP_HEAVY/PLANET=1`).
A real release runs the *full* bench suite, which needs the heavy/planet
fixtures present (`/home/rickard/work/europe-latest.osm.pbf`, the planet
`.osm.bz2`/`.pbf`) or the gate's `required_results` may fail. Run on a
quiescent box with the crates.io token configured.
3. **Server-mode bench-run workspace header** derives from the cwd basename, so
running from `/run/media/rickard/T9/git` sends `git` → "not served". Use
`NORNIR_WORKSPACE=znippy` (or run inside the znippy checkout). Worth making
the CLI fall back to the `--repo`/config workspace name instead of cwd.
4. **`maven_extract` bench regression smell:** native ljar maven extract is
~14 µs/call vs the fallback ~1.2 µs (`speedup_x≈0.09`, i.e. native is ~10×
*slower*). Pre-existing; looks like the native path is doing more than the
fallback. Worth a look.
5. **Stale `/var/lib/nornir`** tree — unused by the running server (real root is
`/home/nornir/workspaces`). Safe to `sudo rm -rf /var/lib/nornir`.
6. **`/home/nornir/server.toml`** is referenced in places but absent; config is
entirely via `/etc/nornir/nornir.env`. Remove the stale references or restore
the file if something still reads it.
7. **skade's nornir release/bench is "not wired yet"** (per
workspace_skade/WORKSPACE.md — gates aspirational). skade-katalog has a
`bench/examples/nornir-bench.rs` Bencher; wiring its `release run` is the next
step there.
8. **`nornir-server` has no `--version`** — invoking it boots the server. Minor
CLI ergonomics; a `--version`/`--help` short-circuit would avoid accidental
boots (and accidental `:7878` binds).
9. **Deploy-key coverage:** znippy fetches clean now; confirm the server's deploy
key (`nornir key show`, nornir@oden) is on every private member repo
(holger/knut/njord + the `nornir` member) so no monitored workspace silently
fails to fetch.
## Quick reference
- Restart server: `sudo systemctl restart nornir`
- Server config: `/etc/nornir/nornir.env` (token, addr, `NORNIR_MONITOR`, root)
- Registry: `/home/nornir/workspaces/registry.redb`; per-workspace warehouses:
`/home/nornir/workspaces/<name>/builds/`
- Full znippy release: see `workspace_znippy/release/RUNBOOK.md`