Agent Action Capsule · build your own evidence layer
b8 / 11

The builder's checklist

Seams ① Record to ⑤ View. Build: every step, in order. Conform to: the spec named on each row, starting with draft-mih-scitt-agent-action-capsule-05.

The seven steps in the order they were built for Mesh-LLM, each with what you need, where it lives today, and how far along it is, checked against the repositories on 2026-10-19.

The builder's checklist as a staircase, ticked step by step with status colours Seven steps descend from top left to bottom right: 1 seams, 2 record format, 3 local book, 4 use-case evidence, 5 portability, 6 personal agents, 7 agent work. Each step is ticked in turn and gains a status label. Step 1: live, with two host changes merged but unreleased. Step 2: live. Step 3: live, with the move into the mesh-llm workspace planned. Step 4: built, not live (off by default). Step 5: live, with the in-tree move built but not live (an open pull request). Step 6: designed, with spec text and vectors. Step 7: designed, with settlement legs built. A legend at the bottom gives the colours: green live, blue built not live, amber designed, grey planned. 1 · Seams the host exposes 2 · Record format 3 · Local evidence log 4 · Twins and a referee 5 · Portability 6 · Personal agents 7 · Agent work live #2299 · #2300 merged, unreleased live capsules v0.1.4 · AAC-05 live in-tree move: planned built, not live (off by default) live in-tree move: PR open designed + spec, vectors designed + settlement legs built live: in a published release built, not live designed planned

1What it is

An evidence layer is built bottom up: the host has to expose a few seams first (an exchange event before any record can be sealed, the rest before records can be checked and acted on), then come the record format, the local book, the use-case evidence, and only then the parts that make it portable.

Each step below names what a builder needs from their own host or code, and where the Mesh-LLM worked example keeps it today: a crate, a repository, or an Internet-Draft.

Status is what the code shows at a named commit or what a pull request's state shows today, not what a slide or plan says.

2Design choices

Chosen: ask the host for small generic seams (events, a plugin key, a capability flag, a page, a stop-routing request) and keep evidence in one plugin.
Rejected: patching or forking the host, and operators copying each peer's key by hand, which “does not scale past a few nodes”. (mesh-llm PR 2299; the plugin depends on mesh-llm-plugin = "0.78", capsules crates/evidence-plugin/Cargo.toml)
Chosen: every record, its ledger, checkpoints and checks come from published libraries, pinned by version.
Rejected: a plugin-private record format, or library code copied into the plugin. (capsules crates/evidence-plugin/Cargo.toml: capsule-emit 0.0.6, checkpointed-local-log 0.2.1, capsule-emit-evidence-request =0.0.3)
Chosen: the local book first, with nothing leaving the node by default; sharing is a later, explicit switch.
Rejected: sharing on by default. (capsules CHANGELOG.md 0.1.3: record push, verdict delivery and the referee are off by default; checkpoint_cadence.rs: checkpointing is on by default, local only, no witness)
Chosen: use-case evidence that rules on one pair (a referee's signed verdict), only for a pair a client marked.
Rejected: the host inventing pairs: a referee is asked only for a pair a client marked (capsules docs/TWIN-REFEREE-SELECTION.md §1). Also rejected: sampling alone, which gives a rate, not a ruling on one exchange (the reasoning on b4).
Chosen: portability through open Internet-Drafts, vectors and libraries any host can link.
Rejected: a check that needs an account or a running service; a bundle from a conforming book on the CLL substrate verifies, interval and all, with the neutral Evidence Bundle verifier alone.

3What it shows / what it does not

Shows

  • The order of work that produced a running example, and what each step depends on.
  • Where each piece lives today, by crate, repository and Internet-Draft, so a builder can link the same libraries.
  • Each status with the commit, tag or pull request it was read from on 2026-10-19.

Does not show

  • That any step is finished for every host: these rows are the Mesh-LLM example.
  • That a released plugin is installed or switched on anywhere; “live” here means in a published release anyone can install.
  • Status after 2026-10-19: open pull requests may have moved since.
  • Whether any record's content is true: each step records and checks; none judges an answer.

4Example: the Mesh-LLM rows

The checklist filled in for the worked example. Read it across: what you need, where it lives for Mesh-LLM, its status, and the evidence for that status.

StepWhat you needWhere it lives todayStatusEvidence
1 · Seams
b1
An exchange event naming both sides; payment events; a plugin page, and a slot under each chat answer and in the Logs request inspector header; a stop-routing request; a plugin key bound to the node key; a twin-pair capability flag. Host repo Mesh-LLM/mesh-llm; plugin SDK crate mesh-llm-plugin (0.78). live events, page, slot, stop routing
built, not live plugin key, twin-pair flag
The exchange event (openai.exchange.v1, on the paid path too since PR 2109) and payment lifecycle events (PR 2108), both merged, in v0.78.1 (bc215ce5b880e21c6c3840b8574ab64f83278821); PeerBlockRequest in crates/mesh-llm-plugin/proto/plugin.proto at that tag; page and slot: PluginWebUiPageManifest and PluginWebUiContributionManifest (slots chat_message, logs_request) in the same file at that tag, used by the plugin from capsules 0.1.3 (CHANGELOG.md). PR 2299 merged (f142883d0b7576ceff64615153d86155030cb9b7) and PR 2300 merged (572419fd1e3074f7e948996c292ca8e7972bda8c), both on upstream main 60697c61755b7280c22d3ab9d9bcf5b663e8ae3b, neither in any release tag.
2 · Record format
b2
A signed record per exchange: digests not payloads, request/response binding, the signer's key id, nonces. Internet-Draft draft-mih-scitt-agent-action-capsule-05; crate capsule-emit (action-state-group/capsule-emit); vectors in action-state-group/agent-action-capsule vectors/capsule/. live capsules v0.1.4 (released 2026-10-12) seals draft-mih-scitt-agent-action-capsule-05 (test in crates/evidence-plugin/src/producer/capsule.rs); depends on capsule-emit 0.0.6 (tag 44ad8bd528b029c1abff1937f700423f94e1d6db), whose SPEC_VERSION in rust/capsule-emit/src/capsule.rs is that draft.
3 · Local log
b3
An append-only log on the node's own disk with signed checkpoints, inclusion and consistency proofs. Internet-Draft draft-mih-scitt-checkpointed-local-log-02; crate checkpointed-local-log (reference implementation; any conforming log). live plugin's own log
planned plugin moved in-tree
capsules v0.1.4 depends on checkpointed-local-log 0.2.1 (tag 04339d9ae622014b5c1651961a795d9977e4bba1); checkpointing on by default, local only (checkpoint_cadence.rs). The plugin's move into the mesh-llm workspace: PR 2459 (open).
4 · Twins and a referee
b4
A client-marked pair, a rule for who may referee, a signed verdict, and “not adjudicated” when no referee qualifies. Mesh-LLM/capsules crates/evidence-plugin/src/referee/; rules in docs/TWIN-REFEREE-SELECTION.md; verdict sealed as a capsule (draft-mih-scitt-agent-action-capsule-05). built, not live In the v0.1.4 release, adjudicate_differing_twins is off unless set (referee/request.rs); “a referee verdict on live hosts … is covered by tests only” (CHANGELOG.md 0.1.4). The host copies the client's x-mesh-twin-bracket into twin_bracket_id and strips it before forwarding since PR 2144 (merged 6d36f3845c5f021eac432dfdc8c20efcbfaa340a, in release v0.78.1); only the capability flag that advertises it is PR 2300, merged, unreleased.
5 · Portability
b5
Open specs and vectors, libraries any host can link, the plugin depending on them by version, an evidence request any party can send. Internet-Drafts in action-state-group/agent-action-capsule spec/; crates capsule-emit, checkpointed-local-log, evidence-request, scitt-cose-receipt; the request draft draft-mih-agent-evidence-request-00. live libraries, version pins
built, not live plugin in the host's repo
Version pins: capsules crates/evidence-plugin/Cargo.toml (capsule-emit 0.0.6, checkpointed-local-log 0.2.1, capsule-emit-evidence-request =0.0.3; scitt-cose-receipt by git commit 8833281c11d33e3c1e289cf74f11d25ee7f3c6dc); the request crate evidence-request 0.2.0 is tagged at dd64efe7c394ab78fc228ce91144528cdd95a83a. Plugin move into mesh/crates/mesh-llm-capsules-plugin: mesh-llm PR 2459, open.
6 · Personal agents
b6
Host seams on a personal agent, the same record and book, and a shareable History read. action-state-group/agent-action-capsule spec/personal-agent-history-profile-v0.md (pre-Internet-Draft, personal_history_basic/1); vectors vectors/personal-history-basic-v0/. designed no personal-agent host emits it here Profile and vectors merged in agent-action-capsule PR 259 (995c377bf3fbc5a50630a07c998c0d0fce315a87); positive and mutant cases in vectors/personal-history-basic-v0/.
7 · Agent work
b7
Both sides' records of work done on someone's behalf, evidence requests between them, and settlement legs tied to the exchange. Internet-Drafts draft-mih-agent-settlement-records-00, draft-mih-agent-bilateral-attestation-02, draft-mih-agent-evidence-request-00; vectors vectors/settlement/. designed general case
built settlement legs for paid exchanges
Settlement libraries and vectors: agent-action-capsule rust/agent-action-capsule/src/settlement.rs, vectors/settlement/. Plugin legs: capsules crates/evidence-plugin/src/settlement_legs.rs; paid exchanges across two nodes verified (CHANGELOG.md 0.1.4).
ColumnTypeMeaning
StepordinalWhere it sits in the build order; each step needs the ones above it.
What you needtextThe generic requirement, for any host.
Where it livescrate / repo / I-DWhere the Mesh-LLM example keeps it today.
Statustaglive (in a published release), built not live, designed, or planned.
Evidencepath@SHA / PRWhat the status was read from on 2026-10-19.

Source: Mesh-LLM/capsules:crates/evidence-plugin/Cargo.toml, CHANGELOG.md, crates/evidence-plugin/src/referee/request.rs @ b4e24453f572b2d9fe8f2cefbd0f35a5eb54b0ad (tag v0.1.4); action-state-group/capsule-emit @ 44ad8bd528b029c1abff1937f700423f94e1d6db (tag 0.0.6); action-state-group/agent-action-capsule @ 2ef8aeb49e2334e24c404bd62d3fdb161770873c; Mesh-LLM/mesh-llm tag v0.78.1 @ bc215ce5b880e21c6c3840b8574ab64f83278821; PR states as GitHub shows them on 2026-10-19.

5Status

6Specs

7Back to the start

That is the whole path. To build your own, take the steps in this order and do not skip the seams: every later row depends on what the host exposes. The next three pages close the loop that every step sits in: judging, reporting and history feeding the next act. The contents page shows the loop, starting at the seams the host exposes.