Watch
0
0
Fork
You've already forked hyperhive
0
hyperhive/swarm-review-classifier/README.md
atlas 8e33de6fb7 nix: hand the review classifier its store leaf as an nspawn credential
The leaf's key was copied by a host unit into the container's root on
host disk. nspawn now reads the cert, key and store CA as root at
container start (--load-credential) and passes them in as system
credentials; the daemon's unit loads them by bare id, as an agent's
container does with its own leaf (nix/agent-modules/bao.nix). The copy
unit is gone. Where this host mints the leaf, the container starts after
swarm-bao-pki, since nspawn refuses a missing credential source. An
assertion refuses identity paths with whitespace, which nixos-container's
unquoted extra flags would split.
2026-10-12 13:11:21 +02:00

33 lines
1.6 KiB
Markdown

# swarm-review-classifier
The review classifier's try-out service, in the `swarm-review-classifier`
container on the host that sets `deploy.review-classifier.enable`. The
design is [`docs/swarm/review-classifier.md`](../docs/swarm/review-classifier.md).
swarm-controller reads a PR (its head commit, its commits and its diff) and
sends it, with the operator's classifications, as a request on the queue.
This service asks a small model one classification at a time and answers
with the result table and the overall verdict. It writes nothing to the
forge and holds no forge credential.
## What a run is
- The shared context first: a system prompt, the PR's commits with their full
messages, and the diff with lockfiles collapsed as `hive-forge diff` does.
Every classification's prompt starts with the same bytes.
- One `claude --print` per classification, with no session, no tools
(`--tools ""`), no MCP server, its own empty directory and
`ANTHROPIC_API_KEY` in its environment only.
- An answer is a JSON object with a verdict, a certainty and a reason of at
most 500 characters. A failed run, a timeout or an answer that doesn't
validate leaves that row without a verdict, and it doesn't count.
- A run with no API key, or with no classification answered, fails as a
whole: the caller sees an error, never a verdict.
## Credentials
The container holds one credential: its own store certificate, which nspawn
hands in at start without a copy on disk. With it the service
reads its queue client secret at start and the API key at every run, so a key
written or removed in the store takes effect on the next run. Its store role
reads exactly those two paths.