Before: Tapping "Test sandbox" from /access triggers the docker smoke test but immediately returns "Spark access action failed: Command failed: spark sandbox docker smoke --json" with no explanation of why it failed or what to do next.
Expected: When the sandbox smoke test fails, the bot should tell the user why it failed (e.g. Docker not installed, Docker not running) and what to do to fix it.
Repro steps:
- Send /access in Telegram
- Tap "Test sandbox" button
- Tap "Confirm: Test sandbox"
- Observe: Spark access action failed: Command failed: spark sandbox docker smoke --json with no explanation
After fix: when the sandbox smoke test fails, the bot now shows a Repair section telling the user to make sure Docker Desktop is installed and running, and to run spark sandbox docker doctor --json for details.

Before: Tapping "Test sandbox" from /access triggers the docker smoke test but immediately returns "Spark access action failed: Command failed: spark sandbox docker smoke --json" with no explanation of why it failed or what to do next.
Expected: When the sandbox smoke test fails, the bot should tell the user why it failed (e.g. Docker not installed, Docker not running) and what to do to fix it.
Repro steps:
After fix: when the sandbox smoke test fails, the bot now shows a Repair section telling the user to make sure Docker Desktop is installed and running, and to run spark sandbox docker doctor --json for details.