Repository navigation
fix(gap): make command outcomes visible - #122
Merged
Merged
Conversation
…tall - update: explain an empty utility list and how distro components update - update: print one line per utility and a summary, on a terminal and piped - restore, pin, remove, uninstall: confirm what changed instead of exiting silently - test: assert the new feedback for each command
…failure summaries
…d static analysis
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes across all six files, including success, no-op, skipped-install, and failure paths; umask 022 && go test ./... passed.
- Update reporting: Per-utility pin outcomes, empty-list guidance, totals, and partial-failure summaries.
- Lifecycle confirmations: Redirect-safe add, remove, and uninstall outcomes through
report.done. - Restore and pin feedback: Scoped repair counts and source pins, plus new, moved, and unchanged pin confirmations.
- Documentation and tests: Documented feedback contracts and regression coverage for command outcomes and restore selection.
gpt-6.1-sol | 𝕏
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.

Intent
gap update and other commands must tell the human what happened: explain an empty utility list, print one line per utility plus a summary, and confirm restore, pin, remove, and uninstall outcomes
What Changed
Risk Assessment
✅ Low: The changes are bounded to CLI feedback, and source review found no material defects in the original change or fix round.
Testing
Base/target builds and comparisons, focused feedback tests, and all 12 live CLI scenarios passed after correcting disposable-fixture setup. CLI transcripts and rendered HTML provide evidence; no GUI screenshot applies. All children completed and fixtures were removed.
Evidence: Rendered CLI transcripts for all scenarios
Evidence: Base and target CLI comparison
Evidence: Terminal completion feedback
Pipeline
Updates from git push no-mistakes
✅ **Intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 2 issues found → auto-fixed ✅
cmd/gap/components.go:766- With clean component A and drifted component B,gap restore Askips B at cmd/gap/components.go:730 but prints that every installed component skill matches its pin. Selection at cmd/gap/components.go:745 also excludes unloaded skills. Limit this confirmation to the selected component and skills actually checked.cmd/gap/utility.go:409- The required behavior, “print one line per utility plus a summary,” is absent on hard update failures. For example, a failing update hook returns at cmd/gap/utility.go:400 after pin-movement lines were printed, bypassing this summary. The same bypass occurs at cmd/gap/utility.go:350 (repository), :354 (ref), :367 (pin), :370 (manifest), :374 (lock write), :390 (lock selection), and :393 (source verification). Preserve a partial/failure summary through a shared reporting exit after utility selection.🔧 Fix applied.
✅ Re-checked - no issues remain.
✅ **Test** - passed
✅ No issues found.
go build -ldflags '-X main.sourceRootFor=<worktree>/.cli-feedback-validation/source' -o .cli-feedback-validation/gap ./cmd/gapgo build -overlay .cli-feedback-validation/baseline-overlay.json -ldflags '-X main.sourceRootFor=<worktree>/.cli-feedback-validation/source' -o .cli-feedback-validation/gap-baseline ./cmd/gapgo test -vet=off ./cmd/gap -run '^Test(UpdateFeedback.*|AddRemoveFeedback|PinFeedback|RestoreFeedback.*|UninstallFeedbackPiped)$' -count=1 -v; passed after setting the disposable Git discovery boundarypython3 ~/.no-mistakes/evidence/01M7BFGXBJH8J4DCGXCSX9SSWD/drive-cli.py "$PWD"; exercised compiled CLI commands, real local repositories, shell hooks, persisted state, pipes, and drained nonzero-size PTYspython3 ~/.no-mistakes/evidence/01M7BFGXBJH8J4DCGXCSX9SSWD/compare-baseline.py "$PWD"; compared base and target confirmationsRemoved disposable binaries, repositories, homes, and temporary data; confirmed no working-tree changes remained.✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.