Symptom
ringer.py needs Python 3.11+ (tomllib), but the shebang is #!/usr/bin/env python3 — on a stock Mac that's 3.9.6, so ./ringer.py <anything> fails with the version message every time, and every operator/wrapper has to remember the full interpreter path (/opt/homebrew/bin/python3.13 ./ringer.py ...). In the field this failed ./ringer.py hud mid-orchestration and the correct interpreter had to be rediscovered from a note (2026-07-14).
Proposed fix
Any of:
- a
ringer launcher shim that probes python3.13 → python3.12 → python3.11 and execs the first that satisfies the gate,
- an install step (
make install or a bootstrap script) that writes the resolved interpreter into a shim, or
- documented
uv run support (uv resolves the interpreter from a pinned requires-python).
The version check itself is good — the ask is that the operator only pays for it once, not per command.
Size: S.
🤖 Generated with Claude Code
Symptom
ringer.pyneeds Python 3.11+ (tomllib), but the shebang is#!/usr/bin/env python3— on a stock Mac that's 3.9.6, so./ringer.py <anything>fails with the version message every time, and every operator/wrapper has to remember the full interpreter path (/opt/homebrew/bin/python3.13 ./ringer.py ...). In the field this failed./ringer.py hudmid-orchestration and the correct interpreter had to be rediscovered from a note (2026-07-14).Proposed fix
Any of:
ringerlauncher shim that probespython3.13 → python3.12 → python3.11and execs the first that satisfies the gate,make installor a bootstrap script) that writes the resolved interpreter into a shim, oruv runsupport (uv resolves the interpreter from a pinned requires-python).The version check itself is good — the ask is that the operator only pays for it once, not per command.
Size: S.
🤖 Generated with Claude Code