Skip to content

land #414: fix(uninstall): exclude project from still-installed global hooks - #481

Merged
fu351 merged 3 commits into
mainfrom
land/pr414
Aug 27, 2026
Merged

land #414: fix(uninstall): exclude project from still-installed global hooks#481
fu351 merged 3 commits into
mainfrom
land/pr414

Conversation

@fu351

@fu351 fu351 commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Landing branch for #414 by @QY-25123, their commit is preserved and authorship stays theirs, GitHub marks #414 merged when this lands. I merged origin/main into their branch and resolved what #477 changed underneath it: CHANGELOG keeps both bullets; README and docs/SETUP.md keep main's rewritten sections, with the PR's exclusion paragraph moved to the uninstall section of docs/RECOVERY.md plus one sentence in SETUP; cli/main.py keeps the --global early return ahead of the PR's Codex import block, and the exclusion wiring stays in the project-scoped path only (uninstall --global already removes the whole device dir, exclusion file included); the uninstall test module keeps both new test groups. Targeted tests, ruff, and lint-imports are green locally.

QY-25123 and others added 3 commits August 19, 2026 11:27
`doberman uninstall` was project-scoped only: if a global (--global)
Claude Code hook, or a Codex user-scope hook, was still installed, it
kept firing in the "uninstalled" project and silently recreated
.doberman/ there the next time any decision needed recording.

uninstall now detects an active global/Codex-user hook and adds the
project to a device-wide exclusion list (~/.doberman/excluded_projects.json)
that every host adapter checks first, before anything else, so an
excluded project gets a true no-op instead. The list is written only by
this already possession-factor-gated flow; reading it is a pure,
side-effect-free check that fails closed. Re-running `install-hooks`
clears the exclusion (no gate needed - a strengthen).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…nstalled global hooks)

Landing branch for QY-25123's #414 per ADR 0080 (maintainer never pushes to a
fork). Resolved: CHANGELOG (both bullets, theirs first); README and
docs/SETUP.md keep main's rewritten sections, with the PR's exclusion prose
moved to docs/RECOVERY.md's uninstall section plus one sentence in SETUP;
cli/main.py keeps #477's --global early return ahead of the PR's Codex import
block, exclusion wiring stays in the project-scoped branch; the uninstall test
module keeps both new test groups.
@fu351
fu351 merged commit 4eeb7d1 into main Aug 27, 2026
6 checks passed
@fu351
fu351 deleted the land/pr414 branch August 27, 2026 01:57
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.

2 participants