Skip to content

fix(fish): 10-core.fish owns the macOS PATH, gentle-ai launchers first - #75

Merged
barbatdev merged 1 commit into
mainfrom
fix/fish-darwin-path
Oct 21, 2026
Merged

barbatdev merged 1 commit into
mainfrom
fix/fish-darwin-path

Conversation

@barbatdev

Copy link
Copy Markdown
Owner

config.fish loads after conf.d and re-prepended its own PATH, leaving ~/.gentle-ai/bin at position 13: opencode never ran through the managed launcher on the Mac.

  • macOS block in 10-core.fish: brew shellenv + one dir list (cargo, Homebrew, local, opencode, volta, bun, nix), each only if it exists. config.fish (host file) drops its PATH logic.
  • w8 asserts the macOS order with gentle-ai first; w2 pins a non-Homebrew platform so the host's real starship cannot shadow its stub.

Differential on the Mac (login PATH + resolution of opencode, gs, gentle-ai, gentle-shell, pi, node, bun, cargo, brew, go, starship, nvim): only opencode changes, now ~/.gentle-ai/bin/opencode. Dropped entries (volta, bun, /usr/local/bin, ~/.config) do not exist on this host.

Refs #69

config.fish loads after conf.d and re-prepended its own PATH, burying
~/.gentle-ai/bin, so opencode never ran through the managed launcher.
Move the macOS dirs and brew shellenv into 10-core.fish (each dir only if
it exists); config.fish keeps no PATH logic. w2 pins a non-Homebrew
platform so the host's real starship cannot shadow its stub.

Refs #69
@barbatdev
barbatdev merged commit 75d8ae3 into main Oct 21, 2026
1 check passed
@barbatdev
barbatdev deleted the fix/fish-darwin-path branch October 21, 2026 13:27
@barbatdev

Copy link
Copy Markdown
Owner Author

Post-merge QA (glm)

10-core.fish takes ownership of the macOS PATH: brew shellenv plus one conditional dir list, later entries first, gentle-ai launchers ending up at the head — exactly what w8 now asserts for macOS. The w2 test pins uname to Linux so the platform PATH block cannot let the host's real starship shadow the stub under test. One caveat outside the diff: config.fish is a host file, so dropping its PATH logic is a per-host manual step; hosts that skip it still have config.fish re-prepending its PATH after conf.d and burying gentle-ai again. No defects in what landed.

No findings.

Verdict: clean

@barbatdev

Copy link
Copy Markdown
Owner Author

Post-merge QA (deepseek)

Lens: evidence + test design.

The macOS PATH block is a sound correction: it sources brew shellenv from whichever Homebrew prefix exists, then adds one dir list with only existing entries, and because it lives in 10-core.fish it runs before config.fish — which is the actual bug #75 describes. w8-linux-path.fish grows a macOS fixture with HOME-owned dirs and asserts the exact resulting order plus that ~/.gentle-ai/bin leads PATH, so the mechanism is pinned by execution. w2-core.fish pinning uname to Linux before the starship stub is a good, honest fix for the ordering dependency the new block introduced.

No defects found. The remaining gap is inherent to the fixtures: system prefixes cannot be created on a runner, so the Homebrew and /usr/local/bin entries are covered only by the PR's reported differential on the real Mac, not by the suite.

Suggestion (1)

  • Homebrew and /usr/local/bin entries have no executable evidence (fish/tests/w8-linux-path.fish:60): The macOS fixture can only create directories under a fake HOME, so the assertions cover ~/.cargo/bin, ~/.local/bin, ~/.opencode/bin, ~/.volta/bin, ~/.bun/bin, ~/.nix-profile/bin and ~/.gentle-ai/bin. The brew shellenv sourcing and the /opt/homebrew/bin, /opt/homebrew/sbin, /usr/local/bin entries are proven only by the prose differential in the PR body. That is a reasonable limit; recording it in the test header (as the existing comment does for /nix) would keep a future reader from assuming full coverage.

Verdict: clean

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant