# h33-attestation v0.1.0 — Trustless Decision Attestation issuer + verifier

The other half of the verifier loop. v0.1 produces signed `tda_v1`
attestations against enterprise bundles and lets any third party verify
all three artifacts agree without contacting H33.

> *"A third party downloads: Enterprise bundle · TDA v1 attestation ·
> Verifier · and can prove all three agree without contacting H33."*
> — Eric LOCKED June 4 2026

This release contains the binaries that satisfy that success criterion.

## What's in this release

| File | Purpose |
|---|---|
| `h33-issue-attestation-v0.1.0-aarch64-apple-darwin` | Issues a signed `tda_v1` attestation |
| `h33-verify-attestation-v0.1.0-aarch64-apple-darwin` | Verifies all three artifacts agree |
| `sample-attestation-claim-84711.tda_v1.json` | A real signed attestation against the canonical-continuity tenant |
| `sample-verify-output.txt` | What you should see when you run the verifier against the sample |
| `release_manifest.json` | Hashes + build environment + capabilities + deferrals |
| `README.md` | This file |

You also need:
- the canonical-replay verifier — `h33-verifier v0.1.0` at https://h33.ai/verifier/
- an enterprise bundle — for the sample, the canonical-continuity tenant bundle at https://h33.ai/workspace/portability/bundles/

## Quick start — close the loop in eight commands

```bash
# 1. Fetch the three artifacts: bundle + attestation + verifier
curl -O https://h33.ai/attestation/v0.1.0/h33-verify-attestation-v0.1.0-aarch64-apple-darwin
curl -O https://h33.ai/attestation/v0.1.0/sample-attestation-claim-84711.tda_v1.json
curl -O https://h33.ai/verifier/v0.1.0/h33-independent-canonical-replay-v0.1.0-aarch64-apple-darwin
curl -O https://h33.ai/workspace/portability/bundles/tenant_insurance_claim_44962d9b-25f5-5622-bd9a-98d5580bb8a2_enterprise_bundle.tar.gz

# 2. Make the binaries executable
chmod +x h33-verify-attestation-v0.1.0-aarch64-apple-darwin
chmod +x h33-independent-canonical-replay-v0.1.0-aarch64-apple-darwin

# 3. Run the loop
./h33-verify-attestation-v0.1.0-aarch64-apple-darwin \
    --attestation sample-attestation-claim-84711.tda_v1.json \
    --bundle tenant_insurance_claim_44962d9b-25f5-5622-bd9a-98d5580bb8a2_enterprise_bundle.tar.gz \
    --verifier-binary h33-independent-canonical-replay-v0.1.0-aarch64-apple-darwin
```

You should see:

```
✓ Issuer fingerprint internally consistent
· No --trusted-issuer-fingerprint supplied (v0.1 dev posture — accept any)
✓ Canonical payload hash matches declared value
✓ All 3 PQ signatures verify (ML-DSA-65 · FALCON-512 · SLH-DSA-128f)
✓ Bundle hash anchor matches
✓ Verifier binary hash anchor matches
✓ Decision decision_loan_84711_approval replays to SACRED state_id
✓ Decision decision_loan_84711_recommendation replays to SACRED state_id

OVERALL: PASS ✓ — bundle + attestation + verifier all agree. No H33 contact required.
```

That output is the close of Eric's success criterion. You did not contact
H33 at any step.

## Issue your own attestation

To attest a custom decision set on a custom bundle:

```bash
./h33-issue-attestation-v0.1.0-aarch64-apple-darwin \
    --bundle path/to/enterprise_bundle.tar.gz \
    --decision-ids decision_a,decision_b,decision_c \
    --verifier-binary path/to/h33-independent-canonical-replay \
    --output my-attestation.tda_v1.json \
    --signing-key-dir ~/.h33/attestation-keys
```

On first run, the issuer generates a fresh PQ keypair into the
`--signing-key-dir`. Subsequent runs reuse the same key, which is what
keeps the **determinism property** below intact.

## Determinism (Eric LOCKED constraint)

> *"Given: identical bundle · identical decision set · identical
> verifier version · identical signing key, the attestation payload
> (excluding timestamp/signature fields) should be byte-identical."*

To test:

```bash
# Issue twice with the same inputs and the same --signing-key-dir
./h33-issue-attestation-v0.1.0-aarch64-apple-darwin \
    --bundle bundle.tar.gz --decision-ids decision_a \
    --verifier-binary verifier \
    --output a.json --signing-key-dir ~/.h33/keys --fixed-issued-at-ms 0

./h33-issue-attestation-v0.1.0-aarch64-apple-darwin \
    --bundle bundle.tar.gz --decision-ids decision_a \
    --verifier-binary verifier \
    --output b.json --signing-key-dir ~/.h33/keys --fixed-issued-at-ms 0

# Strip pq_signatures (which contain non-deterministic signature bytes)
# and compare the canonical payloads
python3 -c "
import json, hashlib
def canon(p):
    d = json.load(open(p))
    d['pq_signatures'] = {}
    return json.dumps(d, sort_keys=True, separators=(',', ':')).encode()
b1 = canon('a.json')
b2 = canon('b.json')
print('match:', b1 == b2)
print('sha3 :', hashlib.sha3_256(b1).hexdigest())
"
```

Both runs produce a byte-identical canonical payload + byte-identical
SHA3. That's the determinism contract.

## Six checks the verifier performs

| # | Check | Failure mode |
|---|---|---|
| 1 | Issuer fingerprint internal consistency | Embedded public keys don't hash to the published fingerprint → corruption or forgery |
| 2 | (Optional) Trusted-issuer fingerprint match | Caller passed `--trusted-issuer-fingerprint` and the attestation issuer doesn't match → trust-anchor mismatch |
| 3 | Canonical payload hash | Re-derived payload bytes don't hash to the value the signatures cover → JSON manipulation |
| 4 | Three PQ signatures (ML-DSA-65 + FALCON-512 + SLH-DSA-128f) | Any signature fails to verify → forged or corrupted attestation |
| 5 | Bundle hash anchor | SHA3-256 of supplied bundle ≠ attestation's `bundle.bundle_hash` → wrong bundle or tampering |
| 6 | Verifier binary hash anchor | SHA3-256 of supplied verifier ≠ attestation's `verifier.binary_hash` → wrong verifier build |
| 7 | Per-decision SACRED state_id replay | The canonical replay verifier doesn't produce the pinned SACRED state_id → bundle drift, irreproducibility, or wrong verifier |

Any single check failing flips OVERALL to FAIL. Each check is structurally
observable.

## What this release does NOT do (Q0.5)

The verifier surfaces structural verdicts. It never judges whether the
attested decisions were wise, correct, fair, lawful, or compliant. Those
judgments belong to carriers, auditors, regulators, and acquirers.

## Honest v0.1 caveats

- **Multi-platform:** darwin-arm64 binaries only. Linux + darwin-x86 in v0.2.
- **Dev signing key:** the issuer generates a fresh PQ keypair per `--signing-key-dir`. Production attestations require a v0.2 key ceremony — until then the attestations have demonstration value, not legal weight.
- **No release signing:** the binaries themselves are hash-anchored only; PQ-signed releases in v0.2.
- **No revocation registry:** v0.1 attestations cannot be revoked once issued. v0.2 adds a revocation surface.
- **No subscription cadence:** v0.1 attestations are point-in-time. v0.2 adds periodic re-attestation infrastructure.

## Hashes (for the lazy)

```
h33-issue-attestation-v0.1.0-aarch64-apple-darwin     132eb65f9193a7ba6e86f01badea68501ec0bf4c16262b4e7c1e312e19c3e254
h33-verify-attestation-v0.1.0-aarch64-apple-darwin    bc45c6b83d16fd29e2f08f95fb25ad8391f45e3ca1a1c696db660e29ccd0bc77
sample-attestation-claim-84711.tda_v1.json            2f733cdc2b6921111a038214361279799a7b6eaed6d57606154c65519a0dc3d5
sample-verify-output.txt                              c30e46230c0601b28cb1929941d4d88c4880b02a29bf68a14a04e288b41f42fb
```

— h33-attestation v0.1.0 · 2026-06-04
