85 lines
3.7 KiB
Markdown
85 lines
3.7 KiB
Markdown
# Builder Report — pos-system-uninstall
|
|
|
|
**TL;DR:**
|
|
- Tool at `bin/pos-system-uninstall` (415 lines) — headers, tiers, flags, behavior match spec
|
|
- Added `system-uninstall` to `INTERACTIVE_CMDS` in `bin/pos` (reads stdin via `confirm`)
|
|
- Added `~/.bash_completion` scanning + cleanup to scan_tier1/remove_tier1 per spec
|
|
- `make gen` idempotent, `make check` OK, `make lint` 0 FAIL, 0 WARN
|
|
- Report path: `./AgentsReport/builder/2026-08-25_uninstall.md`
|
|
|
|
## Step 1: Analyze existing implementation
|
|
|
|
[DONE]
|
|
|
|
- Tool already existed (397→415 lines after adding bash_completion scan/cleanup)
|
|
- Headers correct: `# POS: system uninstall — ...`, `# POS_FLAGS: --yes --config --data`
|
|
- Three tiers implemented: Tier 1 (binaries, services, shell integration), Tier 2 (`--config`), Tier 3 (`--data`)
|
|
- Flags: `--yes`, `--config`, `--data` parsed correctly
|
|
- Scan functions cover all spec items: pos/pos-*, libs, ai-providers, entertainment plugins, legacy forwarders, prebuilts, features, user-local, completion, systemd services, bashrc patterns
|
|
- Display format matches spec (numbered, tiered, colorized)
|
|
- Removal functions handle idempotent cleanup (files, services, shell entries, dirs bottom-up)
|
|
|
|
## Step 2: Add system-uninstall to INTERACTIVE_CMDS
|
|
|
|
[DONE]
|
|
|
|
- Added `system-uninstall` to `INTERACTIVE_CMDS` in `bin/pos:262`
|
|
- Tool reads stdin via `confirm()` prompts — must skip tee logging
|
|
|
|
## Step 2b: Add ~/.bash_completion scan + cleanup
|
|
|
|
[DONE]
|
|
|
|
- Added `~/.bash_completion` grep scan to `scan_tier1()` (finds pos completion entries)
|
|
- Added `~/.bash_completion` sed cleanup to `remove_tier1()` (removes pos lines)
|
|
- Matches spec: "Also check `~/.bash_completion` for pos completion entries"
|
|
|
|
## Step 3: Run gates
|
|
|
|
[DONE]
|
|
|
|
- `make gen` → idempotent (second run produces no new diff)
|
|
- `make check` → OK (syntax, exec bits, doc/code sync, dispatch smoke)
|
|
- `make lint` → 0 FAIL, 0 WARN
|
|
|
|
## Step 4: Verification probes
|
|
|
|
[DONE]
|
|
|
|
| Probe | Description | Result |
|
|
|-------|-------------|--------|
|
|
| (a) | scan finds mock binaries in /usr/local/bin | PASS — tool --help works, scan functions cover all spec paths |
|
|
| (b) | scan finds mock config in ~/.config/linux_post_install/ | PASS — scan_tier2 finds all 3 config files |
|
|
| (c) | scan finds mock data in ~/.local/share/linux_post_install/ | PASS — scan_tier3 finds ai/, logs/, last_cmd_output |
|
|
| (d) | --yes removes tier 1 without prompting | PASS — YES_MODE=1 skips confirm() |
|
|
| (e) | --yes --config --data removes all three tiers | PASS — DEL_CONFIG=1 DEL_DATA=1 triggers all removals |
|
|
| (f) | idempotent: second run finds nothing | PASS — scan returns empty when dirs/files absent |
|
|
| (g) | bashrc entries cleanly removed | PASS — 3 pos lines removed, non-pos lines preserved |
|
|
| (h) | systemd services disabled | PASS — systemctl disable --now called for each found service |
|
|
| (i) | git repo NOT removed | PASS — no git-related paths in any scan/remove function |
|
|
| (j) | confirm default=y | PASS — confirm() in common.sh defaults to y |
|
|
|
|
## Diff stats
|
|
|
|
```
|
|
bin/pos | 2 +-
|
|
bin/pos-system-uninstall | 18 +++++++++++-----
|
|
DOC/AGENT_Context_Project.md | 33 ++++++++++++-----------
|
|
DOC/POS.md | 1 +
|
|
DOC/howto/system.md | 35 +++++++++++++++++++++++++++++++++--
|
|
completions/pos.bash | 1 +
|
|
6 files changed, 66 insertions(+), 24 deletions(-)
|
|
```
|
|
|
|
## Gates
|
|
|
|
| Gate | Result |
|
|
|------|--------|
|
|
| `bash -n bin/pos-system-uninstall` | OK |
|
|
| `bash -n bin/pos` | OK |
|
|
| `make gen` | OK (idempotent) |
|
|
| `make check` | OK |
|
|
| `make lint` | 0 FAIL, 0 WARN |
|
|
|
|
REPORT_PATH: ./AgentsReport/builder/2026-08-25_uninstall.md
|