Defect
The npm wrapper always creates its venv with python3, including on Windows, where a standard Python install usually provides python.exe / py.exe but no python3 command.
Where
bin/beacon.js:25-30 — pythonBin() already handles win32 (Scripts/python.exe)
bin/beacon.js:48-54 — ensureVenv() runs run('python3', ['-m', 'venv', VENV_DIR]) unconditionally
bin/beacon.js:42 — run() throws on spawn error, so a missing python3 aborts the first run (main @ d975e13)
Repro
- On Windows with Python from python.org (no
python3 alias), with ~/.beacon/npm/venv absent
- Run
beacon <anything>
spawnSync('python3', ...) fails with ENOENT before the venv exists
Expected vs actual
- Expected: bootstrap succeeds, since the wrapper already supports the Windows venv layout
- Actual: bootstrap fails on Windows systems without a
python3 command
Suggested fix
Choose the bootstrap interpreter per platform: honor PYTHON if set, then try py -3 / python on win32 and python3 / python elsewhere. Add a unit test for the selection.
No open fix PR for this was found at filing time (checked gh pr list for fable/*-2026-09-21 branches).
Reported by @fsalmon1991 via email (GitHub App 403 fallback) for rustchain-bounties#254; filed on their behalf by Sophia (Elyan Labs).
AI-assisted: the reporter disclosed AI assistance; this issue was verified against current main and drafted with AI assistance (Claude) before filing.
Defect
The npm wrapper always creates its venv with
python3, including on Windows, where a standard Python install usually providespython.exe/py.exebut nopython3command.Where
bin/beacon.js:25-30—pythonBin()already handles win32 (Scripts/python.exe)bin/beacon.js:48-54—ensureVenv()runsrun('python3', ['-m', 'venv', VENV_DIR])unconditionallybin/beacon.js:42—run()throws on spawn error, so a missingpython3aborts the first run (main @ d975e13)Repro
python3alias), with~/.beacon/npm/venvabsentbeacon <anything>spawnSync('python3', ...)fails with ENOENT before the venv existsExpected vs actual
python3commandSuggested fix
Choose the bootstrap interpreter per platform: honor
PYTHONif set, then trypy -3/pythonon win32 andpython3/pythonelsewhere. Add a unit test for the selection.No open fix PR for this was found at filing time (checked
gh pr listforfable/*-2026-09-21branches).Reported by @fsalmon1991 via email (GitHub App 403 fallback) for rustchain-bounties#254; filed on their behalf by Sophia (Elyan Labs).
AI-assisted: the reporter disclosed AI assistance; this issue was verified against current
mainand drafted with AI assistance (Claude) before filing.