feat: make triage agent multi-forge (GitHub + GitLab) - #686
Conversation
|
🤖 Finished Review · ✅ Success · Started 1:08 AM UTC · Completed 1:26 AM UTC |
PR Summary by QodoMake triage agent multi-forge (GitHub + GitLab)
AI Description
Diagram
High-Level Assessment
Files changed (16)
|
Code Review by Qodo
1.
|
ReviewFindingsHigh
Low
Next steps:
Previous runReviewFindingsHigh
Low
Next steps:
Previous run (2)ReviewFindingsHigh
Low
Next steps:
Previous run (3)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (4)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (5)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (6)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (7)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (8)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (9)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (10)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (11)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (12)ReviewFindingsHigh
Medium
Low
Next steps:
Previous run (13)ReviewFindingsHigh
Medium
Low
Labels: PR modifies sandbox security policies, credential isolation between forges, and workflow command injection handling. Next steps:
|
waynesun09
left a comment
There was a problem hiding this comment.
Additional finding not anchorable to a line in this diff (file untouched by this PR):
CRITICAL: skill reorg leaves the unrelated review agent's issue-labels skill pointing at a directory with no SKILL.md
harness/review.yaml:16 — This PR moves skills/issue-labels/SKILL.md to skills/issue-labels/github/SKILL.md and adds a sibling skills/issue-labels/gitlab/SKILL.md; skills/issue-labels/ now contains only the github/ and gitlab/ subdirectories, with no SKILL.md directly under it. harness/triage.yaml was correctly updated to the new per-forge paths, but harness/review.yaml (not touched by this PR) still lists the old top-level skills/issue-labels path, and agents/review.md's frontmatter still declares skills: - issue-labels unchanged. The review agent is single-forge/GitHub-only and unrelated to this PR's triage work but shares this skill; after merge, its issue-labels skill mount resolves to a directory with no SKILL.md, silently breaking (or failing to load) its label recommendations.
Suggestion: update harness/review.yaml to reference skills/issue-labels/github (and update agents/review.md's frontmatter to match), or restore a top-level skills/issue-labels/SKILL.md that re-exports/dispatches to the forge-specific variant for backward compatibility. Grep the repo for every consumer of a renamed skill path before merging a skill reorg.
e8850dd to
55e87a3
Compare
|
🤖 Finished Review · ✅ Success · Started 8:07 PM UTC · Completed 8:26 PM UTC Commit: |
55e87a3 to
a659284
Compare
|
🤖 Finished Review · ✅ Success · Started 8:32 PM UTC · Completed 8:53 PM UTC Commit: |
a659284 to
69bea6a
Compare
|
🤖 Finished Review · ✅ Success · Started 9:00 PM UTC · Completed 9:19 PM UTC Commit: |
69bea6a to
a1283a8
Compare
|
🤖 Finished Review · ✅ Success · Started 9:26 PM UTC · Completed 9:45 PM UTC Commit: |
a1283a8 to
a206dd9
Compare
|
🤖 Finished Review · ✅ Success · Started 1:15 AM UTC · Completed 1:35 AM UTC Commit: |
a206dd9 to
a6775b5
Compare
|
🤖 Finished Retro · ✅ Success · Started 4:03 AM UTC · Completed 4:13 AM UTC Commit: |
Retro: PR #686 — feat: make triage agent multi-forge (GitHub + GitLab)Timeline
Review QualityHuman reviewer (waynesun09) found every blocking issue. Bots found none of them. The 9 HIGH/CRITICAL findings from waynesun09 included: The review bot's 30 cycles contained ~25 valid low/medium findings and ~12 false positives or noise findings. Its most problematic behavior: re-raising findings after the author fixed them (the race-condition finding appeared in all 30 reviews, including after the code was rewritten to eliminate the race entirely), and using 6 different tag names for the same conceptual finding (skill-path-change, breaking-skill-path, scope-coherence, scope-creep, etc.). maruiz93 raised an architectural security observation about credential isolation (GITLAB_TOKEN should use an openshell provider rather than env var injection) that no bot detected — a higher-abstraction-level concern about the sandbox security model. Proposals Filed
Evidence for Existing Issues (proposals skipped to avoid duplicates)
Autonomy ReadinessThis PR is a negative signal for review agent autonomy on infrastructure PRs requiring cross-system reasoning. The bot's 30 reviews drove zero code changes; all substantive fixes were driven by human review. The bot's inability to reason about Go harness internals, validate test infrastructure, or verify forge API capabilities means human review remains essential for this class of change. Proposals filed |
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR fullsend-ai#686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to fullsend-ai#807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR fullsend-ai#686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to fullsend-ai#807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR fullsend-ai#686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to fullsend-ai#807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR fullsend-ai#686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to fullsend-ai#807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR fullsend-ai#686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format Related to fullsend-ai#807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format - GITLAB_HOST derived from ISSUE_URL at runtime, not injected via harness env (avoids os.Expand failure on unset var) Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Add forge-dispatch architecture to the code agent, following the patterns established by the triage agent in PR #686. New ops libraries: - scripts/lib/code-ops.lib.sh: forge dispatcher (FULLSEND_FORGE) - scripts/lib/github-code-ops.lib.sh: GitHub impl using gh CLI - scripts/lib/gitlab-code-ops.lib.sh: GitLab impl using curl Refactored scripts: - pre-code.src.sh: uses forge_* functions for URL validation, existing-PR check, label/comment operations - post-code.src.sh: uses forge_* functions for push auth, PR/MR creation, auto-merge, assignee resolution, labels, comments, and CI URL generation Configuration: - harness/code.yaml: added forge.gitlab section with policy, skills, host_files, and env vars - policies/github/code.yaml: existing policy moved to forge dir - policies/gitlab/code.yaml: GitLab-specific network policy (curl binary, gitlab.com endpoints) - env/github/code.env: GitHub-specific vars (ISSUE_URL, GH_TOKEN) - env/gitlab/code.env: GitLab-specific vars (ISSUE_URL, GITLAB_TOKEN) - env/code.env: shared vars only (git identity, timeouts, Go) Key design decisions: - PR_NUMBER_FROM_URL convention preserved to avoid SC2153 - forge_list_prs_for_branch propagates errors (fail-closed) - post-failure-report.lib.sh left untouched (fix agent compat) - pr-assignee.lib.sh left untouched; GitLab ops remap response shapes to match GitHub expected format - GITLAB_HOST derived from ISSUE_URL at runtime, not injected via harness env (avoids os.Expand failure on unset var) Related to #807 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
Summary
scripts/github/triage-ops.sh,scripts/gitlab/triage-ops.sh) with a sharedforge_*function interfacepolicies/{github,gitlab}/,env/{github,gitlab}/,skills/{github,gitlab}/,skills/issue-labels/{github,gitlab}/ISSUE_URL, generic terminology, delegates CLI commands to forge skills)Dependencies
PolicyinForgeConfig(merged)skillsandhost_filesfetch from URL bases (merged)Test plan
bash scripts/post-triage-test.sh) — 101 GitHub + 11 GitLab🤖 Generated with Claude Code