KeelYour agents are grading their own homework. Keel measures how much.
A ship's keel is the reference line everything else is measured from — and an even keel is a stability property, not a decoration.
A check is only a check if the signal it reads comes from somewhere the thing being checked cannot write to.
Most verification in an agent-maintained codebase fails this. An LLM reviews what
an LLM wrote. A doc is validated against another doc. A status field reads
passed because something set it to
passed. The pipeline is green and nothing has been
verified.
| anchored | The signal's producer is outside the actor's write boundary — a process exit code, a type checker, a payment that settled, a customer action. |
| self_referential | Inside it — an LLM judging output, a doc checked against a doc, a self-set status field. |
| unknown | The fork point could not be traced. Fails closed. |
| not_a_check | Surfaced by the gatherer, but it asserts nothing — a build step, a cache restore. Excluded from the ratio, which is exactly why it is the one class worth shopping into. Reaching for it because a node is hard is wrong; the honest answer there is unknown. |
unknown counts against, deliberately. Absence of evidence of
dependence is not evidence of independence.
Novel shapes are judged by the agent. Recurring shapes get crystallized into probes — small, reviewable scripts — so the next occurrence costs no model call at all. Probes are code, which means they are diffable, testable, and rejectable, and the library compounds across everyone who runs Keel.
Probes may abstain. They may never return unknown. A probe
that is unsure falls through to the agent, so a lazy probe degrades to
ask rather than to looks fine.
Probes drift. Keel re-decides a sampled fraction of probe-classified nodes agentically, with the cached verdict hidden, and retires the ones that disagree. The library's agreement rate is Keel's own counter-metric — a tool that measured groundedness while refusing to measure its own would be making the exact mistake it exists to find.
Fifteen repositories measured, each pinned to a verified revision and judged in a recorded order from an empty probe library: the corpus results — a pooled grounding ratio of 0.853 over 143 classified edges, every ratio printed with its anchored count and coverage, and the crystallization curve with its R² beside it.
npx skills add broomva/keel
Scope. Keel measures the shape of verification, not its quality. A repo can be 100% anchored with terrible tests. Anchoring says the signal comes from outside; it does not say the signal is sufficient.