I read this as a read-only release audit - I’ll trace the V14 r9 identity, authority, registry, recovery, launch targets, and rehearsal isolation end to end, then return a single evidence-backed PASS/FAIL without executing any operational path.


## Verdict: FAIL — DO NOT AUTHORIZE

The sealed release is deterministically non-launchable, while its rehearsal bypasses the failing boundary.

### Blocking evidence

- `sealed-target.json` selects these wheels:
  - `task-v14r9-candidate/artifacts/build-1/hermes_agent-0.17.0-py3-none-any.whl`
  - `task-v14r9-candidate/artifacts/build-1/physique_checkin_cli-0.1.0-py3-none-any.whl`
- Both are owner-writable mode `0644`.
- `controller-source/scripts/nutricoach_v150_detached_bootstrap.py::verified_pythonpath()` rejects any wheel with `mode & 0o222`, producing `wheel_integrity`.
- `controller-source/scripts/execute_nutricoach_v150_sealed_live.py` launches that exact r9 bootstrap. Bubblewrap’s read-only mount does not change the files’ `0644` mode bits.

Therefore the real launcher cannot reach the controller.

### Rehearsal identity failure

`/home/cube/projects/richard/.worktrees/nutricoach-v150-combined/scripts/rehearse_nutricoach_v150_v14.py` calls `execute_disposable()` directly, bypassing the detached bootstrap and its wheel-integrity gate. Consequently, `task-v14r9-rehearsal/report.json` reports 13 PASS cases for a package the actual launcher rejects. The case paths themselves are isolated, but this is not valid launcher-equivalent rehearsal evidence.

### Checks that otherwise passed

- Candidate digest rederived as `bf38a924...73f`; 324-file inventory had zero hash mismatches and both wheel builds were reproducible.
- Preseal: 326 package entries and 318 controller-closure entries matched exactly.
- Package payload rederived as `5a755171...26a63`; controller derivation `4451ab31...16d8c` matched target and permission package.
- Live registry matched sealed SHA-256 `bd61ed95...60b29`; all 124,647 protected stable rows matched.
- Global approval ledger, execution root, and successor runtime were absent.
- Rollback evidence restored all 12 failure cases, removed created roots, and consumed each disposable authority once.

No files were modified and no authorization, live execution, network, Telegram, provider, customer, service, commit, or push action was performed.