AI agents earn autonomy from evidence, one verified action at a time,
and human review recedes where your declared policy says the receipts have earned it, with a
receipt for every action you no longer read. An open, language- and
transport-agnostic protocol. Zero runtime dependencies.
Recede grading its own development: every lane below is a real (actor, task type)
pair from this project's ledger. Green merges without a human.
Amber states its distance: n clean cycles to autonomous, arithmetic
under the declared policy, not a prediction. The right column never goes
green, at any trust tier. No aggregate score anywhere, on purpose. On a desktop, hovering a cell shows what binds it.
One command: recede-cc10x matrix --ledger <path>.
It emits a frozen recede-readiness/1 JSON and this render.
Zero to your own landscape: the recede-path skill.
The inversion
Everyone else fights agent review fatigue by shipping more to watch.
The question every team is asking is whether an AI reviewer is finally good enough to skip the
human on a PR. It is the wrong question. Put an AI agent on consequential work (code, support
replies, refunds, document intake)
and a human is nominally reviewing it. But no one can meaningfully review everything an
agent does at agent speed, so review collapses into rubber-stamping
(review theater) or bottlenecking (the agent's speed is wasted).
Engineering teams feel it first in the dev loop (nobody reads dozens of agent PRs a day), which
is why Recede starts there and reaches further. The root cause
is a trust-calibration bug: trust today is mis-attributed: one global
"do I trust the AI?" verdict, when trusted to fix a flaky test and
trusted to run a migration are different questions, and neither
says anything about trusted to answer a customer. And it is
mis-calibrated: granted by feeling, not evidence. The usual answer is a
bigger dashboard, a 0–1000 score, more alerts. Wrong direction.
Fix attribution (per Actor × TaskType) and calibration
(evidence + confidence), and small daily verified wins compound into earned, bounded
autonomy, so review recedes exactly where warranted.
The reflex
Measure trust → build a dashboard → watch more.
invert →invert ↓
Recede
Measure trust per capability → let review recede → read fewer PRs, on purpose, and snap back the instant a merge regresses.
The model
Five bullets, plus the proof.
Trust is scoped
Held per (Actor, TaskType), never one global agent score. Trusted on code.fix ≠ trusted on code.migrate. Review recedes in one lane while staying tight in another.
Every action emits a Warrant
An append-only, hash-linked chain: intent → action → checks → outcome. Trust is a sum over receipts you can open. No Warrant, no trust movement.
V&V is first-class and split
Verify = the technical contract holds (CI, tests, types). Validate = the product contract holds: the change delivers what the ticket and the product intent asked, at quality. Trust is only as trustworthy as the product context you measure it against. Conflating "tests are green" with "it did what I asked" is how confidently-wrong code merges.
The Gate is a pure function
gate(trust, risk, policy) → checkpoint or autonomous. Same inputs, same decision, always replayable. That makes "review recedes as trust is earned" a provable property.
Asymmetric & bounded
Earned slowly, lost fast. Decays with staleness and with drift: as the system changes, trust in work built on a contract falls until the contract is re-satisfied, so review re-arms where drift grows. Irreversible actions (code.migrate, prod deploys) keep a human checkpoint at every tier. Earned autonomy is bounded, never unbounded.
Replay proves it
replay(warrants, policy) reconstructs the exact trust state from the receipts + pinned policy. "Why did this merge unattended?" is answered by pointing at the chain.
I1 scope isolationI2 replay reconstructabilityI3 irreversible floor · never_recedeI4 trust can decreaseI5 confidence capI6 policy digest on every decisionI7 gate / update / replay purity
The entry manifestation: where the pain is sharpest today. One coding agent
on code.fix the whole way across. Day 1, every change is
reviewed: Verify (CI, tests, types green) and Validate (it did what the ticket
asked, at quality). The diamonds thin out as clean fixes compound until review
has receded and low-risk fixes merge autonomously. A code.migrate
still gates every time: irreversible actions never recede. Then an autonomous fix is
reverted in staging, trust drops below the tier floor, and review snaps back
automatically. No one edited a rule; the evidence moved.
Held to its own standard
I ran the test that could kill it.
A protocol that grades agents has to accept the same grading. Recede's own dogfooding ledger
could not provide it: for weeks it held one actor's records with zero reverts, and a ledger that
only ever says PASS carries no information. Invariant I4 says exactly that. Real history has
the reverts, so I asked whether replayed lane trust, computed from evidence observable at merge
time only, predicts which merged PRs later reverted, better than trivial baselines.
6,464 next.js + 3,457 langchain PRspre-registered before resultsbyte-reproducible pipelinespredictive claim: not supported
Before any result existed I froze the revert definition, the success thresholds, and the leakage
rules, and committed to shipping the result either way. The current trust math did not beat trivial
baselines on next.js, and the langchain arm was underpowered. A post-hoc correction I made to an
under-converged baseline is what flipped the first result against my own thesis. The pipelines are
deterministic and the scorecards publish with the writeup.
The discipline of the null is why you can trust the numbers Recede does publish.
Predicting which changes will revert is a roadmap capability, not a claim Recede makes today. What
ships now is the governance gate itself: warrant chains, a pure replayable decision, asymmetric
trust with hard never-recede floors, and a receipt for every action a human no longer reads.
One protocol, many flows
Recede doesn't know what code is.
The spec defines actors, task types, evidence, and a gate: the flow decides what Verify, Validate, and "irreversible" mean. The same eight operations:
SDLC: the entry
Where the pain is sharpest today. code.fix / code.migrate; Verify = CI, tests, types; Validate = the change does what the ticket asked. Worked end to end in examples/sdlc.
Refunds & commerce ops: the frontier
Outcomes defer: a chargeback flips SUCCESS → REVERTED a day later and trust drops retroactively. Above a threshold, never_recede. Runnable in examples/refund.
Conversational & support
reply.draft and reply.send are different task types with different risk. Verify = grounding, PII scrub; Validate = tone, policy, intent fit. Review recedes on routine intents, never on legal or medical paths.
Intake & document pipelines
doc.classify, doc.extract; Verify = schema validity; Validate = sampled human ground truth. Trust recedes per document-type lane; a new vendor format snaps review back by itself.
Same protocol, same receipts. Only the checks and the policy change.
Why it's different
It's not another scorecard. It's a layer above them.
Recede sits above interop (MCP/A2A), eval/observability tools, static guardrails, and framework validation loops (the accessibility, SEO, type, and contract validators that already check every agent output), consuming their signals as evidence rather than replacing them. It is the memory and the gate on top of them: per lane, it decides when their green is enough to let review recede.
Incumbent
What it does
Recede's distinct axis
Eval / observability tools
Score each run in isolation
Trust has memory, carried forward per capability
Static guardrails / control standards
Apply the same checkpoints uniformly, forever
Review is proportional to earned evidence
Governance promotion-ladders
Earned, but coarse HR-style tiers + calendar time + sign-off
Continuous & machine-verifiable, per-action
Agent identity / A2A
Establish who the agent is
Tracks what the agent has earned
Quickstart
The whole framework is one call: wrap the function you already have.
Reference implementation: TypeScript primary, Python mirror. The gate is implicit: there is no if (needsReview) in your code. run() decides. Your existing CI, tests, and PR reviews become the evidence.
code-agent.ts
const r = newRecede({ ledger: newMemoryLedger(), checkpoint: consoleCheckpoint(), policy });
// Verify = did it right (CI green). Validate = did the right thing (intent-fit).const ciGreen = check.verify("ci", io => io.output.ci === "green");
const intentOK = check.validate("intent-fit", async io => ({ ok: awaitreviewMatchesIntent(io.intent, io.diff), confidence: 0.8 }));
const outcome = await r.run(() => agent.implement(ticket), {
actor: "code-agent",
taskType: "code.fix",
intent: `Fix ${ticket.id}: ${ticket.title}`,
risk: "reversible.low",
checks: [ciGreen, intentOK],
});
// The gate is IMPLICIT: run() decides whether a human is asked.
outcome.result; // the change (or the human-edited version)
outcome.trust; // { before, after, delta } for (code-agent, code.fix)
outcome.checkpoint; // undefined once review has receded for low-risk fixes
outcome.warrant; // the hash-linked chain: intent -> diff -> checks -> outcome
As the ledger accrues verified, validated changes, that same call site graduates from
"always ask a human" to "merge autonomously", and reverts the moment
the agent regresses. You don't rewire anything. The trajectory does it.
Wrapping a refund flow, a support reply, or a document pipeline is the same call with
different checks: see One protocol, many flows.
Status & scope
v0.1 DRAFT: the protocol is the deliverable; the code is proof.
Breaking changes expected before 1.0. Designed clean-room from first principles and public prior art only: append-only logs, content addressing, risk matrices, calibration, human-in-the-loop gating, and verification-vs-validation from systems engineering.
v0.1 ships
Normative record schemas + trust-state model, tiers T0–T4, invariants I1–I7
TS reference + Python mirror, in-memory + append-only-file store
One CLI checkpoint surface, a cross-language conformance suite, runnable examples: sdlc (everyday) + refund (frontier) + agentic-checkout (mandate-carrying commerce)
The 0.2 evidence layer: pooled weighting over typed, provenance-graded evidence_refs; a read-only repo scanner that discovers the checks you already run; history backfill with reverts folded in; a recorder-workflow emitter; the readiness matrix; four on-ramp skills
Pre-registered and run: the test and its null result (scorecards publish with the writeup); predictive trust calibration is roadmap, not a claim made today
Explicitly deferred
Cryptographic identity / PKI / DIDs (the sig shape is reserved)
ML / statistical scoring beyond the reference weighting
Distributed ledgers & consensus
A hosted dashboard product (the matrix is a generated artifact with no aggregate score; a live thing to watch would betray the anti-fatigue thesis)