# Conformance board

Every outside implementation we can run, scored against one pinned corpus

Generated from the board data; corpus agent-evidence-vectors 0.29.3, results of 2026-10-29.

<!-- GENERATED by tools/gen_board.py from data/board.toml and data/board-results.json; edit the data, not this file. -->

Each row runs an outside implementation's own code on the saved records of [agent-evidence-vectors](https://pypi.org/project/agent-evidence-vectors/) 0.29.3. Our CI re-runs every score on a schedule and whenever the implementation's default branch moves, so a verdict at a new upstream commit appears here without anyone asking for it. Pass means the harness executed every vector and none failed. Fail means it executed every vector and some failed. Not runnable means the implementation could not be run to completion on that corpus, and the cell says why.

A verdict is kept only when the same adapter first passes two controls: the corpus's reference canonicalizer must pass every vector, and a deliberately wrong canonicalizer must fail the ten vectors the corpus expects it to fail. For the anchor stream the control is that the runner reproduces the corpus's own recording of a published verifier tag on every member. A failure in a row below therefore comes from the implementation, not from the adapter or the harness. Each implementation's declared scope is printed beside its verdict. A vector outside the scope an implementation declares is a difference of profile, and the row says so rather than hiding it.

<a id="rfc-8785-canonical-bytes"></a>

## RFC 8785 canonical bytes

Corpus `vectors-a2a-jcs-v01`, target `rfc8785`, 53 vectors. One JSON value to its RFC 8785 canonical UTF-8 bytes: key order, string escapes, number spelling, literals. A function that raises on a value is a refusal.

| implementation | declared scope | at the pinned commit | at the default-branch head | failing vectors at the pin | runs |
|----|----|----|----|----|----|
| [MolTrust AAE](https://github.com/MoltyCel/moltrust-api) | app/signature.py canonicalize: RFC 8785; integers beyond 2^53-1 are refused by design | **pass** (53 of 53) at [`1cd28477`](https://github.com/MoltyCel/moltrust-api/commit/1cd28477ebdfa7af52efbd1538472df0b77d4d04) (the pin) | **pass** (53 of 53) at [`1cd28477`](https://github.com/MoltyCel/moltrust-api/commit/1cd28477ebdfa7af52efbd1538472df0b77d4d04) (the pin) | none | [run](https://github.com/probityai/agent-evidence/actions/runs/40802484844) |
| [Agent Passport System (APS)](https://github.com/aeoess/agent-passport-system) | src/core/canonical-jcs.ts canonicalizeJCS: strict RFC 8785; undefined and lone surrogates are refused | **pass** (53 of 53) at [`f95c9168`](https://github.com/aeoess/agent-passport-system/commit/f95c9168187cbac0493099fe4a7cddaff653bf39) (the pin) | **pass** (53 of 53) at [`f95c9168`](https://github.com/aeoess/agent-passport-system/commit/f95c9168187cbac0493099fe4a7cddaff653bf39) (the pin) | none | [run](https://github.com/probityai/agent-evidence/actions/runs/40802484844) |
| [Horizon (conduct walk)](https://github.com/ogasurfproject-jpg/horizon-shield) | rfc8785() in a2a_conduct_walk.py: RFC 8785 for the values an agent card holds; it raises NotReproducible for anything it would have to guess at | **pass** (53 of 53) at [`175066c1`](https://github.com/ogasurfproject-jpg/horizon-shield/commit/175066c171504ebfe76ea5e34230bec8a8ece167) (the pin) | **pass** (53 of 53) at [`5d6fce79`](https://github.com/ogasurfproject-jpg/horizon-shield/commit/5d6fce79849128051aca4a875fe532102e27ae28) | none | [run](https://github.com/probityai/agent-evidence/actions/runs/40802484844) |
| [PIC (pic-standard)](https://github.com/pic-standard/pic-standard) | pic_standard.canonical.canonicalize: PIC-CJSON/1.0, RFC 8785 as the baseline plus PIC-specific rules; the profile is frozen, so a vector where the profile differs from plain RFC 8785 is a profile difference the project declares | **pass** (53 of 53) at [`6856f362`](https://github.com/pic-standard/pic-standard/commit/6856f36267a9feb56e8c3deb334e9293fc4258dd) (the pin) | **pass** (53 of 53) at [`6856f362`](https://github.com/pic-standard/pic-standard/commit/6856f36267a9feb56e8c3deb334e9293fc4258dd) (the pin) | none | [run](https://github.com/probityai/agent-evidence/actions/runs/40802484844) |
| [REMORA](https://github.com/darklordVirtual/REMORA-research) | integrations/horizon55/canon.py jcs: RFC 8785 for objects, arrays, strings, integers within 2^53-1, true, false and null; floats are refused at parse time by its own profile | **fail** (42 of 53); inside its declared float-free subset **39 of 39** at [`76bebaaf`](https://github.com/darklordVirtual/REMORA-research/commit/76bebaafc0eabeef6efa49a35531a0f190b770e9) (the pin) | **fail** (42 of 53); inside its declared float-free subset **39 of 39** at [`76bebaaf`](https://github.com/darklordVirtual/REMORA-research/commit/76bebaafc0eabeef6efa49a35531a0f190b770e9) (the pin) | 11: `A5-001`, `A5-002`, `A5-006`, `A5-007`, `A5-008`, `A5-010`, `A5-011`, `A5-012`, `A5-013`, `A5-015`, `A6-005` | [run](https://github.com/probityai/agent-evidence/actions/runs/40802484844) |

<a id="anchors-stream-verification"></a>

## ANCHORS stream verification

Corpus `vectors-anchor-stream`, target `anchors-verify`, 34 vectors. An append-only anchor stream and its digest sidecar, with every platform byte pinned. Scores the verdict and the stop reason.

| implementation | declared scope | at the pinned commit | at the default-branch head | failing vectors at the pin | runs |
|----|----|----|----|----|----|
| [AOS catalog](https://github.com/aos-standard/catalog) | anchors_verify.py: the ANCHORS stream and sidecar verifier; the corpus was cut at the anchors-verify-v0.4 tag and the verifier has moved since | **fail** (31 of 34) at [`9980aab3`](https://github.com/aos-standard/catalog/commit/9980aab3db85db18cb82d6168f9f3de7c9cd7886) (the pin) | **fail** (31 of 34) at [`5db6df1d`](https://github.com/aos-standard/catalog/commit/5db6df1da260917a6f9740f5f07a7f35b7a7d48c) | 3 members, 3 of them under clauses the corpus marks proposed because the verifier's contract text leaves them open: ans-c-3: expected VERIFY FAILED (exit 1), observed VERIFY PARTIAL (exit 3) VERIFY PARTIAL: lines=24 digests=18 witness_repo=aos-standard/catalog; ans-c-3: expected VERIFY FAILED (exit 1), observed VERIFY PARTIAL (exit 3) VERIFY PARTIAL: lines=24 digests=18 witness_repo=aos-standard/catalog; ans-c-9: expected VERIFY FAILED (exit 1), observed VERIFY FAILED (exit 1) position binding at line 19: names no witness repository | [run](https://github.com/probityai/agent-evidence/actions/runs/40802484844) |

<a id="no-entry-point-that-takes-the-corpus"></a>

## No entry point that takes the corpus

These implementations were read at the pinned commit and have no command that can run a corpus of ours. The row names the tree that was read.

| implementation | pinned commit | tree read | why it is not runnable |
|----|----|----|----|
| [Frequency](https://github.com/altrudev/Frequency-Federation-Review) | [`dabb76d5`](https://github.com/altrudev/Frequency-Federation-Review/commit/dabb76d5a66cbfcc4c1dd5b194bf86e26f32815f) | [tree](https://github.com/altrudev/Frequency-Federation-Review/tree/dabb76d5a66cbfcc4c1dd5b194bf86e26f32815f) | The public repository is a review capsule whose only entry point replays the APS and PriorSeal fixtures; its canonical-value function is private to that adapter, and its capsule records the formal run as not run pending scope confirmation. |
| [Microsoft Agent Framework](https://github.com/microsoft/agent-framework) | [`fc3c3c07`](https://github.com/microsoft/agent-framework/commit/fc3c3c0789378d6902293ec9a5fac8911dce566a) | [tree](https://github.com/microsoft/agent-framework/tree/fc3c3c0789378d6902293ec9a5fac8911dce566a) | The tree has no canonicalizer, record verifier or conformance entry point that takes a vector file; its verify-samples tool checks sample programs, not evidence records. |

<a id="not-scored-on-this-board"></a>

## Not scored on this board

The board's publication rules hold these implementations out of the tables above. They are listed so the board covers the field it names.

| implementation | pinned commit |
|----|----|
| [Microsoft agent-governance-toolkit (AGT)](https://github.com/microsoft/agent-governance-toolkit) | [`1b680536`](https://github.com/microsoft/agent-governance-toolkit/commit/1b6805366554cc0ed8d8b8453ed745fff98fd755) |
| [Jans TRACE producer](https://github.com/JanssenProject/jans) | [`c1609a1f`](https://github.com/JanssenProject/jans/commit/c1609a1fb65161f7bf08b3a1b33fa6368759145a) |

<a id="verified-by-probity"></a>

## Verified by Probity

Verified by Probity (github.com/probityai/probity). A score on this board is our CI running an outside implementation against the pinned corpus. It is not the badge. The badge is granted to a project, never self-declared, recorded in the grant ledger of agent-evidence-vectors, and re-checked at every release; the rules are on the [Verified by Probity page](https://github.com/probityai/agent-evidence-vectors/blob/main/docs/VERIFIED-BADGE.md). No row on this board carries it.

To run the same corpus in your own CI, pin the package:

``` bash
uv add agent-evidence-vectors==0.29.3
pip install agent-evidence-vectors==0.29.3
```

<a id="add-an-implementation"></a>

## Add an implementation

Add one entry to [`data/board.toml`](https://github.com/probityai/probityai.github.io/blob/main/atlas/data/board.toml): the repository, a pinned commit, the file and function that take the corpus, and its declared scope. The [workflow](https://github.com/probityai/probityai.github.io/blob/main/.github/workflows/ci.yml) scores it on the next run. To run one row by hand, see [`tools/run_board.py`](https://github.com/probityai/probityai.github.io/blob/main/atlas/tools/run_board.py). The packaged corpus runs in your own CI with the [agent-evidence-vectors Action](https://github.com/probityai/agent-evidence-vectors).

Each verdict has a row in the [claim ledger](claims.md).

[HTML view](board.html) | [Agent guide](llms.txt)
