refactor(config): remove OrgConfig.Agents field (ADR-0045 Phase 4 PR 4)#2517
Conversation
PR Summary by QodoRefactor: remove OrgConfig agents block and inline AgentCredentials identity Description
Diagram
High-Level Assessment
Files changed (10)
|
Site previewPreview: https://24110868-site.fullsend-ai.workers.dev Commit: |
|
🤖 Finished Review · ✅ Success · Started 4:09 PM UTC · Completed 4:20 PM UTC |
Code Review by Qodo
Context used✅ Tickets:
🎫 Shared Feature Toggle Strategy for HCC✅ Compliance rules (platform):
51 rules✅ Skills:
writing-user-docs, writing-adrs 1. PEM blocks hardcoded in tests
|
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
ReviewFindingsLow
Previous review fixed: The prior review's high finding about Previous runReviewFindingsHigh
Low
Previous review fixed: The prior review's high finding about Previous runReviewFindingsHigh
Low
Labels: PR is a Go refactoring chore removing deprecated config types as part of ADR-0045 migration. Labels: PR is a Go refactoring chore removing deprecated config types as part of ADR-0045 migration. Previous runReviewFindingsHigh
Low
Previous review fixed: The prior review's high finding about Labels: PR is a Go refactoring chore removing deprecated config types as part of ADR-0045 migration. Previous run (2)ReviewFindingsHigh
Low
Labels: PR is a Go refactoring chore removing deprecated config types as part of ADR-0045 migration. Previous run (3)ReviewFindingsHigh
Low
Labels: PR is a Go refactoring chore removing deprecated config types as part of ADR-0045 migration. Previous run (4)ReviewFindingsMedium
Low
Labels: PR removes config types and modifies install/harness layer code |
waynesun09
left a comment
There was a problem hiding this comment.
Review Squad Report — 8 agents (Claude, Gemini, Codex)
Overall: LGTM — Go-side changes are clean, complete, and correct. Safe to merge.
LOW — Plan deviation: AgentEntry inlined (improvement over plan)
The Phase 4 plan explicitly says "Does NOT remove AgentEntry" but this PR removes it and inlines Role, Name, Slug directly into AgentCredentials. This is a better outcome — cleaner decoupling, no cross-package dependency. Consider updating the plan doc to reflect what shipped.
Flagged by 3 agents (consensus)
LOW — Missing explicit backward-compatibility test for legacy agents: YAML
The Phase 4 plan recommends: "Add a test: parse config YAML that has an agents: block → verify it parses without error." No such dedicated test exists. Backward compat is implicitly verified by residual agents: [] in other test fixtures, but there's no named test documenting the contract. Consider adding TestParseOrgConfig_IgnoresLegacyAgentsBlock.
Flagged by 3 agents (consensus)
LOW — Web admin findings (stalled, recommend separate issues)
The web admin frontend has three stale code paths now diverged from the backend. Since web admin development has stalled, these are LOW priority and should be tracked as separate issues rather than blocking this PR:
-
agentsFromConfig()reads removedagentsblock —orgConfigParse.ts:197-198returns(cfg.agents ?? []).map(...)which will always be[], causinganalyzeSecretsLayerto vacuously report "installed." Should derive roles fromdefaults.rolesinstead. -
variableNameForRolewrong suffix —secrets.ts:10generatesFULLSEND_{ROLE}_APP_IDbut Go backend usesFULLSEND_{ROLE}_CLIENT_ID(internal/layers/secrets.go:187). Pre-existing bug. -
VALID_ROLEShas 4 roles vs Go's 8 —orgConfigParse.ts:18defines["fullsend", "triage", "coder", "review"]but GoValidRoles()includesfix,retro,prioritize,e2e. Pre-existing.
These three should each get a tracking issue so they aren't lost.
Flagged by 5 agents (strong consensus)
Assisted-by: Claude (review), Gemini (review), Codex (review)
edcc268 to
b5e4f87
Compare
|
🤖 Finished Review · ❌ Failure · Started 7:19 PM UTC · Completed 7:31 PM UTC |
b5e4f87 to
e4cf824
Compare
|
🤖 Finished Review · ❌ Failure · Started 7:45 PM UTC · Completed 7:58 PM UTC |
e4cf824 to
5ad692c
Compare
|
🤖 Review · |
…ase 4 PR 4) Remove AgentEntry type, OrgConfig.Agents field, AgentSlugs(), and HasAgentsBlock() — agent identity now lives exclusively in harness wrapper files. Inline Role/Name/Slug fields into layers.AgentCredentials to replace the embedded AgentEntry. 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>
5ad692c to
b76d35d
Compare
|
🤖 Finished Review · ✅ Success · Started 8:43 PM UTC · Completed 8:59 PM UTC |
|
🤖 Finished Retro · ✅ Success · Started 10:34 PM UTC · Completed 10:43 PM UTC |
Retro: PR #2517 — refactor(config): remove OrgConfig.Agents fieldOverall assessment: This human-authored refactoring PR had a smooth review cycle with good-quality feedback from both automated reviewers and the human review squad. The main inefficiency was two wasted review runs caused by a known bug (GitHub API 422 when posting inline comments outside the PR diff), and four merge queue attempts before successful merge. Timeline
Review qualityReview quality was strong across all sources. The fullsend-ai-review bot, qodo-code-review bot, and waynesun09's review squad all identified real (if low-severity) issues. The human author responded thoughtfully — filing follow-up issues for pre-existing problems rather than blocking the PR, and fixing the actionable comment clarity suggestion. Existing issue coverageThe primary inefficiency (422 errors on inline comment submission) is already tracked by #1067 ("post-review: handle GitHub API 422 on inline comment submission gracefully"), which remains open. A related issue #1349 suggests it was partially addressed by PR #1348, but this PR demonstrates the fix is incomplete — the review agent still fails when it attempts to post No new proposalsNo new proposals are warranted because:
|
Summary
AgentEntrytype,OrgConfig.Agentsfield,AgentSlugs(), andHasAgentsBlock()frominternal/config/Role,Name,Slugfields directly intolayers.AgentCredentials(previously embedded viaconfig.AgentEntry)admin.go,github.go,mint_test.go, and layer testsTestOrgConfigAgentSlugs,TestParseOrgConfig_WithoutAgentsBlock,TestParseOrgConfig_EmptyAgentsList,TestHasAgentsBlock,TestOrgConfigMarshal_NilAgentsOmitted,TestOrgConfigMarshal_EmptyAgentsOmittedagents: []from test fixture YAMLContext
This is Phase 4, PR 4 of ADR-0045 (Forge-Portable Harness Schema) — the final PR. PRs 1-3 required
roleinValidate(), stopped writing theagents:block during install, and removed legacy discovery fallbacks. This PR removes the field itself, completing the migration: agent identity now lives exclusively in harness wrapper files.PR dependency graph (Phase 4)
Test plan
go build ./...— cleango vet ./...— cleango test ./internal/config/... ./internal/layers/... ./internal/cli/...— all passgrep -rn 'AgentEntry' --include='*.go'returns no resultsgrep -rn 'agents:' --include='*.yaml'returns no results in config fixturesAgentSlugs()orHasAgentsBlock()🤖 Generated with Claude Code