# EZA-001 R001 — prepared publication handoff

The owner-supplied manifest signature verifies with Eziah release key
`CFC656D308ECD752`. All 125 frozen rc.9 files match. This kit is prepared for
clean-machine and website acceptance; it has not been published or indexed.

## What is signed

- Release: EZA-001 R001; candidate: EZA-001-R001-rc.9.
- Manifest SHA-256: `fc44b015cbf152aef4e4cc25bc0bdc6d58f6763a0af871b81795de04e32f8f3e`.
- Signer public key: `RWRS1+wI01bGz7h6vYSR4m9shqB2/q8FiIpbY8tSgDQnhNZ4qzp+0mSA`.
- Candidate ZIP SHA-256: `3062213046b50db71ddbf13160a9711a25b2e8b1dd882a3bf35e007958b22e39`.
- Signature: `MANIFEST.json.minisig`; it authenticates the exact manifest and
  signed comment, not the ZIP container or this kit's external metadata.
- `MANIFEST.json` beside the signature is an exact copy of the one in the ZIP.
- The release ZIP contains only the 125 frozen files beneath `EZA-001-R001-rc.9/`.
  Key, signature, verification evidence and acceptance metadata stay outside it.

Frozen statements that the candidate is unsigned or awaiting review describe
its freeze-time state. They have not been rewritten. Later facts appear in
SIGNATURE-VERIFICATION.json and RELEASE-ACCEPTANCE-PREPARED.json.

## Trust before running commands

Use an already trusted Minisign installation and trusted Python 3.9+ for the
read-only archive check below. Python 3.11+ is required for the candidate's
behavioral reproduction, which is a separate operation. The owner Mac's 3.9.6
Python can perform this inventory check but must not be used for that suite.

Obtain the public key and expected digests through an independently authenticated
Eziah channel. A key/digest shipped only in this kit does not establish the
publisher's identity. The owner supplied this key in the preparation conversation;
the public trust channel is still pending. Treat SHA256SUMS.txt as transfer
integrity information, not a signature over the external metadata.

The following commands are the prepared verification recipe to publish through
the trusted channel. Inspect them; they execute only trusted Minisign and
standard-library Python. They do not execute or import downloaded candidate code.

## Clean-machine check

Keep the private-key drive disconnected. Download/extract this handoff into
Downloads on the clean verification machine. The expected folder is
`~/Downloads/EZA-001-R001-Publication-001`. If your browser uses another folder,
adjust only the first `cd` path. Paste the whole block. It stops on the first
failure and refuses to overwrite an existing verification destination.

```bash
(
set -e
cd "$HOME/Downloads/EZA-001-R001-Publication-001"
shasum -a 256 -c SHA256SUMS.txt
minisign -V -P "RWRS1+wI01bGz7h6vYSR4m9shqB2/q8FiIpbY8tSgDQnhNZ4qzp+0mSA" -m MANIFEST.json -x MANIFEST.json.minisig
python3 -I -B - <<'PYVERIFY'
import hashlib, json, os, pathlib, stat, zipfile
root = pathlib.Path.cwd()
manifest = (root / "MANIFEST.json").read_bytes()
pin = "fc44b015cbf152aef4e4cc25bc0bdc6d58f6763a0af871b81795de04e32f8f3e"
assert hashlib.sha256(manifest).hexdigest() == pin, "Wrong manifest"
data = json.loads(manifest)
expected = {"MANIFEST.json": {"bytes": len(manifest), "sha256": pin}}
for row in data["files"]:
    name = row["path"]
    part = pathlib.PurePosixPath(name)
    assert name and not part.is_absolute() and ".." not in part.parts
    assert str(part) == name and "\\" not in name and name not in expected
    expected[name] = row
assert len(expected) == 125
prefix = "EZA-001-R001-rc.9/"
with zipfile.ZipFile(root / "EZA-001-R001-rc.9.zip") as z:
    names = z.namelist()
    assert len(names) == len(set(names)) == 125
    assert set(names) == {prefix + n for n in expected}
    contents = {}
    for info in z.infolist():
        assert stat.S_ISREG(info.external_attr >> 16), "Unexpected archive type"
        name = info.filename[len(prefix):]
        row = expected[name]
        assert info.file_size == row["bytes"], "Wrong archived size: " + name
        content = z.read(info)
        assert len(content) == row["bytes"]
        assert hashlib.sha256(content).hexdigest() == row["sha256"], "Wrong hash: " + name
        contents[name] = content
    assert contents["MANIFEST.json"] == manifest
destination = pathlib.Path.home() / "EZA-R001-Clean-Check-001"
destination.mkdir(mode=0o700)
candidate = destination / "EZA-001-R001-rc.9"
candidate.mkdir()
for name, content in contents.items():
    path = candidate / name
    path.parent.mkdir(parents=True, exist_ok=True)
    with path.open("xb") as f:
        f.write(content)
for name, row in expected.items():
    path = candidate / name
    assert not path.is_symlink() and stat.S_ISREG(path.lstat().st_mode)
    content = path.read_bytes()
    assert len(content) == row["bytes"] and hashlib.sha256(content).hexdigest() == row["sha256"]
assert {p.relative_to(candidate).as_posix() for p in candidate.rglob("*") if p.is_file()} == set(expected)
print("PASS: signed manifest and all 125 archived/extracted candidate files match.")
print("Candidate:", candidate)
print("No candidate code executed; no behavior suite rerun.")
PYVERIFY
)
```

Expected: Minisign verifies both signatures and the Python check reports all
125 archived/extracted files matching. Preserve the complete output and runtime
versions. A failed check blocks package execution; do not regenerate hashes or
edit the signed candidate to make it pass. These commands still need their
recorded clean-machine run before publication/indexing.

After verification, the extracted candidate's `reproduction/README.md` gives
the optional full controlled reproduction using Python 3.11+ and pinned
dependencies. Keep inputs protected between verification and execution.
Its expected manifest argument is `fc44b015cbf152aef4e4cc25bc0bdc6d58f6763a0af871b81795de04e32f8f3e`. Do not count packaging checks as
new behavior tests or new independent probes.

## Evidence and qualifications

Fixed review: 394/394 behavior groups, 26/26 schema groups, output validation
PASS. Retained public regression results remain separate: 62/62 clock, 8/8
evidence/controller, 1/1 Q8. New reviewer-authored execution probes: zero.

IR8-001 is closed for this digest. The prior wrapper's sole extra file caused
a failed inventory gate; the explicit narrow operator exception admitted review
execution and the original FAIL is preserved. Review process qualifications
and historical authorization scope remain in the included assessment and
compact reconciliation archive. Historical signing-not-authorized statements
refer to that earlier review; the owner authorized and performed signing later.

This is qualified technical acceptance, not an unqualified all-gates pass.
No independent implementation, externally authenticated execution provenance,
hostile-agent containment, independent UTC truth, physical power-loss durability,
whole-host rollback resistance or general production readiness is established.

The full 220,753,150-byte review submission is retained separately, SHA-256
`55dc98bd74fdb04f93df9abb9b3c64f7d24f4e38886dddf4be57d01f40962b50`.
The compact reconciliation is a selected evidence set, not that full submission.

## Remaining gates and site handoff

1. Record the clean-machine signed-download verification above.
2. Confirm a separate recoverable backup of the encrypted private key. A drive
   holding only the password is not a backup of the key. Keep secrets offline.
3. Establish an independently authenticated public-key publication channel.
4. Ingest the exact candidate and evidence into the existing Eziah.dev build.
   Resolve the previously flagged archive/source lookup, evidence-link and
   nested-result wiring defects against the actual site repository.
5. Check all 11 routes, download bytes/digests, signature commands, evidence
   counts and links, limits, and structured data. Retain preview noindex until
   website acceptance and final owner publication approval.
6. Complete external acceptance metadata with actual environment, inputs,
   operator help, result hashes and exact outcomes. This prepared JSON is
   unsigned and is not a final website acceptance or publication authorization.

Do not rename or modify the frozen candidate's identity to remove rc.9. R001's
publication metadata points to those exact bytes. Do not expose private signing
keys or passwords through the site or archives. No deployment is performed by
opening this kit. After R001 is public, extract the internal Eziah Accord Release
Standard before starting EZA-002.

Minisign command and format reference: https://jedisct1.github.io/minisign/
