feat(repos)!: add repos diff and repos sync CLI commands - #4079
Conversation
|
🤖 Finished Review · ✅ Success · Started 9:36 PM UTC · Completed 9:45 PM UTC |
PR Summary by Qodofeat(repos): add diff/sync commands to reconcile repos.yaml drift
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.
|
ReviewRe-review after branch update (prior review SHA FindingsLow
Previous runReviewRe-review after branch update (prior review SHA FindingsLow
Previous run (2)ReviewRe-review after branch update (prior review SHA FindingsLow
Previous run (3)ReviewRe-review after branch update (prior review SHA FindingsLow
Previous run (4)ReviewRe-review after branch update (prior review SHA FindingsMedium
Low
Previous run (5)ReviewThis is a re-review after the branch was rebased (prior review SHA The implementation across all new commands is well-structured: FindingsMedium
Low
Labels: PR adds new CLI subcommands in the repos package and modifies the WIFProvisioner interface Previous run (6)ReviewThis is a re-review after new commits were pushed. The prior review (SHA 94e0b1a) covered only the The implementation is well-structured across all new commands: the config-struct + FindingsMedium
Low
Previous run (7)ReviewThis is a re-review after new commits were pushed. The prior review (SHA 94e0b1a) covered only the The implementation is well-structured across all new commands: the config-struct + FindingsMedium
Low
Previous run (8)ReviewThree prior low findings from the last review have been addressed: concurrency flag descriptions now consistently say The implementation remains well-structured: the config-struct + FindingsLow
Previous run (9)ReviewThree prior low findings from the last review have been addressed: concurrency flag descriptions now consistently say The implementation remains well-structured: the config-struct + FindingsLow
Previous run (10)ReviewAll prior medium+ findings from earlier review iterations are resolved: The implementation is well-structured: the config-struct + FindingsLow
Previous run (11)ReviewFindingsLow
Previous run (12)ReviewAll prior medium findings are resolved: The implementation is well-structured: FindingsLow
Previous run (13)ReviewAll prior high and medium findings have been addressed: glob-expanded repo config resolution now uses FindingsMedium
Low
Previous run (14)ReviewWell-structured feature PR that adds High: Wrong config resolution for glob-expanded repos in Sync
For glob-expanded repos (e.g.,
Remediation: Propagate the
Medium: Concurrency bounds not validated
Low findings
Labels: PR adds new CLI subcommands (repos diff, repos sync) in the repos package Previous run (15)ReviewWell-structured feature PR that adds High: Wrong config resolution for glob-expanded repos in Sync
For glob-expanded repos (e.g.,
Remediation: Either propagate the Medium: Partial changes applied on secret check errorIn Remediation: Either return nil changes on secret check failure (preventing partial application), or continue iterating through remaining secrets and collect all warnings. Medium: Diff always reports secret updates (noisy output)
Remediation: Consider separating the "ensure secret exists" concept from "update secret value." For Medium: CLI docs not updated
Low: Test coverage gap for glob + per-entry overrides in Sync
Low: Concurrency default inconsistency
Low: Guard variable in managedVariables is dead codeThe Low: No upper bound on --concurrencyThe Labels: PR adds new CLI commands in the repos package Previous run (16)ReviewAll prior high and medium findings have been addressed: glob-expanded repo config resolution now uses FindingsMedium
Low
Previous run (17)ReviewWell-structured feature PR that adds High: Wrong config resolution for glob-expanded repos in Sync
For glob-expanded repos (e.g.,
Remediation: Propagate the
Medium: Concurrency bounds not validated
Low findings
Labels: PR adds new CLI subcommands (repos diff, repos sync) in the repos package Previous run (18)ReviewWell-structured feature PR that adds High: Wrong config resolution for glob-expanded repos in Sync
For glob-expanded repos (e.g.,
Remediation: Either propagate the Medium: Partial changes applied on secret check errorIn Remediation: Either return nil changes on secret check failure (preventing partial application), or continue iterating through remaining secrets and collect all warnings. Medium: Diff always reports secret updates (noisy output)
Remediation: Consider separating the "ensure secret exists" concept from "update secret value." For Medium: CLI docs not updated
Low: Test coverage gap for glob + per-entry overrides in Sync
Low: Concurrency default inconsistency
Low: Guard variable in managedVariables is dead codeThe Low: No upper bound on --concurrencyThe Labels: PR adds new CLI commands in the repos package Previous run (19)ReviewFindingsLow
|
1dcb8e3 to
e8e581b
Compare
|
🤖 Finished Review · ✅ Success · Started 12:55 AM UTC · Completed 1:06 AM UTC |
e8e581b to
f71d575
Compare
|
🤖 Finished Review · ✅ Success · Started 1:54 AM UTC · Completed 2:10 AM UTC |
Superseded by updated review
f71d575 to
466a3e0
Compare
|
🤖 Finished Review · ✅ Success · Started 2:17 AM UTC · Completed 2:30 AM UTC |
466a3e0 to
77aa6e4
Compare
|
🤖 Finished Review · ✅ Success · Started 2:34 AM UTC · Completed 2:47 AM UTC |
9030ccf to
1bea3a9
Compare
|
🤖 Finished Review · ✅ Success · Started 8:05 PM UTC · Completed 8:19 PM UTC |
Add `fullsend repos diff` (read-only drift preview) and `fullsend repos sync` (write reconciliation) for managing per-repo configuration at scale. diff compares the manifest's desired state against actual forge state and reports variable/secret drift. sync applies changes to reconcile drift, with --dry-run support. Both commands support --json output, repo filtering, and parallel execution. Also adds checkPerRepoScopes preflight to repos uninstall, and a ProbeRepoState warning in repos init for partial probe failures. Signed-off-by: Greg Allen <greg@fullsend.ai> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
1bea3a9 to
3c64248
Compare
|
🤖 Finished Review · ✅ Success · Started 8:28 PM UTC · Completed 8:44 PM UTC |
|
🤖 Finished Retro · ✅ Success · Started 9:08 PM UTC · Completed 9:20 PM UTC |
|
Retrospective analysis of PR #4079 — a human-authored PR adding Proposals filed
|
BREAKING CHANGE: repos diff and repos sync CLI commands have been removed. These commands, originally added in PR fullsend-ai#4079, are reverted in this PR. Reimplementation is tracked in the repos management plan. Signed-off-by: Greg Allen <gallen@redhat.com> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add docs/problems/review-autonomy-evidence.md as a structured evidence corpus tracking empirical observations from PRs where both agent and human review can be compared. Document counter-evidence from PR #4079 (repos sync/diff feature, 16 agent runs) where the human reviewer found all 6 high-impact findings the agent missed, spanning spec compliance, fix regression, API contract, and test adequacy gaps. Include references to prior counter-evidence (#5266, #5251) and positive evidence (#4852, #4532, #4995). Add cross-references from autonomy-spectrum.md, code-review.md, and trustworthiness-evidence.md. Closes #5268 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix overgeneralized model-squad parenthetical: replaced specific "(Claude x2 + Grok)" with "(varying model combinations across rounds)" since different rounds used different models (Gemini vs Grok) - Fix "Missed in all 16 runs" for rows 4 and 6 in PR #4079 table: both were addressed mid-sequence, not missed across all 16 runs - Replace unverifiable timestamp claim ("approved the broken fix immediately (run at 02:28 UTC, Jul 17)") with verifiable claim ("reviews around the fix never flagged the regression") - Remove "catching regressions introduced by fixes" from agent strengths list: contradicts documented evidence where the agent approved the broken fix and the human caught the regression - Re-add "Semver and version comparison" to the underperform list: was removed by the prior fix without folding it into a surviving item - Add findings-delta for positive evidence #4852 and #4532 to match the detail level of counter-evidence entries Addresses review feedback on #5269
Summary
fullsend repos diffcommand — read-only preview of configuration drift between therepos.yamlmanifest and actual forge statefullsend repos synccommand — writes variables and secrets to reconcile repos with the manifestFULLSEND_PER_REPO_INSTALL,FULLSEND_MINT_URL,FULLSEND_GCP_REGION) and 1 secret (FULLSEND_GCP_PROJECT_ID); does not touch scaffold shim version or harness files (managed byrepos upgrade)FULLSEND_PER_REPO_INSTALL) is reconciled per the plan spec — repos with a missing or incorrect guard will report drift and be healed by synccheckPerRepoScopespreflight runs for bothdiffandsync, with--json-safe output (printer writes toio.Discardin JSON mode)run*()pattern from feat(repos)!: add, remove, install, uninstall subcommands #4081 withtestClientDI for integration testingImplements PR 6 from the repos management plan.
Files changed
internal/repos/sync.goDiff(),Sync(),FormatDiffTable()with semaphore-bounded concurrencyinternal/repos/sync_test.gointernal/cli/repos.goreposDiffConfig/reposSyncConfigstructs,runReposDiff()/runReposSync()functions, cobra command wiringinternal/cli/repos_test.gorun*()directly with fake clientsTest plan
go test ./internal/repos/— all 38 sync tests passgo test ./internal/cli/— all repos CLI tests pass (flag tests + integration tests)go build ./...— clean buildDiff93.3%,diffRepo100%,Sync89.7%,ensureSecrets/applyChanges/validateConcurrency/FormatDiffTable100%🤖 Generated with Claude Code