Create an ADR for license provisioning in GDK
## Overview
This issue tracks the creation of an Architecture Decision Record (ADR) to document the approach for automating GitLab license provisioning with the GitLab Duo Enterprise add-on in the GitLab Development Kit (GDK).
The ADR addresses a critical bottleneck in the AI development workflow: team members currently require manual intervention from the Fulfillment team to obtain GitLab Duo Enterprise add-ons, creating delays of several hours and reducing developer productivity.
## Problem Statement
**Current State:**
- Developing GitLab AI features requires a GitLab subscription with an Ultimate license and the GitLab Duo Enterprise add-on
- The GitLab Duo Enterprise add-on can only be provisioned through a manual process requiring Fulfillment team intervention
- This manual process creates a significant bottleneck, with provisioning requests taking several hours to complete
- There is no self-service provisioning flow available in CustomersDot (GitLab's customer portal)
**Impact:**
- **Developer Productivity:** Team members experience delays waiting for add-on provisioning, blocking their ability to set up environments and start work
- **Review Quality:** High friction discourages reviewers from testing AI features locally, leading to reliance on code review alone and increased likelihood of missed defects
- **Team Load:** The Fulfillment team bears operational burden of processing individual add-on requests, creating inefficiency for both requesters and provisioners
## Solution Approach
The ADR proposes an automated, self-service solution that integrates license provisioning into the GDK setup process:
- **Automated Provisioning:** GDK automatically provisions GitLab subscriptions with Ultimate licenses and GitLab Duo Enterprise add-ons during setup
- **Secure Authentication:** Team members authenticate through GitLab staging to staging CustomersDot using personal access tokens
- **Local License Storage:** Licenses are stored encrypted locally in the `gdk.yml` file for use in the local instance
- **Flexible Configuration:** Support for different combinations of products and seat counts via `gdk.yml` configuration
- **Multi-Scenario Support:** Handles fresh GDK installations, existing GDK instances, and cells infrastructure deployments
## Key Deliverables
The ADR includes:
- **System Capabilities Overview:** Detailed specifications for infrastructure, SDKs, security, development workflow, testing, deployment, rollout management, observability, and governance
- **Design & Implementation Details:** Step-by-step flows for fresh installs, existing instances, and cells-enabled deployments
- **Authentication Strategy:** Secure proxy-based authentication through GitLab staging to CustomersDot
- **Configuration Schema:** YAML-based configuration for license provisioning settings
- **Alternative Solutions:** Evaluation of shared subscription approach and future CustomersDot purchase flow integration
## Related Issues & MRs
- **ADR Merge Request:** [gitlab-com/content-sites/handbook!16646](https://gitlab.com/gitlab-com/content-sites/handbook/-/merge_requests/16646) - GitLab Duo enterprise self provisioning ADR
- **Related Issue:** [gitlab-development-kit#2133](https://gitlab.com/gitlab-org/gitlab-development-kit/-/issues/2133) - GDK license provisioning discussion
- **Fulfillment Meta:** [gitlab-org/fulfillment/meta#2499 (closed)](https://gitlab.com/gitlab-org/fulfillment/meta/-/issues/2499) - Authentication process details
## Success Criteria
- [x] ADR document created and reviewed
- [x] Design decisions documented with rationale
- [x] Implementation approach defined for all deployment scenarios
- [x] Security and authentication aspects validated
## Impacted Categories
The following categories relate to this issue:
- [ ] ~"gdk-reliability" - e.g. When a GDK action fails to complete.
- [x] ~"gdk-usability" - e.g. Improvements or suggestions around how the GDK functions.
- [ ] ~"gdk-performance" - e.g. When a GDK action is slow or times out.
## Status
<!--STATUS NOTE START-->
<!--STATUS NOTE END-->
epic