Agent Action Capsule · explain
01 / 11

The problem: a stranger node

A machine you have never dealt with answers your inference request and tells you things about it; each check below settles one of those things, and some are left open.

A stranger node's claims, and which check covers each Step 1: a requester box at top left sends request Q down to a dashed box labelled stranger node. Step 2: the node returns response R with five claims listed on the right: signed by key K; R answers Q; recorded at time T; served model X; the answer is right. Step 3: a green badge next to claim one reads Signature: the holder of K signed it, not who holds K. Step 4: a green badge next to claim two reads Digest binding: R's digest is sealed with Q's. Step 5: a green badge next to claim three reads Log inclusion and receipt: it is in the log; T is still the node's word. Step 6: an amber dashed badge next to claim four reads Open: not shown; a twin and a referee only narrow it. Step 7: a red badge next to claim five reads Open: no check here, and a bracket marks the last two claims as still open. You (requester)request Q Stranger nodenever met, key K Q R + claims The node says Signed by key K Response R answers your request Q Recorded at time T Served model X The answer is right What a check shows ✓ Signaturethe holder of K signed it; not who holds K ✓ Digest bindingR's digest is sealed with Q's digest ✓ Log inclusion + receiptit is in the log; T is still the node's word Open: not shown by these checkstwin + referee only narrow it (page 11) Open: no check hereno record check says an answer is right

1What it is

In a shared inference mesh, a machine you have never dealt with serves your request and hands back an answer along with things it says about that answer.

Each check a verifier can run answers one narrow question about the record, and a pass on one says nothing about the others.

Some of the node's claims, such as which model ran and whether the answer is right, are not covered by any check on the record alone.

2Design choices

Chosen: the record carries digests of the request body and the completion body, sealed together.
Rejected: carrying the prompt and completion in the record; the digests bind them without publishing them. (AAC -05 §5.3, inference_completion)
Chosen: a signature check returns the authenticated public key and stops there; whether that key may speak for anyone is the caller's policy.
Rejected: reading a verified signature as the identity of the operator or developer the record names. (AAC -05 §3.2)
Chosen: a verifier reports each check as its own finding in a structured result.
Rejected: one overall "trusted" answer, which would hide which question was actually checked. (AAC -05 §6)
Chosen: a producer states only the assurance it reached, and a verifier re-derives it from the bytes.
Rejected: taking the node's own label for how strong its record is. (AAC -05 §5.4)

3What it shows / what it does not

This follows the Trust map in the docs, check by check.

Shows

  • Content binding: the record's fingerprint, recomputed from its bytes, matches the id it was sealed under.
  • Signature: proves the holder of a key signed the record's id.
  • Digest binding: this response digest was sealed with this request digest.
  • Inclusion in a signed checkpoint: proves inclusion: the record is in the node's log, against that checkpoint's commitment (the MMR peaks).
  • Receipt for the checkpoint: proves inclusion of the checkpoint in a Transparency Service's log. Only if that service applies a Consistency Registration Policy would a later rewrite of the node's log be refused there.
  • Twin plus referee: whether two nodes' answers to the same request agree, under weights both records say are the same; a referee can rule on one differing pair.

Does not show

  • That what the record says is true.
  • Who holds the key, or that the node the record names did the work. The key is the one the node announces: its claim.
  • That the model weights named are the ones that ran. A model name alone never counts as a match.
  • That the log holds every action, or that the time in the record is when it happened.
  • That a receipt's service agrees with the record; it sees checkpoints, never records.
  • Which model ran. Twins that serve the same wrong model agree with each other, and the shared weights are each node's own word. A referee verdict is a ruling on one pair.

4Example

A record a demo node sealed for one served inference (line 1 of the file, reformatted for reading). The record's spec_version is an earlier revision. In this demo it is signed as a COSE_Sign1 statement (in signed-statements/d4b16756….cose) whose attached payload is the whole record in JSON, with alg EdDSA (-8), CWT iss mesh-node-demo-1 and sub equal to the capsule_id, and no kid. That is not the -05 Producer Envelope, which signs the raw 32-byte Capsule ID under a kid carrying the public key (AAC -05 §3.1).

{
  "action_id": "mesh-poc/mesh-node-demo-1/db961447-9996-47c4-8137-0d5291df3438",
  "assurance": {
    "attestation_mode": "self_attested",
    "effect_mode": "confirmed",
    "ledger_mode": "standalone"
  },
  "capsule_id": "d4b16756ecf59fa7a530757a9888a0b1cedb68e4e73e738b09b7abfbc57a8df8",
  …
  "effect": {
    "effect_attestation": "gate_executed",
    "request_digest": "3e931d5f6efde26a335b082e509dee4e2635e92f4d146b62af47126dccf3ec1f",
    "response_digest": "004d18a0002e12a9c5bd63e655d8f16a8ee4e98aa7b6c364dfc74d96b8cc486e",
    "status": "confirmed",
    "type": "inference_completion"
  },
  …
  "model_attestation": {
    "compute_attestation": {
      …
      "x-mesh-poc-v1": {
        …
        "evidence_refs": {
          …
          "tee_attestation": {
            "context": null,
            "digest": null,
            "type": "tee_attestation"
          }
        },
        …
        "generation_parameters": {
          "max_tokens": 64,
          "seed": 1,
          "temperature": "0.2"
        },
        …
        "serving_provenance": {
          …
          "model_canonical_ref": "capsule-emit-poc/tiny-fixture-model:Q4_K_XL",
          "quantization": "unknown",
          "requesting_party": "unknown",
          "role": "provider",
          "served_by_node_id": "mesh-node-demo-1"
        }
      }
    },
    "model_id": "capsule-emit-poc/tiny-fixture-model:Q4_K_XL",
    …
  },
  …
  "timestamp": "2026-09-03T07:23:31.301211Z"
}
FieldTypeMeaning
capsule_idhex tstrSHA-256 of the record's JCS bytes with capsule_id removed (AAC -05 §5.1).
assuranceobjectThe producer's stated assurance; a verifier re-derives each mode.
effect.typetstrinference_completion: a served completion.
effect.request_digesthex tstrDigest of the request body as received.
effect.response_digesthex tstrDigest of the completion body as returned; required for confirmed.
effect.effect_attestationtstrWho vouches for the effect, as the producer states it.
model_idtstrThe model the node says it served: a claim, not a check.
serving_provenance.served_by_node_idtstrThe node that says it served; the node's own word.
serving_provenance.quantizationtstrRecorded as unknown here, not guessed.
generation_parametersobjectSettings the request asked for; needed to re-run it.
evidence_refs.tee_attestationobjectHardware attestation slot, empty: none was taken.
timestamptstrWhen the node says it sealed the record; the node's own clock.

Source: action-state-group/capsule-emit-mesh:ledger-checkpoint-demo/capsules.jsonl (line 1) @ 8500e254a02bd6f5e145ab2d471a0f997cf2fa5a

5Specs