Keel
keel route
Independence cannot be manufactured, but it can be routed.
Every ungrounded verification edge in sinatra, paired — where a pairing exists — with an anchored producer already present in the same measurement. Nothing here invents an anchor, and nothing here has been applied.
| target | sinatra |
|---|---|
| revision | cb22afd7902b566b6eaba6c4ea89739494a65d12 |
| source report | reports/sinatra.json |
| generated | 2026-07-25T05:21:51.905Z |
| status | proposed (all 1) |
anchored / (anchored + self_referential + unknown)
The second number is a projection: the ratio this target would carry if a human applied every route below and the applied routes measured as anchored on re-measurement. It is arithmetic on a hypothetical. It is not written to any report, it is not fed back into the grounding ratio, and no proposal on this page has been applied. Projected counts, for the same conditional: anchored 7 · self_referential 0 · unknown 1 · not_a_check 17. The delta is two different claims and is reported as two: 0 re-grounded — an existing check whose signal moves outside the write boundary, the proposition it asserts unchanged — and 0 constructed — a not_a_check node that becomes a check, entering the denominator as well as the numerator. Only the first repairs something that was already being claimed.
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.
Routes — 0 routable · 1 unroutable
Existing checks whose signal could come from somewhere they cannot write. Cheapest effort on top. no route is a first-class answer: it means the fix needs a policy decision rather than a rewiring, and it is reported here rather than dropped.
| what's ungrounded | route to | why that's anchored | effort |
|---|---|---|---|
.github/workflows/CODEOWNERS#codeowners
unknown |
no route | The proposition this node tries to assert is 'a designated code owner reviewed and approved this change before it merged'. Every anchored producer in this report asserts a different proposition: the three release.yml steps assert 'the gemspec builds and the built .gem installs' (RubyGems exit codes on a v* tag push), and the four rspec/rake nodes assert 'the committed specs pass against the committed lib' (Ruby runtime exit codes on the PR path). Neither family emits any signal about who looked at the diff, so wiring the review gate onto one of them would move the ratio without grounding the claim. There is additionally no producer of review evidence anywhere in the measured tree: the artifact that would have to exist is a GitHub branch-protection approval record, and by the source verdict's own reasoning that record lives outside the clone and outside what this report measured. |
— |
Construct — not yet.
A route makes a check read a signal from outside itself. It does not pair that check with a counter-metric, name who arbitrates when the pair disagrees, or set a cadence at which the route is re-audited. Those three fields are declared in schemas/route.ts and are filled by keel construct, which is not built. The columns are empty by construction, not by omission.
| route | pairedWith | arbitratedBy | auditEvery |
|---|---|---|---|
| no routes on this run | |||