Purpose
-------
FS-539 — ``oct migrate option-c`` relocates a legacy Option C project
into the canonical ``.option_c/`` dotdir layout introduced in v0.19.0.
The command **copies** (never moves) each artefact so in-flight work on
the legacy layout is not broken mid-release. Legacy files stay in place
for one release; ``oct audit`` warns about the duplication and a future
release will offer removal.
Responsibilities
----------------
- Detect migratable artefacts: ``.octrc.json``, debug config (in either
``oc_diagnostics/`` or ``diagnostics/``), ``logs/``.
- In ``--dry-run`` mode, describe the plan without touching the disk.
- Copy each artefact to ``.option_c/`` with ``.bk`` backup when a
destination already exists and differs.
- Write ``oc_status.json`` recording the migration stage and source
paths.
Diagnostics
-----------
Domain: MIGRATE
Levels:
L2 — lifecycle: start / end
L3 — per-artefact decisions
Contracts
---------
- Copies (never moves) — legacy files remain in place for one release.
- ``--dry-run`` performs no filesystem writes.
- A pre-existing destination that differs is backed up to ``.bk`` before overwrite.
Dependencies
------------
- oct.core.diagnostics (_dbg structured logger)
- oct.core.option_c_dir (OcStatus, write_oc_status, option_c_dir)
- oct.core.project_root (project root detection)
- click (CLI framework)