--- name: project_gururmm_software_removal_pr58 description: SPEC-030 software-removal hardening (driver exclusion, lingering-process sweep, job list/reaper) is on PR #58 awaiting merge; live testing planned 2026-07-06 on DESKTOP-MS42HNC. metadata: type: project --- GuruRMM SPEC-030 software removal (Assets -> Inventory tab): the 2026-06-24 session's open requests were implemented 2026-07-05 and sit on branch `feat/software-removal-hardening`, **PR #58** (https://git.azcomputerguru.com/azcomputerguru/gururmm/pulls/58), NOT merged — merge deploys to beta. Live testing planned 2026-07-06 on the test box DESKTOP-MS42HNC (agent 0de89b88-b21d-4647-ab64-96157ba87cc5). What PR #58 contains: - Engine `-List` emits `is_driver` (heuristic: driver/chipset/firmware name words, or hw-vendor publisher + device words; junkware like "Driver Booster" deliberately excluded). Dashboard hides drivers by default, keeps them out of select-all, deselects on re-hide. - End-of-run lingering-uninstaller sweep in uninstall-engine.ps1: 45s budget-aware grace, then taskkill of started trees (StartTime PID-reuse guard, same-session only, null CreationDate excluded) + late re-verify that flips async-finisher false-failures to success. This is the chosen resolution of the Launchy/AIMP "failed / no usable result" open decision. - `GET /agents/:id/software/uninstall/jobs` (list, results omitted), stale-running-job reaper (900s no-progress -> failed), `finish_job` guarded WHERE status='running', UI 100-target cap. Verified pre-merge: engine live tests on Howard-Home (driver flags, sweep kill/no-kill, orphaned/refused paths), heuristic unit cases, `verify.sh server --check` + `dashboard` PASS, high-effort workflow code review with all confirmed findings fixed. Remaining after this: recipe catalog (P3, [[project_gururmm_av_removal_recipes]] if created), dashboard UI for the new job-list endpoint (client binding `softwareApi.uninstallJobs` exists, unused), and TeamViewer retry-verify still not re-validated live.