# pdfhell audit pack

This ZIP is a complete, self-describing record of one PDF Hell run. It
contains every PDF the model was asked to read, every answer key, the
raw model output, and a tamper-evident manifest.

## What's in this pack

- manifest.json — Run metadata + SHA-256 of every file in this ZIP.
- run.json — Full run report (per-case scores, model outputs).
- run.xml — JUnit XML (renders in CI dashboards).
- cases/*.pdf — The adversarial PDFs the model was tested against.
- cases/*.json — The answer keys + per-case metadata.
- README.txt — This file.

## How to verify

The manifest contains a SHA-256 for every file in this ZIP. To verify
nothing was edited after delivery:

  unzip -p audit-pack.zip manifest.json | jq .files
  sha256sum cases/*.pdf cases/*.json run.json run.xml README.txt

Each hash in the manifest must match the file's actual SHA-256.

## How to reproduce

The manifest records the exact pdfhell command. To regenerate
byte-identical PDFs and re-run the same model:

  uvx pdfhell run --model anthropic:claude-sonnet-4-6 --suite smoke

pdfhell uses Canvas(invariant=True) on every generator so PDFs are
byte-identical across runs with the same seed.

## Scope

pdfhell 0.1.0, suite smoke, model anthropic:claude-sonnet-4-6. Generated
2026-05-16T19:39:55.595564+00:00. 3 cases, 3/3 passed (100%). See
manifest.json for per-trap breakdown.
