feat(repos)!: add, remove, install, uninstall subcommands - #4081
Conversation
|
🤖 Finished Review · ✅ Success · Started 9:51 PM UTC · Completed 10:03 PM UTC |
PR Summary by QodoAdd
AI Description
Diagram
High-Level Assessment
Files changed (4)
|
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
Code Review by Qodo
1. Case-sensitive manifest lookup
|
9e2b73d to
34d2a82
Compare
|
Looks good to me Re-review after 7-commit update. Two of three prior low-severity findings are now resolved: FindingsLow
Previous runLooks good to me Re-review after rebase onto newer base. All prior low-severity findings from the previous review remain applicable on unchanged code — severity is anchored. No new medium+ findings emerged from the six-dimension review. The implementation is well-structured: three new CLI commands ( FindingsLow
Labels: PR adds repos management CLI subcommands and modifies install command Previous run (2)Looks good to me Re-review after rebase onto newer base. The prior review's FindingsLow
Previous run (3)Looks good to me FindingsLow
Previous run (4)Looks good to me Previous run (5)Review — approveRe-review after rebase. All prior review findings remain resolved. The implementation is well-structured: three new CLI commands ( Findings1.
|
|
/fs-review |
|
🤖 Finished Review · ✅ Success · Started 10:04 PM UTC · Completed 10:16 PM UTC |
34d2a82 to
abaea92
Compare
|
🤖 Review · |
abaea92 to
0194795
Compare
|
🤖 Finished Review · ❌ Failure · Started 11:01 PM UTC · Completed 11:18 PM UTC |
Implements PR 7 from the repos-management plan (ADR-0057): - repos upgrade: upgrades scaffold shim refs across manifest repos, with semver comparison, floating ref detection, dry-run, and force override. Accepts positional args for repo filtering. - repos upgrade-mint: verifies the token mint deployment matches the manifest configuration. Both commands use config structs with testClient/testProvisioner injection hooks, matching the pattern established in PR fullsend-ai#4081. Test coverage: 98.7% on internal/repos/upgrade.go. Signed-off-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
0194795 to
eb082a4
Compare
repos remove command for uninstalling fullsend|
🤖 Finished Review · ❌ Failure · Started 2:04 AM UTC · Completed 2:17 AM UTC |
eb082a4 to
46147ef
Compare
|
🤖 Review · |
46147ef to
47bb282
Compare
|
🤖 Finished Review · ❌ Failure · Started 3:08 AM UTC · Completed 3:21 AM UTC |
47bb282 to
b91cc1a
Compare
waynesun09
left a comment
There was a problem hiding this comment.
Review squad pass (3 agents: Claude coder, Claude researcher, Grok). All prior fixes verified correct. 7 new MEDIUM findings posted inline, plus 1 that couldn't be attached inline:
[MEDIUM] ADR 0057 Implementation Status is stale — The ADR (not in this PR's diff) still says repos install "is being implemented in PR #3033" and lists "Remaining subcommands" without mentioning repos add, repos remove, or repos uninstall. Update the status section to reflect what's now implemented.
No HIGH or CRITICAL findings. The destructive teardown ordering and partial-failure handling are functionally sound — the findings are about operator UX (confirmation text, dry-run preview, error reporting) and defensive input validation (glob errors, guard-variable deletion order).
Assisted-by: Claude (review), Grok (review)
47784ae to
f20eaec
Compare
|
🤖 Review · |
f20eaec to
bfac130
Compare
|
🤖 Review · |
Implements ADR-0057 PR 8: three new repos subcommands for managing per-repo installations via the repos.yaml manifest. - repos add: add repo entries to the manifest (with optional --install) - repos remove: remove entries from manifest (with optional --uninstall) - repos uninstall: tear down fullsend from repos without modifying manifest Key design decisions: - Bulk confirmation prompt for destructive actions targeting >1 repo - Partial uninstall failure narrows manifest removal to succeeded repos - Manifest-first behavior for repos add --install (accepted trade-off) - Case-insensitive duplicate detection in AddToManifest - Glob validation: matchesPattern returns ErrBadPattern for malformed globs - Guard variable deleted first for cleaner partial-failure state - errors.Join when both var and secret deletions fail - repos remove --uninstall --dry-run previews the uninstall portion - Confirmation prompt mentions "remove and uninstall" when --uninstall set - Fix glob-matched repos WIF cleanup via resolveConfigWithGlobs helper - Add repoNamePattern validation in AddToManifest - Fix context cancellation reporting success for WIF-incomplete repos - Add --roles flag to repos add --install - Skip glob manifest entries in uninstall paths - Update ADR-0057 implementation status Also fixes a pre-existing WIF provider leak in batch_install cleanup paths: splitProjectAdapter.DeletePerRepoWIF now deletes the WIF provider from the inference project in addition to deregistering from the mint. BREAKING CHANGE: repos install no longer accepts --repo flag; use positional arguments instead (e.g. `fullsend repos install acme/api` instead of `fullsend repos install --repo acme/api`). Closes fullsend-ai#4098 Signed-off-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
bfac130 to
fb63920
Compare
|
🤖 Finished Review · ✅ Success · Started 1:42 PM UTC · Completed 1:56 PM UTC |
waynesun09
left a comment
There was a problem hiding this comment.
Verification squad pass (3 agents: Claude coder, Claude researcher, Grok). All 7 MEDIUM findings from the prior round are verified fixed in the current head:
- Secret deletion error —
errors.Joincombines both errors ✓ - Confirmation prompt — "remove and uninstall" when
--uninstallset ✓ - Guard variable order — guard deleted first ✓
filepath.Matcherror — propagated through all primary callers ✓--yeshelp text — "when multiple repos are targeted" in both commands ✓--dry-rununinstall preview — callsUninstallwithDryRun: true✓- ADR status — out of scope for this PR (tracked in stack)
Build clean, all tests pass. No new MEDIUM+ findings — only LOW test-coverage gaps (combined --dry-run --uninstall path, dual deletion failure path).
Assisted-by: Claude (review), Grok (review)
|
🤖 Finished Retro · ✅ Success · Started 5:24 PM UTC · Completed 5:42 PM UTC |
Implement `fullsend repos upgrade` to batch-upgrade the scaffold shim ref across manifest repos, and `fullsend repos upgrade-mint` to verify the token mint deployment matches the manifest before upgrading. Key design points: - Floating refs (latest, main, partial versions like v0) are skipped - Downgrades blocked unless --force is set - Positional args with glob support for repo filtering - Tag-only pinning (documented limitation) - Test-injection hooks via config structs matching PR fullsend-ai#4081 patterns Signed-off-by: Claude <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Retro: PR #4081 — repos management subcommands (ADR-0057 PR 8)TimelineThis human-authored PR by @ggallen added four CLI subcommands (
Review quality assessmentThe review agent and human-directed squad showed complementary but non-overlapping strengths:
The review agent's initial pass missed all 10 operational safety findings that the human-directed squad later caught. These findings are characterized by reasoning about "what happens when things go wrong in production" rather than "is the code logically correct." The review agent's correctness sub-agent checks for error handling gaps generically but lacks specific patterns for CLI operational safety. Items already tracked by existing issues
Proposals filed (3)The three proposals below target the review agent's correctness sub-agent in Proposals filed
|
Implement `fullsend repos upgrade` to batch-upgrade the scaffold shim ref across manifest repos, and `fullsend repos upgrade-mint` to verify the token mint deployment matches the manifest before upgrading. Key design points: - Floating refs (latest, main, partial versions like v0) are skipped - Downgrades blocked unless --force is set - Positional args with glob support for repo filtering - Tag-only pinning (documented limitation) - Test-injection hooks via config structs matching PR fullsend-ai#4081 patterns Signed-off-by: Claude <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Closes #4098
Implements ADR-0057 PR 8: repos management subcommands for per-repo installations.
Summary
repos add— add repo entries to the manifest (with optional--install)repos remove— remove repo entries from the manifest (with optional--uninstall)repos uninstall— tear down fullsend infrastructure from reposrepos install— updated to accept positional args instead of--repoflagBREAKING CHANGE:
repos install --reporeplaced by positional arguments. This is all new functionality that no users are yet using, so although it is technically a breaking change it will have zero user impact.