E Evidence Press

PRODUCTIVITY PROTOCOLS

The Verified Agent Work kernel

# The Verified Agent Work kernel

**Version 0.1.0 · status: DRAFT**

Every protocol in this library instantiates one method. That method is the
kernel. A protocol is not a clever prompt; it is a work contract that names its
deliverable, its boundaries, its permissions, its checks, and its evidence. The
kernel is the shared skeleton those contracts hang on, so that a reader who has
understood one protocol has already understood the shape of all of them.

The kernel is deliberately small — eight steps — and each step names the
**failure it exists to prevent**. A step you cannot connect to a concrete
failure mode is ceremony, and ceremony is the thing this library is built to
avoid. If a proposed addition to the kernel does not close a failure that has
actually been observed, it does not belong in the kernel; it belongs, at most,
in a single protocol that needs it.

---

## The eight steps

### 1. Define the deliverable

State, in one sentence, the artefact the work must produce and the standard it
must meet. Not the topic, not the activity — the *thing handed back*, and how
you will know it is good enough.

- **Produces:** a deliverable statement and an explicit acceptance standard.
- **Prevents:** work that is busy but never *done* — the open-ended session that
  drifts because "improve the analysis" has no finish line. Without a named
  deliverable there is nothing for step 7 to validate against.

### 2. Define the input and evidence boundary

Enumerate exactly what the agent may read and rely on, and mark everything else
out of bounds. Distinguish **inputs** (the material to work on) from **evidence**
(what may be used to justify claims). State whether outside knowledge is
permitted and, if so, how it must be marked.

- **Produces:** an input manifest and an evidence rule.
- **Prevents:** fabricated support and scope creep. An agent with no declared
  evidence boundary will reach for whatever is plausible; a briefing that cites
  "studies show" with no traceable source is the boundary failing silently.

### 3. Declare permissions and prohibited actions

List what the agent may access or change, and — separately and explicitly — what
it must never do. Permissions are least-privilege by default: an action is
forbidden unless it is named. Prohibited actions are stated even when they seem
obvious, because "obvious" is not machine-readable.

- **Produces:** a permission set and a prohibited-action list.
- **Prevents:** unintended side effects — the "summarise my inbox" task that
  sends a reply, the "check this cart" task that completes a purchase. The cost
  of an undeclared permission is paid once, in the wrong direction, and is often
  irreversible.

### 4. Identify risks and human approval points

Name the ways this work can go wrong and the specific points where a person must
approve before the agent proceeds. Approval points are placed *before*
irreversible or outward-facing actions, never after.

- **Produces:** a risk list and a set of human checkpoints tied to specific
  steps.
- **Prevents:** silent commitment of consequential actions. The failure this
  closes is the agent that was *capable* of pausing for approval but was never
  told where the cliff edges were.

### 5. Decompose the work into verifiable checkpoints

Break the work into steps small enough that each one can be checked when it
completes, not only at the end. A checkpoint that cannot be verified is not a
checkpoint; it is a hope.

- **Produces:** an ordered procedure where each step has a check.
- **Prevents:** end-of-run surprise — the failure discovered only after all the
  work is built on top of it, when it is expensive to unwind. Early checks make
  errors cheap.

### 6. Execute while retaining material decisions and failures

Do the work, and as you go, keep the decisions that were not obvious and the
attempts that failed. Retention is not a transcript of everything; it is the
subset a reviewer would need to understand *why the output is what it is* and a
future run would need to avoid the same dead ends.

- **Produces:** a decision-and-failure log that feeds the receipt.
- **Prevents:** unauditable output and repeated mistakes. Work with no retained
  reasoning cannot be reviewed, only re-trusted; and a failure that was not
  written down is a failure that will be paid for again.

### 7. Validate the result against explicit acceptance tests

Check the deliverable against the acceptance standard from step 1 and the tests
the protocol declares. Validation is adversarial by intent: the question is not
"does this look right" but "what would make this wrong, and is that present?"
If a stop condition is triggered, stop and surface it rather than proceeding.

- **Produces:** a pass/fail record against named tests, and any triggered stop
  conditions.
- **Prevents:** confident delivery of wrong work. The failure here is the
  plausible-but-false result that passes because the only judge was the author,
  who is rationalising toward "done."

### 8. Produce the deliverable, limitations, and a compact receipt

Hand back three things, not one: the deliverable, an honest statement of what it
does **not** cover or has **not** verified, and a compact receipt recording the
version, inputs, checks run, and evidence status. The receipt is what lets a
third party trust the work without repeating it — and lets *them* repeat it if
they choose.

- **Produces:** deliverable + limitations + `RECEIPT.json`.
- **Prevents:** overclaim and non-reproducibility. A result with no stated
  limitations invites use beyond its warrant; a result with no receipt cannot be
  independently checked, so its assurance rests entirely on trust in the author.

---

## The kernel is proportional

The eight steps are constant; the **weight** applied to each is not. Producing
meeting notes should not carry the machinery of a publication-grade audit. The
kernel therefore runs at three levels of assurance, defined in
[`assurance-levels.md`](./assurance-levels.md):

| Level | Intended use | What the kernel requires |
|---|---|---|
| **Quick** | Low-risk personal work | Steps 1–3 and 7–8 as a lightweight checklist; preview before any change; basic output validation. |
| **Verified** | Repeatable professional workflow | All eight steps, with structured inputs, declared permissions, named acceptance tests, worked examples, and a receipt. |
| **Institutional** | External actions or consequential decisions | All eight steps under persistent state, role separation between doer and checker, adversarial review, and a replayable audit log. |

Choosing a level is itself a step-4 decision: the level is set by the *risk* of
the work, not by the ambition of the protocol.

---

## What the kernel is not

- **It is not a guarantee of benefit.** A protocol can execute all eight steps
  flawlessly and still make its user slower. Whether a protocol *helps* is a
  separate question, answered by evidence, not by conformance. That is why this
  library keeps two independent status ladders — protocol assurance and
  productivity evidence — and never collapses them into one badge. See
  [`../status/ladders.md`](../status/ladders.md).

- **It is not a substitute for judgement.** The kernel makes the shape of the
  work inspectable; it does not decide whether the work should be done. Steps 3
  and 4 route the consequential decisions to a person on purpose.

- **It is not model-specific.** The kernel is platform-neutral. A protocol
  written against it should run, at reduced assurance, on any capable agent, and
  its adapters carry only the product-specific detail.

---

## Mapping to the protocol contract

The kernel steps correspond one-to-one to fields in `protocol.yaml` (see
[`../schema/protocol.schema.json`](../schema/protocol.schema.json)), so that a
machine can check a protocol *is* an instance of the kernel:

| Kernel step | `protocol.yaml` fields |
|---|---|
| 1 Deliverable | `expected_outputs`, `acceptance_tests` |
| 2 Input & evidence boundary | `required_inputs`, `evidence_status` (of inputs) |
| 3 Permissions & prohibitions | `permissions`, `prohibited_actions`, `required_capabilities`, `optional_tools` |
| 4 Risks & approval | `risk_class`, `human_checkpoints`, `failure_modes` |
| 5 Verifiable checkpoints | `procedure` |
| 6 Execute & retain | `procedure` step outputs → the run's decision log |
| 7 Validate | `acceptance_tests`, `stop_conditions` |
| 8 Deliver + receipt | `expected_outputs` + `RECEIPT.json` |

A protocol that leaves a kernel-mapped field empty is not wrong by definition,
but it must say why. The validator treats an unexplained empty mapping as a
structural defect.