feat(v0.11): Track B+C — sentinel uninstall + docs reorder + ADR Accepted - #48
Merged
Merged
Conversation
Track B implements `sentinel uninstall` (ADR 0011 §D6): - New command with --purge, --yes, --json flags following ADR 0009/0004 patterns - Standard mode: removes plist, preserves config/data - Purge mode: also deletes config + event history (with stronger confirmation) - Exit codes: 0 success, 1 error, 2 not installed - JSON envelope output: kind="uninstall" / kind="uninstall_error" - Helpers: unload_launchagent (bootout→unload fallback), remove_plist, collect_purge_targets Track C updates documentation (ADR 0011 §D9): - README Quick Start reordered: pipx+sentinel install is now Option 1 (Recommended) - Old install.sh moved to Option 3 (development only) - install.sh header refreshed: "for SOURCE-TREE DEVELOPMENT only" - CHANGELOG entry consolidates v0.11 install+uninstall accomplishments ADR 0011 Status: Proposed → Accepted (Track A+B complete the contract) Includes 25 new unit tests covering: - unload_launchagent (bootout success, unload fallback, errors, timeouts) - remove_plist (exists/not exists idempotency) - collect_purge_targets (config, events, skipped_versions) - cmd_uninstall (not-installed, confirmation, standard/purge modes, JSON output) - dispatch (argument parsing) All tests pass (975 total). Ruff/mypy clean for new files. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
Summary
v0.11 사이클 마무리. ADR 0011 §D6 (uninstall 대칭) 구현 + Track C 문서 정리 합본.
ADR 0011 Status: Proposed → Accepted (Track A+B 머지로 인터페이스 contract 완성).
Track B —
sentinel uninstallADR 0011 §D6 contract 그대로:
--purgeevents/*.jsonl+updater/skipped_versions.txt삭제--keep-launchagent--yes--jsonkind="uninstall"exit codes: 0 / 1 (error) / 2 (not_installed)
Confirmation 메시지 (purge 모드): "THIS WILL DELETE YOUR EVENT LOG. Proceed? [y/N]" — 강한 경고. non-TTY + no
--yes면 auto-cancel + WARNING (ADR 0009 패턴).신규 파일:
sentinel_mac/installer/uninstall.py(~135 LOC) — pure helpers:unload_launchagent(modernbootout+unloadfallback),remove_plist,collect_purge_targets,remove_pathssentinel_mac/commands/uninstall.py(~253 LOC) — orchestration + prompts + envelopetests/test_installer_uninstall.py(16 tests) — bootout/unload fallback / plist 삭제 / purge target enumeration / batch removaltests/test_cmd_uninstall.py(9 tests) — not-installed / confirmation / standard vs purge / JSON / dispatch수정:
sentinel_mac/core.py— argparseuninstallsubcommand dispatch (5줄)Track C — 문서 정리
docs/decisions/0011-first-install-flow.md: Status: Proposed → Accepted, "Accepted: 2026-05-05" 한 줄 추가README.mdQuick Start 재정렬:sentinel install(recommended) ← 사실상의 표준 경로 등극install.sh헤더 갱신: "for SOURCE-TREE DEVELOPMENT only" 명시 + 운영 사용자에게pipx + sentinel install명확히 안내CHANGELOG.md[Unreleased]에 Track B/C 항목 + ADR 승급Verification
Next steps (이 PR 머지 후)
Test plan
🤖 Generated with Claude Code