# Pre15 Stage0 Execution Evidence

## Scope

B01 establishes the only Pre15 runner interface and the evidence contract used
by later gates, builds, directed tests, and smoke runs. It does not modify
`src/**`, run the full feature suite, or convert host parser results into KLD
runtime claims.

## Entrypoints

```sh
timeout -k 10 240 tests/pre15/run-host.sh CASE
timeout -k 30 1200 tests/pre15/run-build.sh zstdio0
timeout -k 30 1200 tests/pre15/run-build.sh zstdio1
timeout -k 30 1200 tests/pre15/run-qemu.sh CASE
timeout -k 30 1500 tests/pre15/run-smoke.sh final-four-codec
```

Cases are discovered as exact files under `tests/pre15/cases/`; no shared case
registry or historical result runner is consulted. `run-build.sh` reports a
Linux invocation as `INFRA_BLOCKED` because `build.sh` requires a native
FreeBSD host.

## Evidence

Set `PRE15_EVIDENCE_ROOT` to a new evidence parent. Every invocation creates a
unique run directory and never overwrites an earlier run. `manifest.json`
conforms to `tests/pre15/EVIDENCE-SCHEMA.json` and records exact argv, DUT and
source identities, worktree diff hash, fixture/module hashes, timestamps,
deadline, exit code, target marker, status, cleanup, and raw-output paths.

The only case statuses are `PASS`, `DUT_FAIL`, `RUNNER_FAIL`,
`INFRA_BLOCKED`, `STOP`, and `NOT_RUN`. A nonzero guest command without a target
marker is not a DUT failure. Cleanup failure always changes the run to
`RUNNER_FAIL`.

## Ownership

The runner records each owned process, path, forwarded port, SSH ControlMaster,
guest mount, md unit, loaded EROFS KLD, and base image before use. Cleanup runs
in reverse order and refuses to remove paths outside the current run directory.
QEMU always writes to a fresh overlay. The base image is read-only input for the
runner and its SHA256 must remain unchanged.

Mount, md, and KLD cleanup applies only to resources explicitly registered by
the current run. Kernel ZSTDIO is a kernel option, not an unloadable dependency.

## B01 Controls

- `B01-runner-selftest`: known-good, target-marked DUT mismatch, pre-target
  command failure, SSH failure, QEMU early exit, timeout, owned PID cleanup, and
  deliberate cleanup-boundary failure.
- `B01-g3-equivalence`: verifies the two archived script identities, compares
  their source/artifact inventories with the stable helper, and repeats stable
  generation.
- `TC162-xattr-legacy`: verifies checksum-valid legacy primary, explicit plain,
  packed, and metabox prefix carriers plus exact single-field `EINTEGRITY`
  negatives.

The authoritative B01 and initial gate verdicts are recorded under
`planning/pre15/evidence/` after execution from a committed B01 tree.
