CI minutes limits for public projects on GitLab.com
## Overview
GitLab does not accumulate or enforce ANY shared runner quota on public projects, but per our pricing policy these limits should be enforced.
This epic captures the work needed to develop, communicate and implement a solution for this problem.
## Success Metric(s)
- [x] 100% of Public Projects not in the OSS plan are subject to CI minutes limits
* [Tracking Chart](https://app.periscopedata.com/app/gitlab/983566/Pipeline-Execution-Dashboard?widget=14085737&udv=0)
- [x] 1 or more projects has enrolled in the OSS program
* [Issue to create tracking](https://gitlab.com/gitlab-org/gitlab/-/issues/353803)
- [x] Track Number of overage minutes (gap between runner duration and CI Minute Quota + Purchased)
* Count of total minutes overage
* Count of Projects with overage
* Overage Minutes / project
* Projects with minute purchase
### Step 1 (Add high level quota for new public projects & Make duration of project pipelines visible)
- [x] Add high level quota for public projects
- [x] Implement quota for new projects
- [x] Create empty state for CI usage chart - https://gitlab.com/gitlab-org/gitlab/-/issues/336969
- [x] Count Duration of shared runner usage separate from CI Minutes - https://gitlab.com/gitlab-org/gitlab/-/issues/254231
- [x] Add to monthly pipeline duration for projects and namespaces for CI performance visibility - https://gitlab.com/gitlab-org/gitlab/-/issues/340504
- [x] Separate OSS and Standard Cost Factors - https://gitlab.com/gitlab-org/gitlab/-/issues/346399 - %14.7
### Step 2 (Users can see shared saas runner duration usage in namespace and groups)
- [x] `Analytics > Shared runners duration` not accessible on Free plan - https://gitlab.com/gitlab-org/gitlab/-/issues/353062 - %"14.9"
- [x] Schedule in product notifications for limits - https://gitlab.com/gitlab-org/gitlab/-/issues/345528 - %14.9
- [x] Identify large projects that will see reduced contributions after limits are enforced - https://gitlab.com/gitlab-org/gitlab/-/issues/352026 - %"14.9"
- [MR](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/80923) that adds suggestions for how to reduce CI minutes.
- [x] Provide Visibility for shared runner usage for user namespaces - https://gitlab.com/gitlab-org/gitlab/-/issues/345795 - %15.0
- [x] Show year in CI minutes usage graph - https://gitlab.com/gitlab-org/gitlab/-/issues/335968 - %"15.2"
### Step 3 (All public projects have a CI Limit enforced with cost factor .008)
_NOTE: This step can be done behind a feature flag and enabled whenever ready._
- [x] Enforce CI limit for all Public Projects - https://gitlab.com/gitlab-org/gitlab/-/issues/243722 - Behind a feature flag until June 1.
- [x] Rollout enforcement - https://gitlab.com/gitlab-org/gitlab/-/issues/359094 - %"15.1" / live on June 1.
### Step 4 ([Make OSS plan behavior like Ultimate](https://gitlab.com/groups/gitlab-org/-/epics/6895), enforce high level quota for existing OSS projects)
_NOTE: This step can be done at any time and is not step-dependent._
- [x] Todos for OSS plan creation are in [the epic](https://gitlab.com/groups/gitlab-org/-/epics/6895) on target for %"15.3"
- [x] Set cost factor for OSS Plan - https://gitlab.com/gitlab-org/gitlab/-/issues/351933+ - %"15.3"
### Step 5 (Forks of OSS/public projects should run in a personal namespace with a reduced cost factor to encourage contributions)
- [x] Use a reduced cost factor for public forks https://gitlab.com/gitlab-org/gitlab/-/issues/346400 - %"15.4"
### Step 6 (Narrow cost factor to public forks of OSS projects, not all public projects. Contributions to GitLab should use a reduced cost factor.)
- [x] use a reduced cost factor for forks of GitLab contributions - https://gitlab.com/gitlab-org/gitlab/-/issues/365447 - %"15.2"
- [x] Restrict eligibility to reduced cost factor only to contributions to projects on OSS plan https://gitlab.com/gitlab-org/gitlab/-/issues/352830 - %"15.4"
### Step 7 (cleanup / final adjustments)
- [x] Harden CI limit for public projects - https://gitlab.com/gitlab-org/gitlab/-/issues/337245 - Start in %"15.3" and reduce through %"15.5"
- As we narrow the eligibility of reduced cost factor, we should apply cost factor `1` to all other public projects
### Future iterations / improvements / cleanups (tracked outside this epic)
- Make it easier to turn off trigger pipelines for mirror updates - https://gitlab.com/gitlab-org/gitlab/-/issues/335340 - This issue is assigned to ~"group::import" so ~"group::pipeline execution" will need assistance in the review
- CI Minutes Cost Factor follow-ups https://gitlab.com/groups/gitlab-org/-/epics/9039
- CI minutes visibility improvements - https://gitlab.com/groups/gitlab-org/-/epics/7561
- CI/CD Minute notifications - https://gitlab.com/groups/gitlab-org/-/epics/6377
- CI/CD Minute configuration - https://gitlab.com/groups/gitlab-org/-/epics/6378
epic