Independent verification
draft-hillier-scitt-arp-03 — Attestation Reconciliation Protocol
What this is
Two executable checks performed on the conformance evidence of the Attestation Reconciliation Protocol, defined in draft-hillier-scitt-arp, together with the artifacts they produced.
The first reproduces the author's existence-oracle conformance run on a third operating environment. The second addresses a coverage gap the author had declared in his own run record: that the deterministic CBOR encoder used to produce the digests came from the implementation under test, so a map-ordering violation would be invisible to it. A property verifier was written directly from RFC 8949 to check that encoder from outside.
The checks were performed on the pre-filing text and conformance tree the author circulated off-list, and the findings were returned to him on 11 August 2026, before the revision was filed. The artifacts below were hash-pinned and anchored before that delivery.
Result
Reproduction. The existence-oracle class was run on Linux under Python 3.12.3, against the author's Linux 3.11 and Windows 3.13.14 records. The runner reports PASS for the executed decidable rows. Fixture, reference, runner and vectors digests all match the published record, and verdicts match row by row. The loopback timing observation produced a standardised difference of 0.0303 over 120 samples per arm; per the author's own record, that observation is not part of the verdict.
Encoder independence. A property verifier written from RFC 8949 Section 4.2.1, scoped to the encoding subset the protocol uses and independent of both the reference encoder and of any library, checks shortest-form heads, bytewise-lexicographic ordering of map keys on their encoded form, full consumption of the encoding, and a semantic round-trip on every item. Over a corpus of 32 — the structures the class exercises plus adversarial cases at the integer head boundaries, multibyte strings, empty and nested containers, and mixed-type map keys — the reference encoder passes 32 of 32.
Cross-checked against cbor2 6.1.4 in canonical mode, the two agree byte-for-byte on 30 of 32. The two divergences are the key pair {100, -1} and its nested form, where cbor2 applies the length-first ordering of RFC 8949 Section 4.2.3 rather than the Section 4.2.1 ordering the protocol pins. Which is the finding: importing the obvious library in its canonical mode would have shipped precisely the invisible map-ordering violation the declared gap describes.
The gap narrows rather than closes. The property verifier covers the encoding subset the protocol uses, not all of Section 4.2.1: floats and indefinite-length items are outside the reference encoder's domain and are not checked. That boundary is stated in the script itself and printed in its output.
Files
Every file below is listed in SHA256SUMS. Download the whole set into one directory and run sha256sum -c SHA256SUMS to confirm integrity; the manifest lists plain file names, with no paths.
- arp03-encoder-crosscheck.pyThe property verifier and cross-check. Requires cbor2; no other dependency. Records the SHA-256 of the reference source it was run against.
- arp03-encoder-crosscheck-output.txtVerbatim output of the run, including the reference source digest and the two divergent encodings in hex.
- repro_existence_oracle_run_linux312.jsonRun record of the reproduction, emitted by the author's runner without modification.
- SHA256SUMSManifest of the three artifacts.
- SHA256SUMS.otsOpenTimestamps proof of the manifest, anchoring the package to block 962042.
- LICENSEBSD-3-Clause for the property verifier, CC BY 4.0 for the recorded output and the run record, with the digest of each.
How to re-verify
Route 1 — the encoder cross-check
Place arp03-encoder-crosscheck.py beside the protocol's reference implementation and run it. The script hashes the reference source and prints that digest, so a run can be tied to the exact bytes it was checked against; the digest recorded in the output above identifies the source used here.
python3 arp03-encoder-crosscheck.py
Exit 0 means every check passed and the set of divergences against cbor2 matched the declared expectation exactly. Any divergence outside that set, or a declared divergence that fails to appear, exits non-zero.
Route 2 — the reproduction
The reproduction requires the author's conformance tree. It is not a published artifact: the protocol's own changelog records the decision not to claim a reference implementation until one exists and can be cited by repository and commit. The run record above is therefore verifiable against the digests it carries — fixture, reference, runner and vectors — rather than by re-running it from this page.
Route 3 — nothing beyond SHA-256
Confirm the manifest, then confirm the manifest's anchor:
sha256sum -c SHA256SUMS ots verify SHA256SUMS.ots
Provenance and limits
The reproduction ran the author's endpoint, not an independent reading of his text. It establishes that the decidable rows of the class pass on a third platform, with digests and verdicts identical to the published record. It does not establish specification adequacy: that remains untested until someone who is not the author passes the class against an implementation of their own.
One deviation is declared. The specification source file the runner hashes was not among the circulated attachments, so the runner's path was satisfied with a stand-in that identifies itself as such. The spec_source_sha256 field of the run record above therefore hashes that declaration and should be disregarded; every other digest is comparable.
The encoder cross-check is independent of the implementation under test in the sense that matters — the property verifier was written from the RFC, not derived from the encoder it checks — but it was written by the same reader who reproduced the run, and it was reviewed before delivery rather than by a third party.
The artifacts on this page were anchored on 11 August 2026 and delivered to the author the same day. The revision was filed on 13 August 2026. The order is established by the anchor, not by this statement.
Source
Produced by Tiago Pinto, Portugal, August 2026. Code is BSD-3-Clause. This page is served from the author's own server, in static HTML, without JavaScript, without analytics, without cookies, without external dependencies.