Skip to content

Commit 78087b0

Browse files
mchammer01sophiethekinglecoursen
authored
Code Quality GA Driver docs fast follow (#62370)
Co-authored-by: Sophie <29382425+sophietheking@users.noreply.github.com> Co-authored-by: Laura Coursen <lecoursen@github.com> Copilot-Session: 89f4554e-843d-46db-8526-7c6dda3a921c
1 parent becedbf commit 78087b0

4 files changed

Lines changed: 35 additions & 11 deletions

File tree

content/billing/concepts/product-billing/github-code-quality.md

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,33 @@ category:
1313
## How {% data variables.product.prodname_code_quality %} billing is measured
1414

1515
Use of {% data variables.product.prodname_code_quality_short %} incurs three types of costs for an organization:
16-
* **{% data variables.product.prodname_actions %} minutes** — {% data variables.product.prodname_code_quality_short %} scans run as {% data variables.product.prodname_actions %} workflows and consume {% data variables.product.prodname_actions %} minutes, unless you use self-hosted runners. For more information, see [AUTOTITLE](/billing/concepts/product-billing/github-actions).
17-
* **{% data variables.product.prodname_ai_credits %}** — {% data variables.product.prodname_code_quality_short %} features that use AI models consume {% data variables.product.prodname_ai_credits_short %} from your shared {% data variables.product.prodname_ai_credits_short %} pool, rather than a separate {% data variables.product.prodname_code_quality_short %} allowance. Each interaction is priced based on the number of tokens consumed, where 1 {% data variables.product.prodname_ai_credit_singular %} = {% data variables.product.prodname_ai_credits_value %}. {% data reusables.code-quality.model-usage %} For more information about how {% data variables.product.prodname_ai_credits_short %} work, see [AUTOTITLE](/copilot/concepts/billing/usage-based-billing-for-organizations-and-enterprises).
18-
* **Active committers** — {% data variables.product.prodname_code_quality %} is a standalone product with its own license: it uses **one {% data variables.product.prodname_code_quality %} license per active committer**, and does not consume {% data variables.product.prodname_GH_advanced_security %} or any other product's licenses. Your license usage is calculated based on the number of unique, active committers to repositories with {% data variables.product.prodname_code_quality_short %} enabled. {% data variables.product.prodname_github_app %} bots are ignored. For information about differences between bot and machine accounts, see [AUTOTITLE](/apps/oauth-apps/building-oauth-apps/differences-between-github-apps-and-oauth-apps#machine-vs-bot-accounts).
16+
17+
* [{% data variables.product.prodname_actions %} minutes](#github-actions-minutes)
18+
* [{% data variables.product.prodname_ai_credits %}](#github-ai-credits)
19+
* [Active and unique committers](#active-and-unique-committers)
20+
21+
### {% data variables.product.prodname_actions %} minutes
22+
23+
{% data variables.product.prodname_code_quality_short %} scans run as {% data variables.product.prodname_actions %} workflows and consume {% data variables.product.prodname_actions %} minutes, unless you use self-hosted runners. See [AUTOTITLE](/billing/concepts/product-billing/github-actions).
24+
25+
### {% data variables.product.prodname_ai_credits %}
26+
27+
{% data variables.product.prodname_code_quality_short %} features that use AI models consume {% data variables.product.prodname_ai_credits_short %} from your shared {% data variables.product.prodname_ai_credits_short %} pool, rather than a separate {% data variables.product.prodname_code_quality_short %} allowance. Each interaction is priced based on the number of tokens consumed, where 1 {% data variables.product.prodname_ai_credit_singular %} = {% data variables.product.prodname_ai_credits_value %}.
28+
29+
{% data reusables.code-quality.model-usage %}
30+
31+
For more information about how {% data variables.product.prodname_ai_credits_short %} work, see [AUTOTITLE](/copilot/concepts/billing/usage-based-billing-for-organizations-and-enterprises).
1932

2033
### Active and unique committers
2134

22-
Each **active committer** to at least one repository with {% data variables.product.prodname_code_quality_short %} enabled uses **one {% data variables.product.prodname_code_quality %} license**. A committer is considered active if one of their commits has been pushed to the repository within the last 90 days, regardless of when it was originally authored.
35+
{% data variables.product.prodname_code_quality_short %} is a standalone product with its own license, and does not consume {% data variables.product.prodname_GH_advanced_security %} or any other product's licenses. {% data variables.product.prodname_github_app %} bots are ignored. For information about differences between bot and machine accounts, see [AUTOTITLE](/apps/oauth-apps/building-oauth-apps/differences-between-github-apps-and-oauth-apps#machine-vs-bot-accounts).
36+
37+
* Your license usage is calculated based on the number of unique, active committers to repositories with {% data variables.product.prodname_code_quality_short %} enabled.
38+
* Each **active committer** uses **one {% data variables.product.prodname_code_quality_short %} license**.
39+
* A committer is considered active if one of their commits has been pushed to the repository within the last 90 days, regardless of when it was originally authored.
40+
* A committer is considered active if one of their commits has been pushed to the repository within the last 90 days, regardless of when it was originally authored.
2341

42+
To understand your license usage, and which licenses you can free up, it helps to distinguish between active and unique committers. You can see the number of licenses you're using on the **Licensing** page for your organization or enterprise, shown as **"Consumed licenses"**:
2443
* **Active committers** are committers who contributed to at least one repository and have a {% data variables.product.prodname_team %} or {% data variables.product.prodname_enterprise %} license with your organization or enterprise. This includes members, enterprise-managed users, external collaborators, and people with a pending invitation to join your organization or enterprise.
2544
* **Unique committers** is the number of active committers who contributed only to one repository, or only to repositories in one organization. You can free up this number of licenses by disabling {% data variables.product.prodname_code_quality_short %} for that repository or organization.
2645

content/code-security/how-tos/maintain-quality-code/roll-out-at-scale.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ A few things to know about how organization-level enablement behaves, so you can
5959

6060
* Your **Repository access** choice applies to **both existing and future repositories**, so repositories created later inherit your choice automatically. This is true for **All repositories**, **Matching a filter**, and **No repositories**.
6161
* Turn on **Enforce access** for a guaranteed baseline that repository administrators can't override. Leave it off, or choose **Let repositories decide**, to let teams opt in on their own timeline.
62-
* Enabling {% data variables.product.prodname_code_quality_short %} does **not** automatically turn on **code coverage**. Coverage is opt-in per repository. It starts reporting only after someone adds a workflow that uploads coverage data, so teams can adopt {% data variables.product.prodname_code_quality_short %} first and add coverage later. See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/set-up-code-coverage).
6362

6463
For the full list of access options and how enforcement works, see [AUTOTITLE](/code-security/concepts/code-quality/enablement-at-scale#organization-level-repository-access).
6564

@@ -69,6 +68,14 @@ For most rollouts, enabling through the UI is the best starting point: it lets y
6968

7069
If you need automation around your rollout, you can fetch {% data variables.product.prodname_code_quality_short %} findings through the REST API, which is useful for reporting on progress as you expand. You can also enable {% data variables.product.prodname_code_quality_short %} on repositories through the REST API, so you can script enablement across your organization instead of enabling each repository in the UI. See [AUTOTITLE](/rest/code-quality/code-quality).
7170

71+
## Set up code coverage
72+
73+
**Add code coverage once your thresholds are tuned.** Code coverage is separate from the quality thresholds you rolled out in the previous steps, so you can turn it on whenever it suits your teams, or skip it entirely if you don't want it.
74+
75+
Enabling {% data variables.product.prodname_code_quality_short %} does not automatically turn on code coverage. Coverage is opt-in per repository, and it starts reporting only after a workflow that uploads coverage data is added to the repository. This means teams can adopt {% data variables.product.prodname_code_quality_short %} first and add coverage later.
76+
77+
To set up coverage for a repository, see [AUTOTITLE](/code-security/how-tos/maintain-quality-code/set-up-code-coverage).
78+
7279
## Next steps
7380

74-
* **Assess health across your organization.** See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/explore-code-quality).
81+
Now that you've rolled out {% data variables.product.prodname_code_quality_short %} across your organization, you can assess the health of your repositories at a glance and decide where to focus. See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/explore-code-quality).

content/code-security/how-tos/maintain-quality-code/set-pr-thresholds.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ You can set thresholds for:
2323
* **{% data variables.product.prodname_codeql %} findings**, by the lowest severity of results you require to be resolved.
2424
* **Code coverage**, by the minimum percentage of code that must be covered by tests.
2525

26-
You can enforce these thresholds at the **repository** level, or at the **organization** level to apply the same standard across many repositories at once. Choose the organization level when you want a consistent quality bar across teams, and the repository level when a single project needs its own standard. {% data variables.product.prodname_code_quality_short %} AI detections cannot be set as a threshold.
26+
You can enforce these thresholds at the **repository** level, or at the **organization** level to apply the same standard across many repositories at once. Choose the organization level when you want a consistent quality bar across teams, and the repository level when a single project needs its own standard. {% data variables.product.prodname_code_quality_short %} {% data variables.code-quality.recent_suggestions %} cannot be set as a threshold.
2727

2828
## Prerequisites
2929

content/code-security/how-tos/maintain-quality-code/view-and-manage-cost.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Knowing what {% data variables.product.prodname_code_quality_short %} costs, and
2121

2222
* **License usage**, based on the number of unique, active committers to repositories where {% data variables.product.prodname_code_quality_short %} is enabled.
2323
* **{% data variables.product.prodname_actions %} minutes**, consumed each time a scan runs (unless you use self-hosted runners).
24-
* **{% data variables.product.prodname_ai_credits %}**, consumed by {% data variables.product.prodname_code_quality_short %}'s AI features: the fixes it generates for findings, and the AI detections scans if you turn that page on.
24+
* **{% data variables.product.prodname_ai_credits %}**, consumed by {% data variables.product.prodname_code_quality_short %}'s AI features: the fixes it generates for findings, and the scans on the **{% data variables.code-quality.recent_suggestions %}** page if you turn it on.
2525

2626
For exactly how each cost is measured, see [AUTOTITLE](/billing/concepts/product-billing/github-code-quality?utm_campaign=code-quality-ga-july-2026&utm_medium=docs&utm_source=docs-view-manage-cost-billing).
2727

@@ -53,9 +53,7 @@ You have several levers to keep spend in check. In rough order of impact:
5353
* **Enable selectively.** Turn {% data variables.product.prodname_code_quality_short %} on where it adds value rather than across every repository at once. See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/enable-code-quality).
5454
* **Disable low-value repositories.** Disabling {% data variables.product.prodname_code_quality_short %} on a repository frees the licenses for committers unique to it, and stops its scans and AI usage. See [AUTOTITLE](/code-security/how-tos/maintain-quality-code/disable-code-quality).
5555
* **Set a budget.** A budget for {% data variables.product.prodname_code_quality_short %} stops your spending automatically once you hit your limit, because the hard stop is mandatory (see below).
56-
* **Keep the AI detections page off.** This page is **off by default** and stays in {% data variables.release-phases.public_preview %}, so it only draws down {% data variables.product.prodname_ai_credits_short %} if you turn it on. Repositories that enabled it during the preview keep it on, so turn it off there if you don't want the usage.
57-
58-
<!-- VERIFY before GA: exact path to turn off the AI detections page for a repo that enabled it during preview. (Default-off-at-GA confirmed in github/security-products#2357.) -->
56+
* **Keep the {% data variables.code-quality.recent_suggestions %} page off.** This page is **off by default** and stays in {% data variables.release-phases.public_preview %}, so it only draws down {% data variables.product.prodname_ai_credits_short %} if you turn it on. Repositories that enabled it during the preview keep it on. To turn it off for a repository, disable **{% data variables.code-quality.recent_suggestions %}** on the repository's **{% data variables.code-quality.code_quality_ui %}** settings page.
5957

6058
### Setting a budget
6159

0 commit comments

Comments
 (0)