I read this as execution of the complete Phase 2 postfreeze qualification - I’ll inspect the sealed inputs, verify the immutable bundle, run every sealed gate in hostile conditions, clean all runtimes, and emit an independently sealed postfreeze receipt or exact fail-closed diagnostics.


The sealed inputs and prior runtime are now captured. I’m at the destructive boundary: the v30 prefreeze root is mode-immutable and the supplied runtime exists; I’m validating its SEAL/inventory formulas and taking full bundle/wheelhouse snapshots before removing that runtime, as required.


The mandatory hostile independent gate failed closed with fully nested diagnostics: the sealed bootstrap reached installed final-state verification, which rejected the fresh runtime because its portable bytes differ from the seal. I’m checking whether this is an interpreter/toolchain mismatch versus a candidate defect; I will not alter the frozen candidate or rerun Phase 1.


The mismatch is confirmed as a candidate defect, not a toolchain mismatch: both sealed portable inventories include `direct_url.json`, whose absolute wheel URL changes during self-rehydration; both distributions therefore fail portable inventory and RECORD-projection parity. The prefreeze and wheelhouse snapshots remain byte-identical, tampered postfreeze seals are rejected, and I’m completing the immutable fail-closed receipt/cleanup verification.


I read this as Phase 2 qualification completion - qualification finished fail-closed with sealed diagnostics and cleanup.

**FAIL-CLOSED**

Candidate: `28e9533af986f5c2f42f77130be485a4f41936f49c065d0a13392aa31863a955`

Failure chain:

```text
TASK26_INDEPENDENT_VERIFY_FAIL
  -> TASK26_BOOTSTRAP_FAIL
    -> TASK26_REHYDRATION_FAIL
       reason: rehydrated runtime differs from sealed portable bytes
```

Root cause: sealed portable inventories include path-dependent `direct_url.json` files. Rehydration changes their absolute wheel URLs, breaking both installed-inventory and portable RECORD-projection parity. Therefore `TASK26_INDEPENDENT_CANDIDATE_PASS` was not emitted.

Immutable fail-closed receipt:

- Root: `/home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-final-state-v7-v30-postfreeze-receipts-st_01a01920`
- Receipt: `FAIL-CLOSED.json`
- Receipt file SHA256: `235b1518c2184836b2ae56be1778c4d3a35c7ac201c3083d62581b682cce1e1d`
- SEAL: `SEAL.json`
- SEAL file SHA256: `7b0ae157e377404085d602aff9931ae3991a9f1d1bf7ae606522a03aab1e644b`

Verified:

- Prefreeze bundle unchanged and immutable.
- Wheelhouse byte-identical before/after.
- Postfreeze-seal tampering rejected.
- Lossless nested stdout/stderr diagnostics preserved.
- Original, rehydrated, hostile, qualification, and tamper runtimes removed.
- No associated process, FD, writable, or symlink residue.