I read this as an implementation task - I’ll trace the activation journal, registry validation, and recovery paths, reproduce the focused failure, then make the smallest receipt extension and verify the targeted suites and static checks.


I’ve completed the transaction-path trace. The safe boundary is a customer-scoped v4 committed receipt used only when explicit multi-customer admission is present, while the existing v1-v3 singular journal remains authoritative and unchanged for default one-customer profiles. I’m implementing that split now, including deterministic legacy upgrade and receipt-aware rollback/recovery.


The independent activation path is green, including focused tamper, committed-recovery, and rollback tests. I’m at verification now: running the full customer-admin domain plus registry/profile tests and static diagnostics, then I’ll address only regressions caused by this receipt extension.


I read this as completed implementation - I added customer-scoped activation receipts while preserving singular-journal legacy behavior.

Implemented:
- Durable v4 receipts at `data/customer-activation-receipts/<customer_key>.json`.
- Receipt bindings for customer projection, owner, admission policy, paths, audit record, nutrition/readiness, membership evidence, and transaction ID.
- Deterministic v1-v3 singular-journal upgrade before journal reuse.
- Independent enabled-customer validation in runtime loading and committed activation checks.
- Receipt-aware commit recovery and exact rollback.
- Legacy no-policy capacity errors and single-customer journal behavior preserved.
- Added focused multi-customer, tamper, committed/prepared recovery, rollback, and withdrawal tests.

Verification:
- Targeted profile suites: **213 passed**.
- Customer admin + multi-customer suite: **136 passed**.
- `compileall`: passed.
- `git diff --check`: passed.
- Full profile suite: **742 passed, 14 failed**; all failures are pre-existing missing policy resources:
  - `diagnostic-promotion-policy.json`
  - `nutrition-restriction-kb-template-v1.json`

Changed:
- `dualcoach/profile/checkin_cli/customer_admin.py`
- `dualcoach/profile/checkin_cli/customer_coaching.py`
- `dualcoach/profile/tests/test_multi_customer_admission.py`

No build, live state, git operations, services, or Telegram were touched.