feat(mint): cross-org authorization and e2e WIF auth (#2155) - #2277
Conversation
Authorize cross-org mint via target-org FULLSEND_FOREIGN_<role>_REPOS, replace Playwright e2e auth with OIDC mint in CI, and add admin foreign CLI. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 5:33 PM UTC · Completed 5:50 PM UTC |
ReviewFindingsMedium
Low
Previous runReviewFindingsMedium
Low
Previous run (2)ReviewFindingsMedium
Previous run (3)ReviewFindingsMedium
Low
Previous run (4)ReviewFindingsMedium
Low
Previous run (5)ReviewFindingsMedium
Low
Previous run (6)ReviewFindingsMedium
Low
Labels: PR modifies install/CLI admin flow and forge Client interface Previous run (7)ReviewReason: stale-head The review agent reviewed commit Previous run (8)ReviewFindingsHigh
Medium
Low
Previous run (9)ReviewFindingsHigh
Medium
Low
Previous run (10)ReviewFindingsHigh
Medium
Low
Previous run (11)ReviewFindingsHigh
Medium
Low
Labels: PR adds cross-org mint authorization and migrates e2e auth from Playwright to OIDC/mint, touching mint handler, e2e test infra, and security-sensitive authorization paths. Previous runReview of PR #2277 — Cross-org mint authorization & e2e auth migrationVerdict: Request Changes Prior review SHA: bc07e1c → 0f37c9d High
Medium
Low
1 high finding and 3 medium findings require resolution. The high-severity stale documentation in AGENTS.md will mislead operators configuring the system. The medium-severity missing tests for the security-critical foreign allowlist parsing need coverage before merge. Labels: PR modifies mint service (cross-org authorization), e2e test infrastructure, and CI workflows. Labels: PR modifies mint service (cross-org authorization), e2e test infrastructure, and CI workflows Previous run (12)ReviewFindingsHigh
Medium
Low
Labels: PR adds cross-org mint authorization and migrates e2e auth from Playwright to OIDC/mint, touching mint handler, e2e test infra, and security-sensitive authorization paths. Previous run (13)Review of PR #2277 — Cross-org mint authorization & e2e auth migrationVerdict: Request Changes Prior review SHA: bc07e1c → 0f37c9d High
Medium
Low
1 high finding and 3 medium findings require resolution. The high-severity stale documentation in AGENTS.md will mislead operators configuring the system. The medium-severity missing tests for the security-critical foreign allowlist parsing need coverage before merge. Labels: PR modifies mint service (cross-org authorization), e2e test infrastructure, and CI workflows. Labels: PR modifies mint service (cross-org authorization), e2e test infrastructure, and CI workflows |
Bring in mint add-role/remove-role and role-only ROLE_APP_IDS; resolve conflicts keeping cross-org mint auth and mint-based e2e workflow. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Site previewPreview: https://e080f159-site.fullsend-ai.workers.dev Commit: |
|
🤖 Finished Review · ✅ Success · Started 7:08 AM UTC · Completed 7:43 AM UTC |
Bring in upstream e2e role (fullsend-ai#2407) and latest main. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ❌ Failure · Started 7:36 AM UTC · Completed 7:56 AM UTC |
Avoids duplicate ADR 0046 with host-side API server design on main. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Review · ❌ Terminated · Started 8:25 AM UTC · Ended 8:41 AM UTC |
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
|
🤖 Finished Review · ❌ Failure · Started 8:25 AM UTC · Completed 8:41 AM UTC |
foreign allow/revoke used selected visibility with no repos, so the e2e app installation token could not read FULLSEND_FOREIGN_* via the org API. Re-running foreign allow is idempotent and repairs visibility in place. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ❌ Failure · Started 8:57 AM UTC · Completed 9:18 AM UTC |
…o scope Factor org-variable PATCH/POST into createOrUpdateOrgVariable with a visibility parameter. Extend mintclient with optional target_org for cross-org minting. E2e auth delegates to mintclient and requests test-repo, .fullsend, and e2e-lock on pool orgs. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Cross-org mint reads FULLSEND_FOREIGN_* via GET /orgs/{org}/actions/variables,
which requires organization_actions_variables (not repository actions_variables).
Add the permission to the e2e app manifest and mint policy token requests.
Signed-off-by: Barak Korren <bkorren@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Review · ✅ Success · Started 10:19 AM UTC · Completed 10:39 AM UTC |
Omitting repos on /v1/token issues an unscoped installation token via FindOrgInstallation, with WARNING logs on request and grant. E2e cross-org mint uses this so pool tests can create e2e-lock and .fullsend at runtime. Signed-off-by: Barak Korren <bkorren@redhat.com> Co-authored-by: Cursor <cursoragent@cursor.com>
|
🤖 Finished Retro · ❌ Failure · Started 7:09 AM UTC · Completed 7:21 AM UTC |
Summary
FULLSEND_FOREIGN_<role>_REPOS(ADR 0054); mergedupstream/main(ADR 0051–0053 functional eval harness)role=e2e,target_org) in CI; local runs usegh auth login/GH_TOKENfullsend admin foreign allow|list|revoke, update pool setup script, and remove legacy PAT cleanup / Playwright Makefile targetsIntentional permission expansion (e2e role)
The new
e2eGitHub App role has broad permissions (administration:write,organization_administration:write,members:write,secrets:write,actions_variables:write,organization_actions_variables:write, etc.). This is deliberate for full admin install/uninstall e2e on dedicated pool orgs only.Scope is constrained by:
FULLSEND_FOREIGN_E2E_REPOSto authorize CI callers (fullsend-ai/fullsend)halfsend-01…06, not production orgsInstallation-wide tokens:
reposmay be omitted on both same-org and cross-org mint paths (symmetric). Cross-org still requires FOREIGN authorization; same-org relies on WIF trust in the calling workflow. This supports e2e creating repos (e2e-lock,.fullsend) at runtime without predeclaring them in the mint request.Test plan
go test ./internal/mintcore/...— same-org + cross-org foreign allowlist, empty-repos installation-widego test ./internal/cli/...— foreign subcommandsgo test ./...— full suiteE2E_MINT_URL, pool orgs with e2e app + FOREIGN allow)scripts/check-e2e-authorization-test.shOperator follow-up
Pool orgs (
halfsend-01…06) — one-time if not already done:Ensure
fullsend-ai-e2eapp installations include Variables write (repo + org) on each pool org.Remove obsolete repo secrets after stable CI:
E2E_GITHUB_SESSION,E2E_GITHUB_PASSWORD,E2E_GITHUB_TOTP_SECRET.Note:
.github/workflows/e2e.ymlchanges may require protected-path maintainer approval.