I read this as a read-only authority-migration investigation - I’ll trace the r70/r71 stores, contracts, controller phases, observer predicate, and existing migration tooling, then write the evidence codemap with an exact safe recommendation and verification proof.


The blocker is now localized: r71’s observer reads a root-scoped sidecar that was freshly initialized, while r70 contains the authenticated Aug 31 row. I’m tracing the store’s exact row binding and the original controller’s state-copy phases before deciding whether import can reuse bytes or must reissue provenance.


The storage contract settles the key question: day-status rows are customer/canonical-history bound, not authority-ID or candidate bound. Their bytes can remain identical across roots, but there is no supported cross-authority migration API or CLI; `cp` would bypass the store’s lock, validation, fsync, replay, and source-provenance guarantees. I’m documenting the minimal sealed import primitive and its failure/retry tests rather than prescribing an unsafe live copy.


The codemap is written. I’m validating its JSON structure and internal anchors now; no migration, observer, timer, service, cron, profile, or provider action is being executed.


I read this as a read-only migration codemap investigation - I traced the contracts and wrote the requested evidence artifact.

Created:

`/home/cube/projects/richard/traning coach/.omo/evidence/nutricoach-telegram-checkin-stepper/task-11-day-status-migration-codemap.json`

SHA-256: `e96c5fce1ba436a47ae24f5904506951514dbc96a144c00e76286d4eadceb8fd`

Key findings:

- No supported cross-authority migration API or CLI exists.
- The r70 row is customer/canonical-history bound, not candidate/authority bound.
- Reconstructing it through the current contract reproduced its digest and all 792 bytes exactly.
- Raw live copying is unsafe because it bypasses locking, validation, fsync, replay, crash recovery, and predecessor provenance.
- Recommended minimal implementation: a sealed, one-use, prefix-preserving importer built on `WeeklyOperationsStore.read()` and `.append()`, with a separate authenticated predecessor migration receipt.
- Original r71 cannot be replayed; its authorization is consumed and execution committed.
- Existing `observer-r71` has two validly chained FAIL rows and can never satisfy final seven-day coverage. Preserve it and use a fresh observer namespace.
- Observer timer was only read: active/waiting at capture.
- No source, live profile, service, timer, cron, Git, network, customer, or provider action occurred.

Validation passed with JSON parsing, semantic `jq` assertions, and source/evidence hash-anchor checks.