Purpose
-------
Expose the in-house mutation engine through Click as ``oct mutate``.
Responsibilities
----------------
- Parse the target, the test path, the per-mutant timeout, and the output mode.
- Enumerate without running anything under ``--list``.
- Stream progress to stderr so stdout keeps its JSON-only contract.
- Convert a named refusal into a clear CLI error rather than a stack trace.
Diagnostics
-----------
Domain: OCT-MUTATION
Levels:
L2 - command lifecycle
L3 - option and output details
L4 - deep tracing
Contracts
---------
- ``--tests`` is required for a run; there is no default that would silently
run a whole suite once per mutant.
- Exit code is 0 whenever the run completes; mutation outcomes do not set exit
codes in v1, which is report-only and gates nothing.
- Machine-readable stdout contains JSON only.
- ``--list`` writes nothing to the target and starts no subprocess.
Dependencies
------------
- click (CLI adapter)
- oct.core.git (repository discovery for stable mutant ids)
- oct.mutation.engine (enumeration)
- oct.mutation.report (rendering)
- oct.mutation.runner (execution and classification)
- oct.mutation.sandbox (named refusals)