v0.0.0-reserved · name reserved · product in migration

Your agent says it’s done.
Now check it — don’t rerun it.

grannom is one small binary that sits between a coding agent and its tools. It judges every tool call, remembers every verdict in an append-only ledger, and — the part nothing else seems to do — turns that memory into evidence you can hand to someone else.

TERMINAL
$cargo install grannom        # name reserved — the product lands with the rename wave

Releasing under this name after the migration completes. Watch the GitHub org.

grannom-warden ATTEST — WHAT THE LEDGER SAYS
$grannom-warden attest --card CARD-0111
attest: CARD-0111
  window      : ledger rows 0..4 (physical position, never seq)
  declared    : blast 2, allowlist src/allowed.rs
  verdicts    : allow 2  steer 0  deny 1
  OUTSIDE     : 1 file(s) written outside the declared allowlist:
                src/sneaky.rs
  RED-TEST    : a matching command was ATTEMPTED in the window

$grannom-warden attest --verify bundle.json
  CONFIRMED    allow                 bundle=2 ledger=2
  CONTRADICTED files_outside_count   bundle=0 ledger=1

1 CLAIM(S) CONTRADICTED — this bundle does not match the ledger.

Three things, one binary

No daemon. No cloud. No schema you have to trust — just a ledger you can replay.

judge

Every routed tool call passes the warden: allow, steer or deny — with a reason, checked against real shell grammar, before the tool runs.

remember

Every verdict lands in an append-only ledger. Physical positions, hash-chained rows, torn-row detection. Memory is not a log you read once; it is the ground truth later.

attest

Bundles of claims are checked against the ledger: CONFIRMED or CONTRADICTED. Evidence you can hand to a person, a gate, or a merge pipeline.

Why “grannom”?

The grannom (Brachycentrus subnubilus) is a caddisfly at the moment of hatching — the stage when the case-building insect emerges from the protective case it built grain by grain, and takes flight.

That is the product’s thesis. Your coding agent builds its own case — code, diffs, claims — and the only honest question is whether anyone checked what it carried out of the case. The grannom name keeps the whole caddisfly lineage of this project: case, stream, canopy, riverbed. Also known as the sedge fly; same insect, older name, same instinct to build.

The conscience is small. The ledger is append-only. The evidence is handable.

Formerly distributed as caddis — the same insect; the ecosystem canon survives the rename intact.