A descendant that inherits stdout keeps the pipe open after the CLI leader exits, so the drain sat outside the timeout and could wedge preflight for good. Both probes now share one deadline across the wait and the drain. Stat every file RECORD lists, not just the top-level names. An interrupted replace can recreate a package directory and stop part-way through filling it, which the directory check read as complete. 6656 files across studio.txt's closure cost 158ms, and __pycache__ is skipped: deleting it is not damage. Cleanup after an exit can take seconds, so a start in that window already owns the backend by the time the crash event fires. The frontend sets "Server stopped unexpectedly" on it unconditionally, which showed a healthy replacement as failed. |
||
|---|---|---|
| .. | ||
| backend | ||
| frontend | ||
| src-tauri | ||
| __init__.py | ||
| install_llama_prebuilt.py | ||
| install_node_prebuilt.py | ||
| install_python_stack.py | ||
| install_whisper_prebuilt.py | ||
| LICENSE.AGPL-3.0 | ||
| MCP.md | ||
| node_prebuilt_pins.json | ||
| package-lock.json | ||
| package.json | ||
| prebuilt_core.py | ||
| setup.bat | ||
| setup.ps1 | ||
| setup.sh | ||
| Unsloth_Studio_Colab.ipynb | ||