# Retained Evidence Drill wire format

The packet is a closed directory with no symlinks. `manifest.json` contains:

- `profile`: `glyph.retained-evidence-drill-packet/0.1-experimental`;
- `root`: the canonical SHA-256 of the profile and ordered member descriptors;
- `members`: ASCII-ordered `{path, byte_length, sha256}` descriptors.

`manifest.json` is not itself a member. Every other regular file is a member.
Paths are lowercase ASCII, relative, slash-separated, and contain no empty,
dot, or parent segments. The single frozen exception is `README-FIRST.md`.
The packet permits at most 160 members, 4 MiB per member, 32 MiB in aggregate,
and 12 path segments.

The launcher requires the packet directory name to equal the root without the
`sha256:` prefix. It validates the complete member set and all member bytes
before importing a verifier. The manifest has one exact pretty-printed byte
representation. Every JSON member is decoded as UTF-8 and rejected if any
object contains duplicate member names.

The public distribution includes a deterministic POSIX ustar archive and a
SHA-256 checksum file. The archive is an acquisition wrapper; the extracted
directory and its manifest remain the verification boundary.

The drill report has an exact closed shape. Each state contains its frozen
source report, the unchanged transaction digest, a closed judgment, and the
judgment digest. Deltas are derived from canonical judgment leaves. The report
contains no timestamp.
