Repository navigation
Reject incomplete inventory captures and verify provider coverage - #55
Merged
Merged
Conversation
There was a problem hiding this comment.
🔵 Needs a closer look
Final committed-head cross-platform/native verification and artifact inspection still require maintainer confirmation.
0 open findings
What changed in this PR
This PR strengthens SkillView’s inventory completeness checks so truncated provider output cannot establish cached coverage or support absence-based cleanup.
Changes:
- Reject explicitly truncated
gh skill listoutput before JSON parsing. - Add ten capture regressions and native POSIX permission-denial proofs in CI.
- Preserve PR #54 evidence, close M02, and document pending M04 verification.
| File | Description |
|---|---|
| tests/SkillView.Tests/Inventory/InventoryProviderOutcomeTests.cs | Tests failures, retries, coverage, and cleanup suppression. |
| src/SkillView.Core/Inventory/LocalInventoryService.cs | Corrects the minimum-version comment. |
| src/SkillView.Core/Inventory/CleanupClassifier.cs | Clarifies tracking-absence semantics in comments. |
| src/SkillView.Core/Gh/GhSkillListAdapter.cs | Rejects truncated captures without caching. |
| AGENTS.md | Documents capture-completeness requirements. |
| agent_docs/running-tests.md | Explains regression and native-proof procedures. |
| agent_docs/maintenance-implementation.md | Records acceptance progress and verification limits. |
| agent_docs/maintenance-acceptance.json | Marks M02 complete using merged evidence. |
| agent_docs/evidence/prove-inventory-denied-root.py | Adds isolated POSIX permission-denial verification. |
| agent_docs/evidence/maintenance-batch-8-provider-checkpoint.json | Records local validation evidence and pending gates. |
| .github/workflows/ci.yml | Runs denial proofs for both native POSIX 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.
An exit-zero gh inventory result marked as truncated must not become complete, cacheable root coverage. The adapter now rejects its explicit stdout-truncation flag before JSON parsing. The current runner already appends a non-JSON truncation marker; this makes the adapter honor its completeness contract directly.
Ten full-capture regressions distinguish credential/network process failures, malformed and incompatible JSON, explicit truncation, valid empty inventory, failed custom coverage despite default success, denied enumeration and missing custom roots. They preserve provider diagnostics, retry failed captures and prevent absence-based cleanup. Valid empty coverage yields only review-only Untracked observations.
Validation:
This PR also preserves PR #54 final evidence and closes original M02. Original M04 has final platform proof and awaits merge; the full 21-item goal remains active.