feat(deps): catalog python3 as a recommended dependency #45

Merged
rootiest merged 1 commits from feat/python3-dependency into main 2026-06-12 03:24:10 +00:00
Owner

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

  • 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.

🤖 Generated with Claude Code

## 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)
rootiest added 1 commit 2026-06-12 03:15:58 +00:00
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)
rootiest merged commit 4eea14576c into main 2026-06-12 03:24:10 +00:00
rootiest deleted branch feat/python3-dependency 2026-06-12 03:24:10 +00:00
Sign in to join this conversation.