Skip to content

Remove GitLab identity migration machinery and retain only the three built-in roles #7782

Closed

Description

@ggallen

What should happen

After #7559 merges, simplify GitLab authentication so the only supported identities are the three built-in roles:

  • Poller
  • Analyst
  • Coder

Remove all remaining migration-era and legacy identity machinery, including:

  • FULLSEND_FORGE_TOKEN and the shared-token authentication path.
  • FULLSEND_GITLAB_ROLE_MIGRATION and all migration modes.
  • Migration, cutover, rollback, and compatibility branches.
  • Custom-role registration, role reuse, and FULLSEND_GITLAB_ROLE_REGISTRY.
  • Migration-only rotation and state handling.
  • CLI flags, status fields, diagnostics, tests, and documentation that describe the removed model.

The three built-in role credentials should be selected unconditionally. Their normal credential rotation and capability enforcement should remain.

The issue must preserve safe uninstall behavior for any obsolete variables, secrets, or project access tokens that may still exist on repositories installed before this cleanup.

This is a breaking cleanup. It assumes all managed repositories have completed the migration and no repository still depends on shared-token or custom-role behavior.

Blocked by: #7559

Parent: #7496

Activity

  1. fullsend-ai-triage commented on Sep 27, 2026

    @fullsend-ai-triage

    🤖 Finished Triage · ✅ Success · Started 11:03 PM UTC · Completed 11:08 PM UTC

    Commit: e0a89e2 · View workflow run →

    Runtime: claude · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $0.57

  2. added
    blockedBlocked by another issue or external dependency
    securitySecurity threat model and related concerns
    type/choreMaintenance and housekeeping tasks
    component/mintToken mint and cross-boundary credentials
    priority/highSignificant impact, address soon
    on Sep 27, 2026
  3. fullsend-ai-triage commented on Sep 27, 2026

    @fullsend-ai-triage

    This cleanup is explicitly blocked by #7559, and that issue is still open. There is already an unmerged pull request (#7586) working toward closing #7559 by removing the migration fallback path, so this dependency is actively being resolved rather than stalled -- but it has not landed yet.

    One thing worth flagging for when this is re-triaged after #7559 closes: PR #7586's description indicates it keeps the shared-token (GITLAB_TOKEN) fallback for leftover disabled/rollback migration states, and does not appear to touch custom-role registration or the role registry. This issue's scope calls for unconditional selection of only the three built-in roles and full removal of custom-role registration/reuse and FULLSEND_GITLAB_ROLE_REGISTRY, along with FULLSEND_FORGE_TOKEN and the shared-token path entirely. It would be worth confirming, once #7559/#7586 land, whether any of that broader scope still remains to be done here.

    This issue will be ready to pick up once #7559 is closed.

    Blocked by:


    Labels: This issue is the next stage of the same GitLab role-identity rollout chain as #7559/#7496, is currently blocked on #7559, and matches the security/chore/component/priority conventions used on its sibling issues.

  4. ggallen commented on Sep 28, 2026

    @ggallen
    MemberAuthor

    /fs-triage

  5. fullsend-ai-triage commented on Sep 28, 2026

    @fullsend-ai-triage

    🤖 Finished Triage · ✅ Success · Started 1:40 PM UTC · Completed 1:43 PM UTC

    Commit: b246a29 · View workflow run →

    Runtime: claude · Model: sonnet → claude-sonnet-5 · Effort: high · Cost: $0.27

  6. 31 remaining items

  7. added a commit that references this issue on Sep 29, 2026
  8. ggallen commented on Sep 29, 2026

    @ggallen
    MemberAuthor

    /fs-code Implement PR3 for issue #7782: remove the remaining GitLab migration-gate and shared-token runtime compatibility machinery, including dead migration modes, cutover helpers, bot-token convergence plumbing, stale flags, and outdated documentation. Preserve custom roles, BYOA registration/routing/capabilities/reuse/rotation/registry behavior, and legacy uninstall cleanup for obsolete migration artifacts. Add regression tests, run the required Go coverage and lint checks.

  9. fullsend-ai-coder commented on Sep 29, 2026

    @fullsend-ai-coder
    Contributor

    🤖 Finished Code · ❌ Failure (post-script /home/runner/work/fullsend/fullsend/.fullsend/.fullsend-cache/resources/sha256/c5ca8ecbe408940f9a91557ebfeef1b90016a3eec67d6d05c788b1fa03e0fccc/scripts/post-code.sh failed: exit status 1) · Started 6:31 PM UTC · Completed 7:33 PM UTC

    Commit: b818a58 · View workflow run →

    Runtime: pi · Model: xai/grok-4.6 · Effort: high · Cost: $57.66

  10. fullsend-ai-coder commented on Sep 29, 2026

    @fullsend-ai-coder
    Contributor

    ⚠️ code agent killed before committing — uncommitted work discarded (exit code 1)

    The code agent left uncommitted changes in the extracted repo and produced no commit to push. The run was likely killed (timeout) before git commit executed, so this work was discarded and no PR was opened.

    This is not a successful no-op: staged or untracked files were present when the sandbox was extracted.

    Workflow run: https://github.com/fullsend-ai/fullsend/actions/runs/36612393176

    Details:
    Uncommitted files:
    M docs/contributing/gitlab-role-credentials.md
    M internal/cli/gitlab_role.go
    M internal/cli/gitlab_role_test.go
    M internal/cli/repos.go
    M internal/cli/repos_gitlab.go
    M internal/cli/repos_gitlab_test.go
    M internal/forge/forge.go
    M internal/gitlabroles/gitlabroles.go
    M internal/gitlabroles/gitlabroles_test.go
    M internal/gitlabroles/lifecycle.go
    M internal/gitlabroles/lifecycle_test.go
    M internal/gitlabroles/readiness.go
    M internal/gitlabroles/readiness_test.go
    M internal/gitlabroles/registry_test.go
    M internal/gitlabroles/route.go
    M internal/gitlabroles/route_test.go
    M internal/repos/converge.go
    M internal/repos/converge_test.go
    M internal/repos/gitlab_roles.go
    M internal/repos/gitlab_roles_cleanup_test.go
    M internal/repos/gitlab_roles_cutover.go
    M internal/repos/gitlab_roles_cutover_test.go
    M internal/repos/gitlab_roles_rotate.go
    M internal/repos/gitlab_roles_rotate_test.go
    M internal/repos/gitlab_roles_test.go
    M internal/repos/status.go
    M internal/scaffold/fullsend-repo-gitlab/.gitlab/ci/scripts/select-gitlab-role-token [REDACTED]
    Retry with /fs-code if appropriate.

  11. ggallen commented on Sep 29, 2026

    @ggallen
    MemberAuthor

    /fs-code Implement the minimal PR3 slice: remove dead GitLab migration-gate runtime compatibility code left after PR2, including obsolete cutover helpers, migration-mode decision paths, bot-token convergence plumbing, and stale internal flag handling. Preserve custom roles, BYOA behavior, and legacy uninstall cleanup. Add focused regression tests, run targeted tests, commit, push the branch, and open a PR. Do not expand into documentation cleanup yet.

  12. fullsend-ai-coder commented on Sep 29, 2026

    @fullsend-ai-coder
    Contributor

    🤖 Finished Code · ❌ Failure (ensuring provider "gitleaks": provider create "gitleaks" failed: exit status 2 (output: error: the following required arguments were not provided: <--from-existing|--credential <KEY[=VALUE]>…) · Started 7:37 PM UTC · Completed 7:37 PM UTC

    Commit: b818a58 · View workflow run →

    Effort: high

  13. ggallen commented on Sep 29, 2026

    @ggallen
    MemberAuthor

    /fs-code Implement the minimal PR3 slice: remove dead GitLab migration-gate runtime compatibility code left after PR2, including obsolete cutover helpers, migration-mode decision paths, bot-token convergence plumbing, and stale internal flag handling. Preserve custom roles, BYOA behavior, and legacy uninstall cleanup. Add focused regression tests, run targeted tests, commit, push the branch, and open a PR. Do not expand into documentation cleanup yet.

  14. fullsend-ai-coder commented on Sep 29, 2026

    @fullsend-ai-coder
    Contributor

    🤖 Finished Code · ✅ Success · Started 7:47 PM UTC · Completed 8:14 PM UTC

    Commit: cf42bb7 · View workflow run →

    Runtime: pi · Model: xai/grok-4.6 · Effort: high · Cost: $18.69

  15. added a commit that references this issue on Sep 29, 2026
  16. added a commit that references this issue on Sep 30, 2026
  17. added a commit that references this issue on Sep 30, 2026
  18. added a commit that references this issue on Sep 30, 2026
  19. added a commit that references this issue on Sep 30, 2026
  20. added a commit that references this issue on Oct 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    component/installCLI install and app setupcomponent/mintToken mint and cross-boundary credentialspriority/highSignificant impact, address soonsecuritySecurity threat model and related concernstriagedTriaged but awaiting human prioritizationtype/choreMaintenance and housekeeping tasks

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions