fix(#880): resolve retro agent provider credential conflict - #883
Conversation
PR Summary by QodoResolve retro GH_TOKEN conflict with a combined GitHub provider
AI Description
Diagram
High-Level Assessment
Files changed (10)
|
|
working on adding some tests... to check if this actually fixes the bug it's related with |
|
🤖 Review · Commit: |
Code Review by Qodo
1.
|
b80c31f to
21e695b
Compare
|
🤖 Review · Commit: |
|
🤖 Finished Review · ✅ Success · Started 2:01 PM UTC · Completed 2:17 PM UTC Commit: |
|
Code review by qodo was updated up to the latest commit 21e695b |
ReviewFindingsMedium
Low
Previous runReviewFindingsMedium
Low
Previous run (2)ReviewFindingsMedium
Low
Previous run (3)ReviewFindingsMedium
Low
Info
Previous run (4)ReviewFindingsMedium
Low
Previous run (5)ReviewFindingsMedium
Low
Previous run (6)ReviewFindingsMedium
Low
Labels: PR fixes a retro agent bug and touches harness/provider/profile infrastructure |
waynesun09
left a comment
There was a problem hiding this comment.
Review squad pass (Claude ×2, Grok) — verified against the live repo and CI. Excluding the existing HIGH protected-path finding since that's a human-review item. 5 unique MEDIUM findings posted inline; one more below that has no attachable file/line:
[MEDIUM] functional-tests (triage) is currently failing on this PR's head commit (21e695b) — case 001-bug-url-encoding fails, a suite unrelated to anything this PR touches. It appears to be a pre-existing flake, surfaced only because this PR's comment-only edits to profiles/fullsend-github-ro.yaml/fullsend-github-artifacts.yaml cause CI's changed-file matching to also select the triage suite. Worth confirming this is tracked separately before merge, since it's currently a red check on this PR for an unrelated reason.
For context: the core fix is verified working — functional-tests (retro) ran green in CI (232s, sandbox_started judge 100%), confirming issue #880's literal failure mode is fixed.
|
🤖 Review · Commit: |
|
Updated the PR description to call out the eval addition as intentional scope expansion — it directly validates the fix by catching credential key conflicts at sandbox startup. |
0d6fe33 to
a10e588
Compare
|
🤖 Finished Review · ✅ Success · Started 2:53 PM UTC · Completed 3:12 PM UTC Commit: |
a10e588 to
919fbe3
Compare
waynesun09
left a comment
There was a problem hiding this comment.
Follow-up from the grok re-review pass on commit 21e695b+0d6fe33: 2 new MEDIUM findings surfaced by the follow-up commit itself (eval judges/budgets), posted inline. These are independent of the node-widening thread already being discussed elsewhere in this PR.
|
🤖 Finished Review · ✅ Success · Started 3:17 PM UTC · Completed 3:34 PM UTC Commit: |
|
🤖 Finished Review · ✅ Success · Started 3:39 PM UTC · Completed 3:56 PM UTC Commit: |
waynesun09
left a comment
There was a problem hiding this comment.
LGTM at 52cf2b6. The pivot to _NOOP_GITHUB_ARTIFACTS restores the two-provider/two-profile pairing, keeps the Azure/actions artifact hosts gh-only (no node widening), matches the fullsend scaffold, and the EVAL_TIMEOUT fix closes the inner/outer timeout inversion. Remaining bot threads are low-severity and answered. Only outstanding signal is functional-tests (retro) on this head — should land green before merge.
…etro agent The retro agent attaches both github-ro and github-artifacts providers, which both declare GH_TOKEN as their credential key. OpenShell rejects duplicate credential env keys across providers on the same sandbox, breaking retro sandbox creation. Add a combined fullsend-github-ro-artifacts profile and provider that covers both API and artifact endpoints under a single GH_TOKEN credential. The retro harness now references this combined provider instead of the two separate ones. Existing github-ro and github-artifacts providers are unchanged — agents that only need one of the two continue using the slim profiles. Closes fullsend-ai#880 Signed-off-by: Marta Anon <manon@redhat.com>
Remove runner.env block (no effect for runner: type: cli, matching code/fix evals). Add forbidden_labels, max_turns, and max_cost judges with thresholds to pass eval/lint-cases.sh. Add max_turns and max_cost_usd to annotations.yaml. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Marta Anon <manon@redhat.com>
…p combined provider The combined github-ro-artifacts provider/profile approach widened binary scope unnecessarily. The simpler fix is reverting github-artifacts.yaml to _NOOP_GITHUB_ARTIFACTS — this provider only needs network policy rules, not credentials. The API call to api.github.com is authenticated by the companion github-ro provider; redirect targets use pre-signed SAS URLs. - Revert providers/github-artifacts.yaml to _NOOP_GITHUB_ARTIFACTS - Restore two-provider/two-profile pairing in harness/retro.yaml - Delete combined provider and profile files - Remove stale sync comments from existing profiles - Set EVAL_TIMEOUT under execution.env (timeout ordering fix) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Marta Anon <manon@redhat.com>
52cf2b6 to
a06827d
Compare
|
🤖 Finished Review · ✅ Success · Started 7:17 AM UTC · Completed 7:33 AM UTC Commit: |
The retro agent uses ~31 turns in the smoke test. The previous limit of 15 was never validated because the test couldn't run (sandbox creation failed due to the credential conflict this PR fixes). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Marta Anon <manon@redhat.com>
|
🤖 Finished Review · ✅ Success · Started 7:44 AM UTC · Completed 8:01 AM UTC Commit: |
The merge queue run timed out at 240s with $0.00 cost — sandbox creation stalled before the agent could start. Bumping outer timeout to 600s and EVAL_TIMEOUT to 540s to handle slow sandbox startup in queue runners. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Marta Anon <manon@redhat.com>
|
🤖 Finished Review · ✅ Success · Started 8:34 AM UTC · Completed 8:50 AM UTC Commit: |
|
🤖 Finished Retro · ❌ Failure · Started 9:05 AM UTC · Completed 9:05 AM UTC Commit: |
Summary
providers/github-artifacts.yamlfromGH_TOKENback to_NOOP_GITHUB_ARTIFACTS: ""— the credential-less noop pattern used by other network-policy-only providers (vertex-ai, gitleaks, package-registries)api.github.comis authenticated by the companiongithub-roprovider, and redirect targets (Azure Blob Storage) use pre-signed SAS URLs that need no Authorization headerGH_TOKENmust not be declared hereeval/retro/) that verifies sandbox creation succeeds — directly validates the fix by catching credential key conflicts at sandbox startupFixes #880.
Context
PR #211 changed
github-artifacts.yamlfrom_NOOP_GITHUB_ARTIFACTS: ""toGH_TOKEN: "${GH_TOKEN}". This caused OpenShell to reject sandboxes where two providers (github-roandgithub-artifacts) both declareGH_TOKENas their credential key. The retro agent is the only agent currently attaching both providers, so it was the only one affected.The fix is reverting to the original noop credential. No combined provider/profile is needed — the artifact download flow works without credentials on the artifacts provider because:
api.github.comgoes throughgithub-ro, which injectsGH_TOKENghCLI (and OpenShell's proxy) drops the Authorization header on cross-domain redirectsGH_TOKENneededTest plan
credential env key 'GH_TOKEN' is provided by both providererror)functional-tests (retro)CI green —sandbox_startedjudge 100%🤖 Generated with Claude Code