doctor: bound the docker probe, announce it, and give the start command - #34
Merged
Merged
Conversation
…the start command With Docker Desktop installed but stopped, 'docker info' can sit silent for minutes; init-project.sh runs doctor last, so the whole scaffold read as hung. The probe is now backgrounded and killed at MXTK_DOCKER_PROBE_SECS (8 s, portable to bash 3.2 without 'timeout'), prints a line before waiting, and --no-docker / MXTK_DOCTOR_SKIP_DOCKER=1 skip it. A daemon that is down gets the platform's start command and the re-run line; --install on macOS launches Docker Desktop. Fixture: tests/wave2/test-doctor-docker-probe.sh. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
…t-tool-install-qgjd5i # Conflicts: # CHANGELOG.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Direct lane (
bin/,tests/)What changed and why (one paragraph):
Onboarding feedback (2026-09-09): project setup was slow and "kept hanging, Docker didn't open".
init-project.shrunsdoctor.shlast, and doctor's self-verification section randocker infounbounded. With Docker Desktop installed but not running, that call can sit silent for minutes on macOS and Git Bash, so the whole scaffold read as hung, and the only advice printed afterwards was "Start Docker Desktop". Now the probe is backgrounded and killed atMXTK_DOCKER_PROBE_SECS(default 8 s; portable to bash 3.2, which has notimeout), prints what it is waiting for before waiting, and can be skipped with--no-docker/MXTK_DOCTOR_SKIP_DOCKER=1. A daemon that is down or times out gets the one start command for this platform (open -a Docker/ the Windowsstartline /systemctl start docker), the 30–90 s daemon start-up note, and the exact re-run line.--installon macOS with Docker Desktop present launches it (that flag is already the "do it for me" mode; never elsewhere, because Windows launch paths vary and Linux needs sudo).Field evidence: the report above (a new builder's first
init-project.sh, via Maurits Visser). Local proof:tests/wave2/test-doctor-docker-probe.shputs three fakedockerbinaries on PATH (hangs 120 s / answers down / answers up) and asserts doctor finishes in seconds with the bound announced, the timeout reported as not running, the raise-the-bound and re-run lines present, a fast "down" not mislabelled as a timeout, and both skip switches skipping. 13/13.timeoutdependency;$PLATFORMfrom doctor's own detection), layout-independent, bash-3.2 portable (check-portability.shclean)dockerCLI's behaviour, modelled by three fakes covering hang / down / up — no parsed output involvedCHANGELOG.mdline appended in this PRNot changed, deliberately: doctor still runs in full (not
--quick) at the end ofinit-project.sh, because the once-per-machine sections are the point of the first run. If the rest of the scaffold is also slow on that machine, doctor's spawn-speed section is the instrument that says why.🤖 Generated with Claude Code
https://claude.ai/code/session_01VJgWP5vEoAsNsJYqCDMGNw
Generated by Claude Code