Method
How every ruling is made.
Verdicts are derived, routes are computed, and both are drift-checked in CI against the published rules below. Nothing on this page is a summary of the code — the routing rule you read here is rendered from the routing module itself.
The rubric
Five axes, each scored 0–2. The total decides the verdict.
| Output | Can a current model produce the artefact at all? |
|---|---|
| Inputs | Can the reader actually supply what the task needs? |
| Verification | Can the reader check the result without the expertise they were avoiding? |
| Liability | Who carries the consequences if it is wrong? |
| Effort delta | How much of the work does the model genuinely absorb? |
- YES — total 8–10 with no axis at 0.
- PARTLY — total 4–7, or 8+ with exactly one axis at 0.
- NO — total 0–3, or Verification and Liability both 0.
- Tasks requiring regulated sign-off cap at PARTLY regardless of score — the override is recorded on the page as
override_applied, never hidden.
The capability fields
The seven reader-facing fields on every ruling, with the decision rule that keeps subject 300 consistent with subject 3. Ties always break toward the harder value.
skillLevelnone | chat-fluent | power-user | developer- Assign by the highest requirement in the happy path, not the average. Torn between two levels: take the higher.
timeToFirstOutput2 | 5 | 15 | 30 | 60 | 120 | 240 minutes- Wall-clock time from opening a chat to holding something that looks like the deliverable. Measured, not estimated; round up to the rung.
timeToVerifiedthe same ladder, or n/a — cannot be self-verified- Time until you would act on it: reading critically, checking every number, fixing what is wrong. If verification needs the expertise the reader is avoiding, the value is n/a and the Verification axis must be 0 — CI enforces the link.
costAllIn£0 | £X/month | £X one-off- The cheapest genuinely sufficient route, including any subscription the task actually requires. Paired on every page with what the human alternative costs, sourced and dated.
failureModerecoverable | costly | unrecoverable- Assign by the worst plausible outcome of a competent reader following the page — not the worst imaginable one. Rendered as one flat sentence of prose, never a badge alone.
whoChecksyou | a colleague | a professional | nobody can, cheaply- Who must look at the output before it is acted on. “A professional” means a licence, a qualification or accountable authority.
routediy | tool | human- Computed from the fields above by the rule below — never chosen. Forcing a route means changing a field value with a written reason in the audit trail, or an entry in the public override register.
The routing rule, verbatim
Rendered from src/domain/route.ts at rule version1.0.0 — the same function that computed every stored route, whose output CI recomputes and compares on every change. Clauses are evaluated in this order; the first match wins.
- humanwhoChecks is 'a professional', or failureMode is 'unrecoverable', or blockers contain legal-accountability, regulated-advice or verification-cost — tested first, overrides the others
- diyskillLevel is 'none' or 'chat-fluent', timeToVerified ≤ 60 minutes, and failureMode is 'recoverable'
- toolevery remaining case — the residual, never the default
Tool is the residual, never the default — it is the highest-revenue route, which is exactly why it cannot be the fallback anyone reaches for. Manual forces are never edits to a stored route: the only levers are a field change with a written reason, or a public entry inthe override register.
The evidence rules
- No receipt, no YES: a yes verdict without a stored raw output fails CI.
- Evidence tables are append-only, enforced in the database and linted in CI.
- A stored route that disagrees with the recomputed route fails CI.
- Rulings past 90 days without a re-check are publicly listed as stale.
- 3 subjects are published today; every one carries its version history and its receipts.