# Verify Article 11 Yourself

## Independent IRONLEDGER verification guide

CC0 1.0. Updated 2026-07-13.

Article 11's assurance model is simple: trust is optional; verification should be inspectable. The public verifier exposes chain metadata while deliberately withholding semantic descriptions, private evidence, and hash preimages.

## What the public surface proves

`GET /api/chain/status` reports the live canonical-spine verdict and the documented strict-table seam.

`GET /api/ironledger/strict-table` returns metadata only: block identifiers, timestamps, stored hashes, predecessor hashes, event types, node identifiers, and canonical/link flags. Its aliases are `/api/chain/strict-table` and `/api/ironledger/rows`.

From those fields, an auditor can:

1. Start at the latest canonical head.
2. Follow each `prev_hash` to its predecessor.
3. Confirm that the walk reaches the documented genesis hash without a dangling pointer.
4. Independently observe the disclosed strict all-row seam at block 153.
5. Compare the endpoint's verdict with the auditor's own topology walk.

## Privacy boundary

Public ledger routes do not return `description`, `hash_input`, `hash_preimage`, or equivalent raw semantic fields. Requests for description, preimage, raw, or field-selection variants are refused with HTTP 403 and `public_scope: metadata_only`.

That boundary is intentional. A commitment hash can remain independently link-verifiable without republishing the underlying narrative. Public-source factual summaries, when appropriate, belong in separately reviewed disclosure pages—not in raw ledger descriptions or preimages.

## What the public surface does not prove

Metadata-only verification proves stored-link continuity and exposes the project's declared canonical/strict status. It does not let a public caller recompute a semantic record from its preimage, because that preimage is not published. It also does not prove that the underlying narrative is true merely because a hash exists.

External timestamp status is reported separately. Treat a pending aggregation as pending; do not describe it as confirmed Bitcoin finality.

## Current caveats

- The canonical spine and the strict all-row table are different views. The strict table has a documented seam at block 153; the canonical spine remains the authoritative chain-status view.
- Early rows include legacy hash formats and recipes. They are disclosed as legacy history, not silently rewritten.
- `/api/v1/certify` remains preview-only unless its response explicitly reports a ratified chain anchor.
- D1 is an operational database. Public presentation controls do not make it physically immutable; integrity claims depend on the recorded hash links, receipts, anchors, and disclosed verification limits.

## Endpoint reference

```text
GET /api/chain/status                    canonical-spine status and caveats
GET /api/ironledger/verify               legacy strict verdict plus canonical status
GET /api/ironledger/strict-table         metadata-only topology
GET /api/chain/strict-table              metadata-only alias
GET /api/ironledger/rows                 metadata-only alias
GET /api/ironledger/latest               recent metadata-only rows
GET /api/chain/block/{id}                one metadata-only row
GET /api/anchor/latest                   current external-anchor status
```

The companion verifier at `tools/a11_independent_chain_verifier.py` performs the public metadata topology checks described here. Read it before running it; it talks only to public endpoints.

Verify what the public surface can prove, and name what it cannot. That distinction is part of the proof.
