Orchestrator handover state machine.
Purpose
-------
Provide the M11.5 audited handover operations that prevent two
orchestrators from writing round state at the same time.
Responsibilities
----------------
- Emit ``role.handover.start`` and ``role.handover.complete`` operations.
- Recover the start payload needed by accept calls.
- Keep durable state projection inside the SQLite backend.
Diagnostics
-----------
Domain: OC_CHAT.MAIN
Levels:
L2 - lifecycle events
L3 - semantic details
L4 - deep tracing
Contracts
---------
- ``role.handover.start`` enters the requested/draining state.
- ``role.handover.complete`` makes the incoming orchestrator the holder.
- Round writes are rejected unless the durable state permits the actor.
Dependencies
------------
- json (decode the stored handover-start arguments)
- oc_chat.registry.api (Registry that executes the handover domain commands)
- oc_chat.registry.errors (HandoverStateError for an unknown handover)
- oc_chat.registry.backends.base (OperationLogRow returned by both operations)
- oc_diagnostics (structured debug logging via _dbg)