32c6cd5bc9
Address recurring review feedback on the docker reconnect path: - reconnectToContainer was 98 lines (over the 80-line repo limit). Split into ensureContainerRunning (inspect + start + re-inspect) and bringupAgentctl (health-check, find-or-create instance, transparent re-handshake). The orchestration body now reads top-down at 49 lines. - resolveDockerEndpoint and waitForAgentctlHealth grew real branches in this PR (host-port lookup with container-IP fallback; 240×500ms retry loop) but had no direct tests. Introduce narrow hostPortLookup / healthChecker interfaces, satisfied by *docker.Client and *agentctl.ControlClient, so both functions are now driven by stubs that exercise happy-path, fallback, retry-until-healthy, exhaustion, and context-cancellation branches. - Add direct unit tests for the docker package's pure helpers (normalizeDockerHostIP, buildDockerPortBindings) and for dockerAgentctlPortBindings — a regression in the published port range or host IP would silently break container reconnect.