Skip to content

Commit 945b78e

Browse files
authored
Merge pull request #43420 from github/repo-sync
Repo sync
2 parents 1a97b03 + 651f9b8 commit 945b78e

File tree

10 files changed

+48
-38
lines changed

10 files changed

+48
-38
lines changed

CHANGELOG.md

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
# Docs changelog
22

3+
**18 March 2026**
4+
5+
We added documentation for using session data in Copilot CLI—including the `/chronicle` slash command:
6+
7+
* [About GitHub Copilot CLI session data](https://docs.github.com/en/copilot/concepts/agents/copilot-cli/chronicle)
8+
* [Using GitHub Copilot CLI session data](https://docs.github.com/copilot/how-tos/copilot-cli/chronicle)
9+
10+
<hr>
11+
312
**17 March 2026**
413

514
We published [Maintaining codebase standards in a GitHub Copilot rollout](https://docs.github.com/en/enterprise-cloud@latest/copilot/tutorials/roll-out-at-scale/maintain-codebase-standards).
615

716
The guide shows how customers can create a strong governance framework for Copilot by leveraging GitHub's enterprise-grade platform alongside cultural best practices.
817

9-
<hr>
10-
11-
We published [Resources for getting approval of GitHub Copilot](https://docs.github.com/enterprise-cloud@latest/copilot/get-started/resources-for-approval), a guide that collects resources for enterprise admins to send to legal, compliance, and cybersecurity teams in their company.
18+
We also published [Resources for getting approval of GitHub Copilot](https://docs.github.com/enterprise-cloud@latest/copilot/get-started/resources-for-approval), a guide that collects resources for enterprise admins to send to legal, compliance, and cybersecurity teams in their company.
1219

1320
<hr>
1421

@@ -18,6 +25,8 @@ We've updated our documentation to include a series of articles about the GitHub
1825

1926
See [GitHub integration in Teams](https://docs.github.com/integrations/how-tos/teams).
2027

28+
<hr>
29+
2130
**4 March 2026**
2231

2332
We've published a new article to coincide with the public preview of the Copilot coding agent for Jira integration.

Dockerfile

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# This Dockerfile is used solely for production deployments to Moda
22
# For building this file locally, see src/deployments/production/README.md
3-
# Environment variables are set in the Moda configuration:
3+
# Most environment variables are set in the Moda configuration:
44
# config/moda/configuration/*/env.yaml
5+
# V8 heap sizing is set here via NODE_OPTIONS and mirrored in
6+
# the Moda config files for defense-in-depth.
57

68
# ---------------------------------------------------------------
79
# BASE STAGE: Install linux dependencies and set up the node user
@@ -151,5 +153,11 @@ COPY --chown=node:node --from=precompute_stage $APP_HOME/.pageinfo-cache.json.br
151153
ARG BUILD_SHA
152154
ENV BUILD_SHA=$BUILD_SHA
153155

156+
# V8 heap limit as a percentage of the container cgroup memory limit.
157+
# Uses --max-old-space-size-percentage (Node 24+) so the heap adapts
158+
# automatically when K8s memory limits change. 75% leaves ~25% headroom
159+
# for off-heap memory (Buffers, V8 code cache, libuv) and OS overhead.
160+
ENV NODE_OPTIONS="--max-old-space-size-percentage=75"
161+
154162
# Entrypoint to start the server
155163
CMD ["node_modules/.bin/tsx", "src/frame/server.ts"]

config/kubernetes/default/deployments/webapp.yaml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,16 @@ spec:
2424
resources:
2525
requests:
2626
cpu: 1000m
27-
memory: 4500Mi
28-
# Keep ~600 MB headroom above --max-old-space-size in
29-
# config/moda/configuration/default/env.yaml for Node
30-
# off-heap memory and OS overhead.
27+
# Absolute minimum to start app is 1000m
28+
# Node is single-threaded but we want more CPUs
29+
# for OS and image resizing, and other binary executions
30+
# Better to increase replicas or memory than CPU
31+
memory: 8.0Gi
32+
# Absolute minimum to start app is 4500Mi
33+
# Would increase with more pages, versions, or languages supported
3134
limits:
3235
cpu: 8000m
33-
memory: 16Gi
36+
memory: 8.0Gi
3437
ports:
3538
- name: http
3639
containerPort: 4000

config/kubernetes/production/deployments/webapp.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,9 @@ spec:
3434
# Absolute minimum to start app is 4500Mi
3535
# Would increase with more pages, versions, or languages supported
3636
# The additional memory helps during traffic surges
37-
# Keep ~600 MB headroom above --max-old-space-size in
38-
# config/moda/configuration/production/env.yaml for Node
39-
# off-heap memory and OS overhead.
4037
limits:
4138
cpu: 16000m
42-
memory: 16Gi
39+
memory: 8.0Gi
4340
ports:
4441
- name: http
4542
containerPort: 4000

config/moda/configuration/default/env.yaml

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
data:
22
MODA_APP_NAME: docs-internal
33
NODE_ENV: production
4-
# V8 heap limit (--max-old-space-size) should leave at least ~600 MiB
5-
# below the K8s memory request for Node off-heap memory (Buffers,
6-
# V8 code cache, libuv) and OS overhead. If you change the memory
7-
# request in config/kubernetes/default/deployments/webapp.yaml,
8-
# update this value to match.
9-
# Current: 4500 MiB request, 4096 MiB heap = 404 MiB headroom
10-
NODE_OPTIONS: '--max-old-space-size=4096'
4+
# Matches the Dockerfile ENV. Both set the same value so that
5+
# the heap limit is correct regardless of config-layering order.
6+
NODE_OPTIONS: '--max-old-space-size-percentage=75'
117
PORT: '4000'
128
ENABLED_LANGUAGES: 'en,es,ja,pt,zh,ru,fr,ko,de'
139
RATE_LIMIT_MAX: '21'

config/moda/configuration/production/env.yaml

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
data:
22
MODA_APP_NAME: docs-internal
33
NODE_ENV: production
4-
# V8 heap limit (--max-old-space-size) should leave at least ~600 MiB
5-
# below the K8s memory request for Node off-heap memory (Buffers,
6-
# V8 code cache, libuv) and OS overhead. If you change the memory
7-
# request in config/kubernetes/production/deployments/webapp.yaml,
8-
# update this value to match.
9-
# Current: 8.0 Gi (8192 MiB) request, 7168 MiB heap = 1024 MiB headroom
10-
NODE_OPTIONS: '--max-old-space-size=7168'
4+
# Matches the Dockerfile ENV. Both set the same value so that
5+
# the heap limit is correct regardless of config-layering order.
6+
NODE_OPTIONS: '--max-old-space-size-percentage=75'
117
PORT: '4000'
128
ENABLED_LANGUAGES: 'en,es,ja,pt,zh,ru,fr,ko,de'
139
RATE_LIMIT_MAX: '21'

content/billing/concepts/product-billing/git-lfs.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,16 @@ category:
4949

5050
Previously, {% data variables.large_files.product_name_short %} billing used pre-paid data packs. These have been removed and replaced with metered billing and you only pay for what you actually use.
5151

52-
Each {% data variables.product.github %} account includes a quota of free bandwidth and storage for {% data variables.large_files.product_name_long %} ({% data variables.large_files.product_name_short %}). If you exceed this quota, what happens next depends on your {% data variables.large_files.product_name_short %} budget setting:
52+
Each {% data variables.product.github %} account includes a quota of free bandwidth and storage for {% data variables.large_files.product_name_long %} ({% data variables.large_files.product_name_short %}).
53+
54+
* **Bandwidth:** Your free quota resets at the start of each billing cycle.
55+
* **Storage:** Charges accrue continuously throughout the month based on hourly usage. Your accrued storage total resets to zero at the beginning of each billing cycle.
56+
57+
If you exceed this quota, what happens next depends on your {% data variables.large_files.product_name_short %} budget setting:
5358

5459
* **Budget set to $0**: You are not charged for overages, but {% data variables.large_files.product_name_short %} usage is blocked for the rest of the calendar month. Usage resets on the first of the next month.
5560
* **Budget deleted**: There is no spending limit, and you are billed for all usage beyond the free quota.
5661

57-
* **Bandwidth:** Your free quota resets at the start of each billing cycle.
58-
* **Storage:** Charges accrue continuously throughout the month based on hourly usage. Your accrued storage total resets to zero at the beginning of each billing cycle.
59-
6062
{% data variables.large_files.product_name_short %} storage is calculated based on all {% data variables.large_files.product_name_short %} objects associated with a repository, regardless of when they were uploaded. Storage usage is only zero when no {% data variables.large_files.product_name_short %} objects are associated with the repository.
6163

6264
If you delete {% data variables.large_files.product_name_short %} objects partway through a calendar month, the storage usage for that month is not recalculated. Storage resets on the first of the following month.

content/billing/reference/cost-center-allocation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ This article contains reference information for how spending is assigned to cost
2626
| {% data variables.product.prodname_enterprise %} | The user who receives the license (priority), or the organization that is billed for the license. |
2727
| Git Large File Storage | The repository or organization where Git LFS is used. |
2828
| {% data variables.product.prodname_registry %} | The repository or organization that owns the package. |
29-
| {% data variables.product.prodname_prus_caps %} | The user who triggered the use of the {% data variables.product.prodname_pru %} (priority), or the organization they belong to. |
29+
| {% data variables.product.prodname_prus_caps %} | The user who triggered {% data variables.product.prodname_pru %} usage (priority), or the organization that granted the user's {% data variables.product.prodname_copilot_short %} license. |
3030
| {% data variables.product.prodname_GHAS %} | A user who uses a license (priority), or the organization that is billed for the license. |
3131

3232
## Details for license-based products

content/copilot/reference/copilot-usage-metrics/copilot-usage-metrics.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,15 @@ For example schemas of the data returned by the APIs, see [AUTOTITLE](/copilot/r
9191
| `totals_by_language_feature` | Breakdown combining language and feature dimensions. |
9292
| `totals_by_model_feature` / `totals_by_language_model` | Model-specific breakdowns for chat activity (not completions). |
9393
| `last_known_ide_version` / `last_known_plugin_version` | The most recent IDE and {% data variables.copilot.copilot_chat_short %} extension version detected for each user. |
94-
| `daily_active_cli_users` | Number of unique users in the enterprise who used {% data variables.product.prodname_copilot_short %} via the CLI on a given day. This field is **independent** of IDE active user counts and is **not** included in IDE-based active user definitions. Omitted for enterprises with no CLI usage on that day. |
95-
| `totals_by_cli` | Breakdown of CLI-specific metrics for the enterprise on a given day. Independent of IDE metrics—CLI usage is **not** reflected in other fields such as `totals_by_ide` or `totals_by_feature`. Omitted for enterprises with no CLI usage on that day. See [{% data variables.copilot.copilot_cli_short %} metrics fields](#copilot-cli-metrics-fields-api-only) below. |
94+
| `daily_active_cli_users` | Number of unique users in the enterprise or organization who used {% data variables.product.prodname_copilot_short %} via the CLI on a given day. This field is **independent** of IDE active user counts and is **not** included in IDE-based active user definitions. Omitted for enterprises or organizations with no CLI usage on that day. |
95+
| `totals_by_cli` | Breakdown of CLI-specific metrics for the enterprise or organization on a given day. Independent of IDE metrics—CLI usage is **not** reflected in other fields such as `totals_by_ide` or `totals_by_feature`. Omitted for enterprises or organizations with no CLI usage on that day. See [{% data variables.copilot.copilot_cli_short %} metrics fields](#copilot-cli-metrics-fields-api-only) below. |
9696
| `used_cli` | Captures whether the user has used {% data variables.copilot.copilot_cli_short %} that day. |
9797
| `used_agent` | Captures whether the user has used IDE agent mode that day. |
9898
| `used_chat` | Captures whether the user has used IDE chat that day. |
9999

100-
101100
### {% data variables.copilot.copilot_cli_short %} metrics fields (API only)
102101

103-
The `totals_by_cli` object contains the following nested fields when CLI usage is present. These metrics are currently only available in the enterprise-level and user-level reports.
102+
The `totals_by_cli` object contains the following nested fields when CLI usage is present.
104103

105104
| Field | Description |
106105
|:--|:--|
@@ -110,7 +109,7 @@ The `totals_by_cli` object contains the following nested fields when CLI usage i
110109
| `totals_by_cli.token_usage.prompt_tokens_sum` | Total number of prompt tokens sent across all CLI requests on this day. |
111110
| `totals_by_cli.token_usage.avg_tokens_per_request` | Average number of **output** and **prompt** tokens per CLI request, computed as `(output_tokens_sum + prompt_tokens_sum) ÷ request_count`.|
112111
| `totals_by_cli.prompt_count` | Total number of user prompts, commands, or queries executed within a session. |
113-
| `totals_by_cli.last_known_cli_version` | Most recent Copilot CLI version detected for the user that day. |
112+
| `totals_by_cli.last_known_cli_version` | Most recent {% data variables.copilot.copilot_cli_short %} version detected for the user that day. |
114113

115114
### Pull request activity fields (API only)
116115

data/reusables/billing/cost-center-allocation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ To allocate metered spending to a cost center, you add repositories, organizatio
22

33
* For **usage-based** products, like {% data variables.product.prodname_actions %}, cost centers are charged based on the **repositories or organizations** in the cost center, as this is where the usage takes place.
44
* For **license-based** products, like {% data variables.product.prodname_copilot %}, cost centers are charged based on the **users** in the cost center.
5-
* For products billed by **{% data variables.product.prodname_pru %}** usage, like {% data variables.copilot.copilot_coding_agent %}, cost centers are also charged based on the **users** in the cost center.
5+
* For products billed by **{% data variables.product.prodname_pru %}** usage, like {% data variables.copilot.copilot_coding_agent %}, cost centers are charged based on the **users** in the cost center, or the **organization that granted the user's {% data variables.product.prodname_copilot %} license** if the user isn't directly assigned to a cost center.
66

77
Cost centers only apply to metered usage, and do not work with volume or subscription billing.

0 commit comments

Comments
 (0)