land #414: fix(uninstall): exclude project from still-installed global hooks - #481
Merged
Conversation
`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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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/maininto their branch and resolved what #477 changed underneath it: CHANGELOG keeps both bullets; README anddocs/SETUP.mdkeep main's rewritten sections, with the PR's exclusion paragraph moved to the uninstall section ofdocs/RECOVERY.mdplus one sentence in SETUP;cli/main.pykeeps the--globalearly return ahead of the PR's Codex import block, and the exclusion wiring stays in the project-scoped path only (uninstall --globalalready 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.