python3 had quietly become a soft-dependency of this config without being tracked anywhere. It is used by:
AI session helpers (save_claude_session.fish, save_antigravity_session.fish) — python3 -c parses the session_id out of the hook JSON payload. These calls were unguarded (Convention §6 violation).
paru/yay log cleaner (conf.d/paru-wrapper.fish, conf.d/yay-wrapper.fish) — runs scripts/clean_progress_log.py. Already guarded with graceful fallback to raw logs.
uv is listed as Required, but installing uv does not put a python3 interpreter on PATH, and Arch's base meta-package omits python entirely (pacman is C; paru/yay are Rust/Go). So python3 is tracked separately rather than assumed via uv.
Classified Recommended (not Required) because every consumer degrades gracefully and it's least guaranteed on this config's primary platform (Arch/CachyOS).
Changes
Add python3 to _fish_deps_catalog.fish — recommended tier, pm: python, no cargo/special method. Arrays re-verified aligned at 27/27.
Guard the two session helpers with type -q python3, emitting valid empty {} JSON and exiting cleanly when python3 is absent (Convention §6).
Document python3 in docs/fish-config.md — §5.6 tier summary and the Dependency Catalog Recommended entry (with the uv/Arch-base caveat).
README defers the catalog to the SSOT doc, so no README change was needed.
Manual Verification
Run fish-deps status — confirm python3 appears under the Recommended tier and is detected (✓ python3 (Found at /usr/bin/python3)).
On a host with python3: trigger a Claude/Antigravity session save and confirm .claude_session / .antigravity_session still gets written and the hook outputs {}.
Simulate python3 absent (e.g. env PATH=/nonexistent fish functions/save_claude_session.fish <<< '{}') — confirm it prints {}, exits 0, and writes no session file.
Run fish-deps install on a box missing python3 — confirm it offers to install via the detected PM (python on Arch).
Confirm paru/yay AUR logs still render cleanly (python3 path) and the wrappers still fall back to raw logs when python3 is removed.
Skim docs/fish-config.md §5.6 and the Dependency Catalog — confirm the python3 entry reads correctly.
## Summary
`python3` had quietly become a soft-dependency of this config without being tracked anywhere. It is used by:
- **AI session helpers** (`save_claude_session.fish`, `save_antigravity_session.fish`) — `python3 -c` parses the `session_id` out of the hook JSON payload. These calls were **unguarded** (Convention §6 violation).
- **paru/yay log cleaner** (`conf.d/paru-wrapper.fish`, `conf.d/yay-wrapper.fish`) — runs `scripts/clean_progress_log.py`. Already guarded with graceful fallback to raw logs.
`uv` is listed as Required, but installing `uv` does **not** put a `python3` interpreter on `PATH`, and Arch's `base` meta-package omits python entirely (pacman is C; paru/yay are Rust/Go). So python3 is tracked separately rather than assumed via uv.
Classified **Recommended** (not Required) because every consumer degrades gracefully and it's least guaranteed on this config's primary platform (Arch/CachyOS).
## Changes
- Add `python3` to `_fish_deps_catalog.fish` — recommended tier, `pm: python`, no cargo/special method. Arrays re-verified aligned at 27/27.
- Guard the two session helpers with `type -q python3`, emitting valid empty `{}` JSON and exiting cleanly when python3 is absent (Convention §6).
- Document python3 in `docs/fish-config.md` — §5.6 tier summary and the Dependency Catalog Recommended entry (with the uv/Arch-base caveat).
README defers the catalog to the SSOT doc, so no README change was needed.
## Manual Verification
- [x] Run `fish-deps status` — confirm `python3` appears under the **Recommended** tier and is detected (`✓ python3 (Found at /usr/bin/python3)`).
- [x] On a host *with* python3: trigger a Claude/Antigravity session save and confirm `.claude_session` / `.antigravity_session` still gets written and the hook outputs `{}`.
- [x] Simulate python3 absent (e.g. `env PATH=/nonexistent fish functions/save_claude_session.fish <<< '{}'`) — confirm it prints `{}`, exits 0, and writes no session file.
- [x] Run `fish-deps install` on a box missing python3 — confirm it offers to install via the detected PM (`python` on Arch).
- [x] Confirm paru/yay AUR logs still render cleanly (python3 path) and the wrappers still fall back to raw logs when python3 is removed.
- [x] Skim `docs/fish-config.md` §5.6 and the Dependency Catalog — confirm the python3 entry reads correctly.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
python3 is used unguarded by the AI session helpers and (guarded) by the
paru/yay log cleaner, but was absent from the dependency catalog and docs.
uv does not provide python3 on PATH, and Arch's base omits it, so it is
tracked separately rather than assumed via uv.
- Add python3 (recommended tier, pm: python) to _fish_deps_catalog.fish
- Guard python3 calls in save_claude_session/save_antigravity_session with
`type -q python3`, emitting valid empty JSON when absent (Convention §6)
- Document python3 in docs/fish-config.md (§5.6 tiers + catalog entry)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
python3had quietly become a soft-dependency of this config without being tracked anywhere. It is used by:save_claude_session.fish,save_antigravity_session.fish) —python3 -cparses thesession_idout of the hook JSON payload. These calls were unguarded (Convention §6 violation).conf.d/paru-wrapper.fish,conf.d/yay-wrapper.fish) — runsscripts/clean_progress_log.py. Already guarded with graceful fallback to raw logs.uvis listed as Required, but installinguvdoes not put apython3interpreter onPATH, and Arch'sbasemeta-package omits python entirely (pacman is C; paru/yay are Rust/Go). So python3 is tracked separately rather than assumed via uv.Classified Recommended (not Required) because every consumer degrades gracefully and it's least guaranteed on this config's primary platform (Arch/CachyOS).
Changes
python3to_fish_deps_catalog.fish— recommended tier,pm: python, no cargo/special method. Arrays re-verified aligned at 27/27.type -q python3, emitting valid empty{}JSON and exiting cleanly when python3 is absent (Convention §6).docs/fish-config.md— §5.6 tier summary and the Dependency Catalog Recommended entry (with the uv/Arch-base caveat).README defers the catalog to the SSOT doc, so no README change was needed.
Manual Verification
fish-deps status— confirmpython3appears under the Recommended tier and is detected (✓ python3 (Found at /usr/bin/python3))..claude_session/.antigravity_sessionstill gets written and the hook outputs{}.env PATH=/nonexistent fish functions/save_claude_session.fish <<< '{}') — confirm it prints{}, exits 0, and writes no session file.fish-deps installon a box missing python3 — confirm it offers to install via the detected PM (pythonon Arch).docs/fish-config.md§5.6 and the Dependency Catalog — confirm the python3 entry reads correctly.🤖 Generated with Claude Code