fix(shell): stop a native session freezing its own path into gpg.program #1306
No reviewers
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/agentic-os!1306
Loading…
Reference in a new issue
No description provided.
Delete branch "aos/claude/pp94"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #1137.
What was broken
gpg.programon Kai's Mac named a native-session home from 2026-08-06 whose temp root has since been purged, sogpg-ssmcould not sign anything. Confirmed and now fixed on the host: the value is/Users/kai/.local/bin/gpg-ssm, and a probe commit returns%G?=G.The mechanism, not just the value
A native session home symlinks
.gitconfigto the durable one while$HOMEitself is session-scoped. So the documented wire-up,git config --global gpg.program "$HOME/.local/bin/gpg-ssm", writes an ephemeral path into durable config. The same trap sits one layer down:apply-shell-linksderives its link sources from its own checkout, so running it from a shadow worktree would point~/.local/bin/gpg-ssmat a path that dies with the session.scripts/apply-shell-links.pynow:gpg.programalongside the symlink it names, so one command wires both and there is no hand-rungit configto get wrong$HOME, so wiring up from inside a session still records a path that outlives it-- --check, which is the detector the issue asked fordocs/install.md, thetooling-gpg-ssmskill, its debugging notes, and the justfile comment all move tojust apply-shell-linksas the wire-up.Left for Kai
Two of the issue's three settling conditions are decisions, not work, and are asked on the issue rather than assumed here: whether
commit.gpgsignshould default totrueon this fleet, and whetherssm-getis deliberately interactive-only (Finding 2). Fleet convergence of the corrected value stays with infrastructure/ansible per the authoring-versus-rollout contract.Verification
uv run pytest tests/- 730 passeduv run pre-commit run --all-files- cleanjust apply-shell-links -- --checkfrom the canonical checkout flagged the purged path before the fix and is quiet ongpg.programafter