From f63569e879c3200c559eb020c0db888ac77e1f80 Mon Sep 17 00:00:00 2001 From: Kyle Sexton <153232337+kyle-sexton@users.noreply.github.com> Date: Tue, 21 Jul 2026 12:44:32 -0400 Subject: [PATCH] fix(disk-hygiene): define "suspicious" for unhinted home-root entries The clean skill's step 2 referenced "hinted or suspicious" entries but never said what made an unhinted entry suspicious, so agent-session droppings with no shared name shape (a status snapshot, a one-off export) were never triaged even though the scan snapshot already records every walked entry. Step 2 now instructs the model to treat any loose root-level entry at a user-home target that isn't in protected_exact_names and doesn't match a recognizable app/config convention as suspicious. baseline-policy.json is untouched: the tmp_* hint-glob gap this issue also reported already shipped in #286, and the remaining class has no common name shape to glob without fabricating a pattern the evidence doesn't support. Closes #287 Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01K1V3gkrfSf75isB8MiDy3o --- plugins/disk-hygiene/.claude-plugin/plugin.json | 2 +- plugins/disk-hygiene/CHANGELOG.md | 14 ++++++++++++++ plugins/disk-hygiene/skills/clean/SKILL.md | 7 +++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/plugins/disk-hygiene/.claude-plugin/plugin.json b/plugins/disk-hygiene/.claude-plugin/plugin.json index b4ee75806..e32f4d3d0 100644 --- a/plugins/disk-hygiene/.claude-plugin/plugin.json +++ b/plugins/disk-hygiene/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "disk-hygiene", - "version": "0.4.1", + "version": "0.4.2", "description": "Context-aware disk hygiene for arbitrary directory trees: inventories orphaned and temporary artifacts, classifies evidence into review tiers, and offers exact-path cleanup only after a fresh safety preview and explicit per-tier approval. The target is read-only by default; OS-managed paths, links and mount points, VCS-tracked content, changed entries, and live-handle uncertainty fail closed.", "author": { "name": "Melodic Software", diff --git a/plugins/disk-hygiene/CHANGELOG.md b/plugins/disk-hygiene/CHANGELOG.md index 4a1786a0e..b62339cdb 100644 --- a/plugins/disk-hygiene/CHANGELOG.md +++ b/plugins/disk-hygiene/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to the `disk-hygiene` plugin are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); this plugin uses semantic versioning. +## [0.4.2] + +### Fixed + +- **The `clean` skill's step 2 now defines "suspicious" for home-directory targets.** A prior + fix covered the `tmp_*` hint-glob gap but left two findings open: an unhinted agent-session + status file has no shared name shape to glob, and SKILL.md never said what "suspicious" + meant for an unhinted entry. Both are the same gap: the scan snapshot already records every + walked entry with a possibly-empty `hints` list, so the data was always there, just never + triaged. Step 2 now instructs the model to treat any loose root-level entry at a user-home + target that is not in `protected_exact_names` and does not match a recognizable app/config + convention as suspicious, closing the triage gap without inventing a fabricated + baseline-policy.json glob for a naming pattern the evidence doesn't support. (#287) + ## [0.4.1] ### Fixed diff --git a/plugins/disk-hygiene/skills/clean/SKILL.md b/plugins/disk-hygiene/skills/clean/SKILL.md index 894e4cf8b..4a040293c 100644 --- a/plugins/disk-hygiene/skills/clean/SKILL.md +++ b/plugins/disk-hygiene/skills/clean/SKILL.md @@ -86,6 +86,13 @@ rule below. ## 2. Establish evidence and ownership +A hint annotation is not the only trigger for triage: at a user-home target, treat any loose +root-level entry that is not in `protected_exact_names` and does not belong to a recognizable +app/config convention as suspicious too — the snapshot already carries it (every walked entry is +recorded with a possibly-empty `hints` list), so nothing further needs discovering, only judging. +This positional read is how session-state droppings that share no common name (a runner-controller +status snapshot, a one-off data export) surface for ownership triage even without a matching hint. + For each hinted or suspicious entry, inspect enough neighboring content and metadata to answer: 1. What created it? Prefer a manifest, log, documented naming contract, sibling structure, or owning