Repository navigation
Keep cleanup suppression outside installed skill payloads - #64
Merged
Merged
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Preference-root failures can abort inventory, and incomplete ownership evidence can incorrectly retain suppression.
2 open findings
What changed in this PR
Moves cleanup suppression into private external preferences, preserving installed payloads and legacy markers. This advances M08 without completing its remaining maintenance workflows.
Changes:
- Adds exact-install CLI set/clear commands and background TUI Ignore actions.
- Integrates suppression status and diagnostics into inventory.
- Adds regression tests, native CI proofs, and updated acceptance records.
| File | Description |
|---|---|
| tests/SkillView.Tests/Ui/CleanupSuppressionScreenTests.cs | Tests cancellation and confirmation threading. |
| tests/SkillView.Tests/Preferences/CleanupSuppressionStoreTests.cs | Tests preference integrity, binding, and bounds. |
| tests/SkillView.Tests/Cli/CliDispatcherIgnoreTests.cs | Tests selectors and alias resolution. |
| src/SkillView.Core/Ui/SkillViewWorkflowCoordinator.cs | Supplies fresh inventory and triggers rescans. |
| src/SkillView.Core/Ui/InstalledScreen.cs | Displays suppression details. |
| src/SkillView.Core/Ui/CleanupScreen.cs | Runs owned background suppression actions. |
| src/SkillView.Core/Preferences/CleanupSuppressionWorkflow.cs | Coordinates exact-install batch suppression. |
| src/SkillView.Core/Preferences/CleanupSuppressionStore.cs | Implements bounded external preference storage. |
| src/SkillView.Core/Preferences/CleanupSuppression.cs | Defines observations and persistence records. |
| src/SkillView.Core/Maintenance/PayloadSnapshot.cs | Adds configurable evidence byte limits. |
| src/SkillView.Core/Inventory/Models/InventorySnapshot.cs | Adds independent preference diagnostics. |
| src/SkillView.Core/Inventory/Models/InstalledSkill.cs | Adds transient suppression observations. |
| src/SkillView.Core/Inventory/LocalInventoryService.cs | Enriches inventory with suppression state. |
| src/SkillView.Core/Inventory/IgnoreMarker.cs | Clarifies legacy-marker compatibility comments. |
| src/SkillView.Core/Cli/CliDispatcher.Ignore.cs | Implements exact-install set/clear commands. |
| src/SkillView.Core/Cli/CliDispatcher.cs | Adds routing, help, and suppression output. |
| docs/usage.md | Documents commands and limitations. |
| AGENTS.md | Records suppression safety requirements. |
| agent_docs/maintenance-local-dispositions.md | Retains remaining M08 work. |
| agent_docs/maintenance-implementation.md | Records M12 acceptance and suppression progress. |
| agent_docs/maintenance-external-suppression.md | Documents suppression design and proof requirements. |
| agent_docs/maintenance-effective-loading.md | Records final M12 acceptance. |
| agent_docs/maintenance-acceptance.json | Updates the acceptance ledger. |
| agent_docs/evidence/prove-cleanup-suppression.py | Adds disposable native suppression proofs. |
| agent_docs/evidence/maintenance-batch-14-checkpoint.json | Records local validation evidence. |
| .github/workflows/ci.yml | Runs suppression proofs for both native hosts. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
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.

Cleanup Ignore writes
.skillview-ignoreinto installed payloads, changing content that an installer or update review may treat as authored files. Store new suppression preferences in private external state instead, preserving legacy markers as a separate reported origin.Exact path/install-ID CLI set and clear commands and owned background TUI actions bind one physical installation across its consumer contexts. Stable source/owner namespaces survive revision changes; unknown sources require native continuity and bounded whole-payload evidence. Reads are noncreating, corrupt state leaves suggestions visible, publication is serialized and bounded with clear capacity reserved, and partial changes trigger a rescan. Agent symlink aliases resolve to the physical installation. Cleanup removal confirmation stays on the event-loop thread.
Validation: build and formatting pass; all 1,752 tests pass without failures/skips, including 20 preference, two event-loop, and eight CLI regressions. Both sequential macOS ARM64 AOT publishes pass (standalone strict trimming/AOT warnings). Both native hosts pass 116 disposable commands across minimum/current gh, actual remote/local installs and ownerless copies, proving unchanged payload objects/modes and registry bytes, restart, alias/same-name isolation, edited-source expiry, legacy preservation, alternate state and corrupt-clear behavior. CI adds both-host native proofs to every RID. Independent store and UI/CLI/proof reviews were corrected and re-reviewed without outstanding agreed findings. Copilot findings for missing-home setup and incomplete ownership coverage are fixed with regressions; owner-only provenance is rechecked against live metadata. Both Copilot threads are resolved.
This is an M08 slice, not completion of its original acceptance. Preserve/merge/fork/source/owner transitions, non-installation suppression and damaged/stale preference recovery remain tracked. The acceptance ledger remains at 9/21 complete. The PR also retains the verified M12 final evidence and merged-tree attribution from #63.