FROZEN PACKAGE — REPRODUCE OR REFUTE

Attack Kit

The homepage says the evidence is public. This page hands it to you.

One frozen evidence package. Two commands. If the published identities do not reproduce, that is a break — file it and it becomes part of the public record.

1. Get the frozen package (EXT-001)

Claim under test: the raw bytes of OpenZeppelin Ownable.sol at commit 932fddf (v5.0.0) have SHA-256 38578bd7…0cb81 (3,102 bytes) — and QPF's own verification identity for that claim can be recomputed from the published files alone. Scope: content identity only. Not a statement about OpenZeppelin security or audit status.

mkdir qpf-attack && cd qpf-attack
for f in verify.py pin.json manifest.json artifact.bin receipt.json expected-result.json; do \
  curl -fsSO https://quantumpiforge.com/attack-kit/EXT-001/$f; done
python3 verify.py

Requires only Python 3.8+, standard library. No Node.js, no git, no clone, no wallet. verify.py also independently re-fetches the artifact from GitHub and compares it against the packaged bytes.

2. What a pass looks like

=== SUMMARY ===
ALL CHECKS PASSED

  qpfv0    qpfv0:44a9b8cfbcd6eb3dfc83e93b1312f4511a4d42de77cd24afcea198bb424f9db8
  qpfpkg0  qpfpkg0:54f7af2c1ab97709f0813815036bcde62bfb3165107426a0f6a952d9c97cb1c2

A pass means: the published package is internally consistent and QPF's derivation algorithm (JCS RFC 8785 canonicalization + SHA-256) reproduces both published identities from the frozen bytes.

A pass does not mean: QPF is secure, the token is valuable, or any protocol feature is authorized. Mint, staking, LP, and bridge remain not authorized.

A mismatch means: a break. Record the output, file it (link below). It will be published either way.

3. The two identities, precisely

qpfv0 is timestamp-stable: re-running QPF Level 0 on the same artifact + receipt yields the same qpfv0 even though the new result carries a fresh timestamp.

qpfpkg0 binds the complete frozen package byte-for-byte, including the published expected-result.json. Re-running verification regenerates the result with a new timestamp and therefore legitimately derives a different package id — that is not a failed check. To confirm qpfpkg0, hash the published result file; verify.py does exactly this.

4. Known residuals

File a break
Open a GitHub issue with your verify.py output. Breaks are published, not buried.
Full verification artifact
The complete chain: artifact → evidence → verification → result → package, with dates and scope.

Package location in source: docs/outreach/EXT-001/ (served from deploy/attack-kit/EXT-001/ — the files are byte-identical copies; both paths carry the frozen contents, and any change invalidates the published identities).