I read this as a full clone-only V13 transaction rehearsal - I’ll inspect the frozen worktree and its rehearsal tooling, verify the preseal, execute every required isolated case, preserve immutable evidence, and stop only on PASS or a precise blocker.


Preseal and controller closure are identified. I’m now binding the rehearsal to the frozen V13 artifacts and building the isolated evidence run around the real controller, with no invocation of either live execute entrypoint.


The two committed clone transactions completed through the real offline installer and restart constructor. I’m at verification now: running the complete V13/v1.5 regression set and strict checks, then I’ll compare the live predecessor and seal the receipts read-only.


I read this as reporting the completed V13 clone-only rehearsal - I’ll provide the immutable evidence location, bindings, case counts, verification, cleanup, and live equality result.

## Result

- Evidence: `/home/cube/projects/richard/.senpi-evidence/st_01a04845-v13-clone-rehearsal`
- Evidence receipts: 12 files, all mode `0444`
- Evidence index SHA-256: `6c1f7a582dd4b1aeb33ce96d0251e5cc9525c5d15e1541d10933471e49a0c80c`
- No source changes, commit, push, live execution, systemctl mutation, provider call, Telegram event, or network event.

## Frozen bindings

- Package digest: `25ca8f7708eb5c30d43984af8f73ebeafe191b7faeee37de1e7aead2bf7baae4`
- Permission package: `71c3dd0078ceceda56491ead201f124352394502d28c74c7f5055217984e3614`
- Candidate manifest: `78b2d1790b67cf0d9730cd9a4b0d2d0d3de5bf5f5836e31a70f5be3a62dd7786`
- Package manifest: `fb629bba68ce4ccbcea108dc780502946697ce1e97f33a899d344eb9889f1311`
- Controller derivation: `7fb5e288a0d14742cc14ef07ab67573aaa8e3e998bcb71246f0a1f47cd164242`
- Controller closure: `0b4d2c01391e3b3a67d2aa7a8593b1a9541e7532590a8f6484c7c7e09cb651a5`
- Sealed target: `7370967fb5ca036bada3374c185e626e807d4113377c381dcdf8c29e76d7c869`

## Rehearsal coverage

41 explicit rehearsal cases:

- 2 unrelated committed-success clones
- 2 actual offline two-wheel installations
- 4 real `TelegramAdapter` constructor startups, including both committed restarts
- 11 controller-stage rollback cases
- 6 `BaseException` rollback classes
- 5 durable write/fsync/restore faults
- SIGTERM and SIGKILL recovery
- 2 replay denials
- 2 cross-execution-root one-use denials
- Archived/replaced registry, owner rebinding, and customer rebinding denials
- 3 superseded-approval denials
- Exact config, registry, unit, and drop-in restoration
- Created successor and weekly-authority directory removal
- V12 consumed/rolled-back/postcommit evidence retained and non-reusable

Both committed clones reported:

- Capacity: `5`
- Channel Inbox: OFF/absent
- ActiveState/SubState: `active/running`
- Exact loaded customer identity: `client_001`
- Restart identity: `client_001`
- Network events: `0`
- Telegram events: `0`
- Provider events: `0`

## Verification

- V13/full v1.5 tests: `79 passed in 2.34s`
- Ruff: `All checks passed!`
- Basedpyright: `0 errors, 0 warnings, 0 notes`
- Compileall: exit `0`

Exact commands are preserved in `commands.json`; principal commands were:

```text
.venv/bin/python scripts/verify_nutricoach_v150_preseal_v13.py --verify
.venv/bin/python /tmp/nutricoach-v13-rehearsal-st_01a04845.py
.venv/bin/pytest -q tests/test_nutricoach_v150_live_upgrade.py tests/test_nutricoach_v150_transaction_controller.py tests/test_nutricoach_v150_sealed_controller.py tests/test_nutricoach_v150_v3_hardening.py tests/test_nutricoach_v150_preseal_v13.py tests/test_nutricoach_v150_live_binding.py tests/test_nutricoach_v150_weekly_authority.py
/home/cube/projects/richard/.worktrees/nutricoach-v140-impl/.venv/bin/ruff check scripts/nutricoach_v150_*.py scripts/verify_nutricoach_v150_preseal_v13.py tests/test_nutricoach_v150_*.py tests/nutricoach_v150_transaction_support.py
/home/cube/.local/bin/basedpyright scripts/nutricoach_v150_concrete_host.py scripts/nutricoach_v150_detached_bootstrap.py scripts/nutricoach_v150_host_operations.py scripts/nutricoach_v150_runtime_ops.py scripts/nutricoach_v150_sealed_authority.py scripts/nutricoach_v150_sealed_controller.py scripts/nutricoach_v150_weekly_authority.py scripts/verify_nutricoach_v150_preseal_v13.py
```

## Live predecessor equality

Before/after service state was byte-for-byte equal:

- ActiveState: `active`
- SubState: `running`
- MainPID: `3470183`
- Start monotonic timestamp: `2437286710935`

Critical hashes remained equal:

- Config: `e9ee8f1c3a4913bcde64f4832dcbec6620173ca0de39ffd1a32c4b0c55c6a162`
- Registry: `bd61ed95f80737ba8013db262fd0242a600e540f43f6627f5b9708a599660b29`
- Unit: `90fbab66354811448427286b87f0305955a25df8f08a202a15b5ac3541700af7`
- Drop-in: `33bc59bdaf6a4261abc7ce43ae7faf452f724353ee24f6a54b2a92ed5b1ca0d8`

Cleanup inventory:

- Temporary clones: `0`
- Temporary harness: absent
- Temporary cache roots: `0`
- Live V13 ledger: absent
- Live V13 execution root: absent
- Live successor: absent
- Remaining artifacts: 12 immutable rehearsal receipts only

**PASS**