I read this as an implementation/refactor task - I’ll map the existing weekly flows and evidence requirements, extract them with focused tests, then run the specified quality gates and return a DoneClaim or concrete blocker.


The target contains two concentrated v1.4 seams: schedule-side weekly reservation/lifecycle code and wizard-side canonical event projection/finalization. I’m now tracing their callers and the prior Task 12 evidence so the extraction preserves direct imports and byte-level behavior rather than merely moving adjacent code.


The prior r3 attempt failed because it broadened into unrelated model/customer factories and introduced new diagnostics. I’m taking the smaller seam: typed schedule host models/authority/review helpers plus a typed wizard event projector, leaving ledger bytes and transition ordering in their original owner while reducing both legacy files below their frozen baselines.


Both legacy modules are now under baseline (schedule 1892/1894, wizard 1196/1198). The extraction keeps ledger row construction and append ordering in place; only typed values, descriptor authority, due-work projection, receipt parsing, review correlation, canonical event projection, and branch correlation moved. I’m entering behavior/static verification now and will correct only extraction-owned failures.


Focused weekly schedule/lifecycle/correlation coverage is green at 399 tests, with ruff, basedpyright, ty, no-excuse, compile, and diff checks clean on extraction-owned code. I’m running the full profile suite and final LSP/LOC accounting before writing the required lane receipt.


I read this as delivery reporting - I’ll return the DoneClaim with verification and the inherited full-suite blocker.

**DoneClaim**

- Extracted weekly scheduling/event correlation into focused typed host modules.
- Pure LOC: `customer_schedule.py` **1892/1894**, `wizard.py` **1198/1198**; new-module maximum **175**.
- Weekly schedule/lifecycle/correlation tests: **399 passed**.
- New revert-sensitive host tests: **3 passed**.
- Owned basedpyright, ty, ruff, no-excuse, compileall, and diff checks: **clean**.
- Preserved ledger schemas, event bytes, transition ordering, and exactly-once behavior.
- Evidence: `.omo/evidence/nutricoach-v140-weekly-operations/task-12-refactor-profile-schedule.json`.

Architectural review: focused responsibilities, typed boundaries, no new escape hatches/reflection/suppressions, no defensive or redundant verification layers, and behavior is test-locked.

Full profile collection is independently blocked by missing `typer` in the shared venv and a pre-existing missing `contextmanager` import in `weekly_operations_customer_authority.py`; neither file is lane-owned.