diff --git a/.github/workflows/check-for-spammy-prs.yml b/.github/workflows/check-for-spammy-prs.yml
index 59ba0d20f644..f10202bf7204 100644
--- a/.github/workflows/check-for-spammy-prs.yml
+++ b/.github/workflows/check-for-spammy-prs.yml
@@ -35,11 +35,13 @@ jobs:
});
const onlyDeletes = files.length > 0 && files.every(f => f.status === 'removed')
- const emptyCommit = !files.length
+ const isEmptyCommit = !files.length
const touchesTooMany = files.length > 10
+ const totalChanges = files.reduce((sum, f) => sum + f.additions + f.deletions, 0)
+ const isOneLineAddition = files.every(f => f.status === 'added') && totalChanges <= 1
// Close the PR and add the invalid label
- if (onlyDeletes || emptyCommit || touchesTooMany) {
+ if (onlyDeletes || isEmptyCommit || touchesTooMany || isOneLineAddition) {
await github.rest.issues.update({
owner: owner,
repo: repo,
diff --git a/.github/workflows/sync-openapi.yml b/.github/workflows/sync-openapi.yml
index 5f7b3086e657..eb15a2db3d91 100644
--- a/.github/workflows/sync-openapi.yml
+++ b/.github/workflows/sync-openapi.yml
@@ -1,6 +1,6 @@
name: Sync OpenAPI schema
-# **What it does**: Once a day, this workflow syncs the REST, Webhooks, and GitHub Apps automated pipelines with the github/rest-api-description repository, and creates a pull request if there are updates to any of the data files we generate from the OpenAPI.
+# **What it does**: Syncs the REST, Webhooks, and GitHub Apps automated pipelines with the github/rest-api-description repository, and creates a pull request if there are updates to any of the data files we generate from the OpenAPI. Runs on a weekday schedule or a `sync-openapi` repository dispatch.
# **Why we have it**: So we can automate updates to REST, Webhooks, and GitHub Apps documentation
# **Who does it impact**: Anyone making OpenAPI changes in `github/github`, and wanting to get them published on the docs site.
@@ -12,6 +12,8 @@ on:
type: string
required: true
default: 'main'
+ repository_dispatch:
+ types: [sync-openapi]
schedule:
- cron: '20 16 * * 1-5' # Run Mon-Fri at 16:20 UTC / 8:20 PST
@@ -40,7 +42,7 @@ jobs:
# will be checked out
repository: github/rest-api-description
path: rest-api-description
- ref: ${{ inputs.SOURCE_BRANCH }}
+ ref: ${{ inputs.SOURCE_BRANCH || github.event.client_payload.ref || 'main' }}
- uses: ./.github/actions/node-npm-setup
diff --git a/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise.md b/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise.md
index e6f20a521c2b..f1b9160889e5 100644
--- a/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise.md
+++ b/content/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise.md
@@ -209,7 +209,7 @@ By default, repository administrators can rename branches that are targeted by e
To keep your repository size manageable and prevent performance issues, you can configure a file size limit for repositories in your enterprise.
-By default, when you enforce repository upload limits, people cannot add or update files larger than 100 MB.
+By default, people cannot add or update files larger than 100 MB, but you can raise or remove this limit. If you enforce your chosen limit for all repositories on the instance, individual repositories cannot use a different limit.
{% data reusables.enterprise-accounts.access-enterprise %}
{% data reusables.enterprise-accounts.policies-tab %}
diff --git a/content/admin/managing-github-apps-for-your-enterprise/automate-installations.md b/content/admin/managing-github-apps-for-your-enterprise/automate-installations.md
index 654243a1bca1..4f722ac05160 100644
--- a/content/admin/managing-github-apps-for-your-enterprise/automate-installations.md
+++ b/content/admin/managing-github-apps-for-your-enterprise/automate-installations.md
@@ -228,13 +228,13 @@ The installation token you just received gives you permission to create a reposi
1. To check the repository was created successfully, go to `https://github.com/orgs/ORG/repositories`, replacing ORG with the name of your organization.
-{% note %}
+
Was the repository created successfully?
Yes No
-{% endnote %}
+
## 7. Uninstall the apps
diff --git a/content/admin/monitoring-and-managing-your-instance/additional-nodes/configuring-additional-nodes.md b/content/admin/monitoring-and-managing-your-instance/additional-nodes/configuring-additional-nodes.md
index 36923cbdce9a..650cac8fc3a4 100644
--- a/content/admin/monitoring-and-managing-your-instance/additional-nodes/configuring-additional-nodes.md
+++ b/content/admin/monitoring-and-managing-your-instance/additional-nodes/configuring-additional-nodes.md
@@ -159,6 +159,58 @@ Logs are stored locally on the stateless nodes. They can be exported from these
You can use the `ghe-cluster-support-bundle` and `ghe-support-bundle` commands to generate and upload cluster or single-node bundles.
+## Mitigating single-core softirq saturation
+
+
+
+Adding a stateless node to a {% data variables.product.prodname_ghe_server %} high-availability deployment sends all traffic between two nodes over a single WireGuard tunnel. Because every packet for that node pair shares one UDP port, the network card steers it to one receive queue, and one CPU core processes all inbound packets. Under heavy traffic that core reaches 100 percent while the others stay idle, and the node drops packets. {% data variables.product.prodname_ghe_server %} includes the built-in mitigations described below.
+
+### 1. Scale out with more stateless nodes
+
+Each stateless node reaches the primary over its own WireGuard tunnel, so the primary processes each node's traffic on a separate receive queue and CPU core. Spreading workloads across more, smaller stateless nodes lets the load balancer share cross-tunnel load across more of the primary's cores, and this does not rely on tunnel-level hashing. Two nodes roughly halve the per-core receive load, and three cut it to about a third.
+
+{% data variables.product.prodname_ghe_server %} sizes each node's web workers from its memory and caps its own value at 30. Keep `app.github.github-workers` near 30 per node; higher counts cost memory and, during a tunnel stall, add queue depth rather than throughput, because the extra workers block on the primary. For more capacity, add more stateless nodes.
+
+### 2. Multi-tunnel WireGuard (opt-in)
+
+{% data variables.product.prodname_ghe_server %} can spread inter-node traffic across several WireGuard tunnels. Each tunnel uses its own UDP port, so different connections land on different receive queues and different CPU cores share the work. Set the tunnel count to the lowest number of receive queues across your cluster nodes, the "Combined" value of `ethtool -l eth0`.
+
+```shell copy
+ghe-config wireguard.num-tunnels 8
+ghe-config-apply
+```
+
+The default is 1. The maximum is 16; higher values are capped. More tunnels than the interface has receive queues adds no benefit. To revert, remove the setting and apply.
+
+```shell copy
+ghe-config --unset wireguard.num-tunnels
+ghe-config-apply
+```
+
+**Before you enable (one-time):**
+
+* In your external firewall or cloud security group, open the extra tunnel UDP ports between all nodes, including all replicas. Ports count up from 1194, so 8 tunnels use UDP 1194 to 1201. The full range requires UDP 1194 to 1209.
+* Enabling multi-tunnel updates the host firewall. Apply it once by rebooting all nodes, or by reloading the firewall with `sudo ufw reload` on each node. Confirm your network security group already restricts inbound access first, as the ufw reload briefly drops and recreates the rules. Later `num-tunnels` changes do not need this step.
+
+### 3. Local git-proxy routing on the primary (automatic)
+
+Git requests that a stateless node would otherwise send back across the tunnel now stay on the primary, where the Git data already lives. This removes a large share of cross-tunnel packets, and needs no action. The primary uses its local Git proxy first and falls back to a remote node only if the local one is unavailable.
+
+### 4. Capacity-based web request weighting (opt-in)
+
+When nodes run different numbers of web workers, {% data variables.product.prodname_ghe_server %} can distribute requests in proportion to each node's worker count instead of evenly. Enable it when worker counts are uneven, for example a primary with 100 workers and a stateless node with 30.
+
+```shell copy
+ghe-config app.github.unicorn-weight-by-capacity true
+ghe-config-apply
+```
+
+The default is off.
+
+### Choosing what to enable
+
+Start by scaling out to more stateless nodes. It is the most complete option, spreads load across more of the primary's cores through the load balancer, and needs no feature flag. If a single core still saturates, enable multi-tunnel WireGuard. Enable capacity-based weighting only when worker counts differ across nodes.
+
## Known limitations
This feature is not designed for monorepos, but the addition of new stateless nodes may indirectly improve monorepo operations by reducing web and job workloads on the primary node. There are no autoscaling and scaledown features.
diff --git a/content/admin/monitoring-and-managing-your-instance/configuring-high-availability/elasticsearch-cross-cluster-replication.md b/content/admin/monitoring-and-managing-your-instance/configuring-high-availability/elasticsearch-cross-cluster-replication.md
index a8709e563e06..4eb735463fa9 100644
--- a/content/admin/monitoring-and-managing-your-instance/configuring-high-availability/elasticsearch-cross-cluster-replication.md
+++ b/content/admin/monitoring-and-managing-your-instance/configuring-high-availability/elasticsearch-cross-cluster-replication.md
@@ -37,19 +37,13 @@ Before you enable CCR, confirm the following.
* Your instance is configured for high availability with at least two appliances (a primary and one or more replicas).
* You have an updated {% data variables.product.prodname_ghe_server %} license that includes the Elasticsearch entitlement required for CCR. Contact {% data variables.contact.contact_enterprise_sales %} or {% data variables.contact.github_support %} to have your enterprise enabled for the new license, then download the updated license file.
-{% warning %}
-
-**Warning:** When CCR is enabled, the upgrade preflight check requires a valid CCR-enabled license. If the flag is enabled and the license check fails, the upgrade will not proceed. Make sure your updated license is installed before you enable the feature or upgrade. If you are unsure whether your license includes the Elasticsearch entitlement, contact {% data variables.contact.github_support %}.
-
-{% endwarning %}
+> [!WARNING]
+> When CCR is enabled, the upgrade preflight check requires a valid CCR-enabled license. If the flag is enabled and the license check fails, the upgrade will not proceed. Make sure your updated license is installed before you enable the feature or upgrade. If you are unsure whether your license includes the Elasticsearch entitlement, contact {% data variables.contact.github_support %}.
## Enabling Elasticsearch Cross-Cluster Replication
-{% note %}
-
-**Note:** The migration may take a significant amount of time depending on the size of your instance, because search data is consolidated onto the primary before replication restarts. Plan to enable CCR during a maintenance window, and test the process in a non-production environment first. For more information, see [AUTOTITLE](/admin/upgrading-your-instance).
-
-{% endnote %}
+> [!NOTE]
+> The migration may take a significant amount of time depending on the size of your instance, because search data is consolidated onto the primary before replication restarts. Plan to enable CCR during a maintenance window, and test the process in a non-production environment first. For more information, see [AUTOTITLE](/admin/upgrading-your-instance).
1. Contact {% data variables.contact.github_support %} and request access to the new HA search architecture. {% data variables.product.company_short %} will enable your enterprise so that you can download the required CCR-enabled license.
1. Download your updated license and upload it to your instance. For more information, see [AUTOTITLE](/billing/how-tos/manage-server-licenses/download-your-license).
@@ -81,11 +75,8 @@ After a failover with CCR enabled, the promoted appliance becomes the new leader
### Disabling Elasticsearch Cross-Cluster Replication
-{% warning %}
-
-**Warning:** Do not disable CCR on a production instance without guidance from {% data variables.contact.github_support %}. Disabling CCR is not a routine self-service operation. Turning the feature off can trigger removal of replica Elasticsearch data as part of returning to the previous mode.
-
-{% endwarning %}
+> [!WARNING]
+> Do not disable CCR on a production instance without guidance from {% data variables.contact.github_support %}. Disabling CCR is not a routine self-service operation. Turning the feature off can trigger removal of replica Elasticsearch data as part of returning to the previous mode.
If you need to return to the previous search architecture, contact {% data variables.contact.github_support %} before making any changes. {% data variables.product.company_short %} will help you confirm that your license, replication state, and upgrade path are handled safely.
diff --git a/content/billing/reference/product-and-sku-names.md b/content/billing/reference/product-and-sku-names.md
index 2a74156d0fdd..00a32b297dd0 100644
--- a/content/billing/reference/product-and-sku-names.md
+++ b/content/billing/reference/product-and-sku-names.md
@@ -87,16 +87,22 @@ For **SkuPricing** budgets or to query usage by SKU, use one of the following va
### {% data variables.product.prodname_copilot %} SKUs
-* `copilot_ai_credits` - Copilot {% data variables.product.prodname_ai_credits_short %}
+* `coding_agent_ai_credit` - Copilot Cloud Agent
+* `copilot_ai_credit` - {% data variables.product.prodname_copilot_short %} {% data variables.product.prodname_ai_credits_short %}
* `copilot_enterprise` - Copilot Enterprise
* `copilot_for_business` - Copilot for Business
* `copilot_standalone` - Copilot standalone
### {% data variables.product.prodname_GH_advanced_security %} SKUs
-* `ghas_code_security_licenses` - GHAS code security licenses
-* `ghas_licenses` - GHAS licenses
-* `ghas_secret_protection_licenses` - GHAS secret protection licenses
+* `ghas_code_security_licenses` - Code Security
+* `ghas_licenses` - Advanced Security
+* `ghas_secret_protection_licenses` - Secret Protection
+
+### {% data variables.product.prodname_code_quality %} SKUs
+
+* `code_quality_licenses` - Code Quality Licenses
+* `code_quality_ai_credit` - Code Quality {% data variables.product.prodname_ai_credits_short %}
### Cloud and local sandboxes for {% data variables.product.prodname_copilot %} SKUs
@@ -110,7 +116,7 @@ For **SkuPricing** budgets or to query usage by SKU, use one of the following va
* `git_lfs_bandwidth` - Git LFS bandwidth
* `git_lfs_storage` - Git LFS storage
* `models_inference` - Models inference
-* `packages_bandwidth` - Packages bandwidth
+* `packages_bandwidth` - Packages data transfer
* `packages_storage` - Packages storage
* `spark_ai_credits` - Spark {% data variables.product.prodname_ai_credits_short %}
diff --git a/content/billing/tutorials/control-costs-at-scale.md b/content/billing/tutorials/control-costs-at-scale.md
index 2b08d323c806..0110a8e6e851 100644
--- a/content/billing/tutorials/control-costs-at-scale.md
+++ b/content/billing/tutorials/control-costs-at-scale.md
@@ -262,7 +262,7 @@ gh api \
-H "X-GitHub-Api-Version: {{ defaultRestApiVersion }}" \
/enterprises/ENTERPRISE/settings/billing/budgets \
-f budget_type='SkuPricing' \
- -f budget_product_sku='copilot_ai_credits' \
+ -f budget_product_sku='copilot_ai_credit' \
-f budget_scope='cost_center' \
-f budget_entity_name='COST_CENTER_ID' \
-F budget_amount=1000.0 \
@@ -276,7 +276,7 @@ The response confirms the budget was created and returns its configuration. Noti
{
"id": "budget-uuid-here",
"budget_type": "SkuPricing",
- "budget_product_sku": "copilot_ai_credits",
+ "budget_product_sku": "copilot_ai_credit",
"budget_scope": "cost_center",
"budget_entity_name": "3312fdf2-5950-4f64-913d-e734124059c9",
"budget_amount": 1000.0,
diff --git a/content/code-security/how-tos/manage-security-alerts/remediate-alerts-at-scale/creating-managing-security-campaigns.md b/content/code-security/how-tos/manage-security-alerts/remediate-alerts-at-scale/creating-managing-security-campaigns.md
index 4077beb44075..83122a8b418f 100644
--- a/content/code-security/how-tos/manage-security-alerts/remediate-alerts-at-scale/creating-managing-security-campaigns.md
+++ b/content/code-security/how-tos/manage-security-alerts/remediate-alerts-at-scale/creating-managing-security-campaigns.md
@@ -59,13 +59,13 @@ You choose the alerts that you want to include in the campaign by using either:
The security campaign is created and the campaign overview page is displayed.
-{% note %}
+
Did you successfully create a security campaign for your organization?
Yes No
-{% endnote %}
+
### Examples of useful filters
diff --git a/content/code-security/how-tos/secure-at-scale/configure-organization-security/configure-specific-tools/estimate-price.md b/content/code-security/how-tos/secure-at-scale/configure-organization-security/configure-specific-tools/estimate-price.md
index d00e144c15c0..a322f50f5bad 100644
--- a/content/code-security/how-tos/secure-at-scale/configure-organization-security/configure-specific-tools/estimate-price.md
+++ b/content/code-security/how-tos/secure-at-scale/configure-organization-security/configure-specific-tools/estimate-price.md
@@ -41,13 +41,13 @@ You need to have generated a secret risk assessment for your organization. See [
* The **per-committer rate** (for example, $19 per active committer).
1. To proceed with enabling {% data variables.product.prodname_secret_protection %}, click **Review and enable**.
-{% note %}
+
Did you successfully use the {% data variables.secret-scanning.pricing-calculator %} to estimate the cost of using {% data variables.product.prodname_secret_protection %} features on your organization?
Yes No
-{% endnote %}
+
## Understanding your results
diff --git a/content/code-security/tutorials/remediate-leaked-secrets/calculate-cost-savings.md b/content/code-security/tutorials/remediate-leaked-secrets/calculate-cost-savings.md
index 214a994e6a70..82d680e536ea 100644
--- a/content/code-security/tutorials/remediate-leaked-secrets/calculate-cost-savings.md
+++ b/content/code-security/tutorials/remediate-leaked-secrets/calculate-cost-savings.md
@@ -52,13 +52,13 @@ Push protection is a paid feature which is available with {% data variables.prod
* **Time saved**: Total hours saved by preventing these secrets, based on your input.
* **Potential savings with push protection**: The total estimated labor cost avoided.
-{% note %}
+
Did you successfully use the {% data variables.secret-scanning.roi-calculator %} to estimate the cost savings of using push protection on your organization?
Yes No
-{% endnote %}
+
## Understanding your results
diff --git a/content/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-organization.md b/content/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-organization.md
index 4832d447cd68..d8f7497dfd01 100644
--- a/content/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-organization.md
+++ b/content/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-organization.md
@@ -14,7 +14,7 @@ category:
You can block non-members from within your organization's settings or from content in the organization's repositories.
-When you block a user from a comment, you can choose to send the user a notification explaining that they were blocked and why. Otherwise, the user is not directly notified that you've blocked them. Blocked users can still delete their existing content.
+You can also close any open issues, pull requests, and discussions the user has opened in repositories owned by the organization. Organization moderators can close content only in repositories where they have write access. When you block a user from a comment, you can choose to send the user a notification explaining that they were blocked and why. Otherwise, the user is not directly notified that you've blocked them. Blocked users can still delete their existing content.
{% data reusables.organizations.blocking-a-user %}
@@ -53,6 +53,7 @@ You must be an organization owner or moderator to block a user from a repository

1. If you'd like to set a time limit for the block, select the **Block user** dropdown menu, and click the amount of time you'd like to block the user.
+{% data reusables.organizations.close-all-content-when-blocking-user %}
1. If you'd like to hide all of the comments the user has made in the organization, select **Hide this user's comments** and choose a reason.
1. If you'd like to notify the user why they're being blocked, select **Send a notification to this user**.
1. To block the user, click **Block user from organization** or **Block user from organization and send message**.
@@ -75,6 +76,7 @@ You must be an organization owner or moderator to block a user from a repository
{% data reusables.organizations.block_users %}
1. Under "Block a user", in the text field, type the username of the user you'd like to block.
1. If you'd like to set a time limit for the block, next to the text field, select the **Block options** dropdown menu, and click the amount of time you'd like to block the user.
+{% data reusables.organizations.close-all-content-when-blocking-user %}
1. Click **Block user**.
1. Optionally, to add a note to describe why a user was blocked, click **Add Note**. The note will be visible to the owners and moderators of the organization.
@@ -86,9 +88,8 @@ You must be an organization owner or moderator to block a user from a repository

1. If you'd like to set a time limit for the block, select the **Block user** dropdown menu, and click the amount of time you'd like to block the user.
+{% data reusables.organizations.close-all-content-when-blocking-user %}
1. If you'd like to hide all of the comments the user has made in the organization, select **Hide this user's comments** and choose a reason.
-1. If you'd like to delete just the discussion you're viewing, select **Delete this discussion**.
-1. If you'd like to delete all of the discussions the user has made in the organization, select **Delete all of USER's discussions in ORGANIZATION**.
1. Click **Block user from organization**.
## Further reading
diff --git a/content/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-personal-account.md b/content/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-personal-account.md
index 911bf8b6c9dd..c3554e3acac6 100644
--- a/content/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-personal-account.md
+++ b/content/communities/maintaining-your-safety-on-github/blocking-a-user-from-your-personal-account.md
@@ -16,7 +16,7 @@ category:
You can block a user in your account settings, from the user's profile, or from content in a repository you own.
-{% data variables.product.github %} will not notify the user when you block them. If you want to avoid contributing to the same project as someone you've blocked, you can choose to display a warning on any repositories with prior contributions from a blocked user. For more information, see [Blocking a user in your account settings](#blocking-a-user-in-your-account-settings). You may still see the activity of blocked users in shared spaces and blocked users can delete their existing content.
+When you block a user, you can also close any open issues, pull requests, and discussions they have opened in repositories you own. {% data variables.product.github %} will not notify the user when you block them. If you want to avoid contributing to the same project as someone you've blocked, you can choose to display a warning on any repositories with prior contributions from a blocked user. For more information, see [Blocking a user in your account settings](#blocking-a-user-in-your-account-settings). You may still see the activity of blocked users in shared spaces and blocked users can delete their existing content.
> [!TIP]
> If you're blocking a user because of a heated conversation, consider locking the conversation so only collaborators can comment. For more information, see [AUTOTITLE](/communities/moderating-comments-and-conversations/locking-conversations).
@@ -65,6 +65,7 @@ You must own the repository to block a user from its content.
1. Navigate to the issue, pull request, or repository security advisory that contains the description or comment whose author you would like to block.
1. In the upper-right corner of the description or comment whose author you would like to block, click {% octicon "kebab-horizontal" aria-label="Show options" %}, then click **Block user**.
+{% data reusables.organizations.close-all-content-when-blocking-user %}
1. Optionally, add a note to describe why you blocked the user. The note will only be visible to you.
1. To confirm, click **Block user**.
@@ -72,7 +73,9 @@ You must own the repository to block a user from its content.
{% data reusables.user-settings.access_settings %}
{% data reusables.user-settings.blocked_users %}
-1. Under "Block a user", type the username of the user you'd like to block, then click **Block user**.
+1. Under "Block a user", type the username of the user you'd like to block.
+{% data reusables.organizations.close-all-content-when-blocking-user %}
+1. Click **Block user**.
1. Optionally, to add a note to describe why a user was blocked, click **Add Note**. The note will only be visible to you.
1. Optionally, you can display a warning when you visit a repository where a blocked user is a contributor. Under "Blocked users", select **Warn me when a blocked user is a prior contributor to a repository**.
@@ -80,6 +83,7 @@ You must own the repository to block a user from its content.
{% data reusables.profile.user_profile_page_navigation %}
{% data reusables.profile.user_profile_page_block_or_report %}
+1. Optionally, select **Close all issues, pull requests, and discussions opened by this user**.
1. Optionally, add a note to describe why a user was blocked. The note will only be visible to you.
1. Click **Block user**.
diff --git a/content/communities/maintaining-your-safety-on-github/viewing-users-who-are-blocked-from-your-organization.md b/content/communities/maintaining-your-safety-on-github/viewing-users-who-are-blocked-from-your-organization.md
index 28d32bb675f8..e2ef7e42af8f 100644
--- a/content/communities/maintaining-your-safety-on-github/viewing-users-who-are-blocked-from-your-organization.md
+++ b/content/communities/maintaining-your-safety-on-github/viewing-users-who-are-blocked-from-your-organization.md
@@ -17,6 +17,7 @@ category:
{% data reusables.profile.org_settings %}
{% data reusables.organizations.block_users %}
1. Under "Blocked users", review the list of users who are blocked from your organization.
+1. Optionally, to close all open issues, pull requests, and discussions a blocked user has opened in repositories owned by the organization, next to the user, click {% octicon "kebab-horizontal" aria-label="Show options" %}, then click **Close all content**. If you are an organization moderator, only content in repositories where you have write access will be closed.
## Further reading
diff --git a/content/communities/maintaining-your-safety-on-github/viewing-users-youve-blocked-from-your-personal-account.md b/content/communities/maintaining-your-safety-on-github/viewing-users-youve-blocked-from-your-personal-account.md
index c460f5a3acf7..168f03b71a04 100644
--- a/content/communities/maintaining-your-safety-on-github/viewing-users-youve-blocked-from-your-personal-account.md
+++ b/content/communities/maintaining-your-safety-on-github/viewing-users-youve-blocked-from-your-personal-account.md
@@ -16,6 +16,7 @@ category:
{% data reusables.user-settings.access_settings %}
{% data reusables.user-settings.blocked_users %}
1. Under "Blocked users", review the list of users you've blocked from your account.
+1. Optionally, to close all open issues, pull requests, and discussions a blocked user has opened in repositories you own, next to the user, click {% octicon "kebab-horizontal" aria-label="Show options" %}, then click **Close all content**.
## Further reading
diff --git a/content/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file.md b/content/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file.md
index f6730d9a1a21..c7f76848b282 100644
--- a/content/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file.md
+++ b/content/communities/setting-up-your-project-for-healthy-contributions/creating-a-default-community-health-file.md
@@ -18,17 +18,17 @@ category:
Default community health files are a set of predefined files that provide guidance and templates for maintaining a healthy and collaborative open source project. These files help you automate and standardize various aspects of your project's development and community interaction, promoting transparency, good practices, and collaboration.
-You can add default community health files to a **public**{% ifversion ghec or ghes %} or **internal**{% endif %} repository called `.github` and {% data variables.product.github %} will use and display default files for any repository owned by the account that does not have its own file of that type in the following order:
+You can add default community health files to a repository called `.github`. {% ifversion ghec %}For an {% data variables.enterprise.prodname_emu_org %}, the `.github` repository must be **internal**. For all other accounts, the `.github` repository must be **public**.{% else %}The `.github` repository must be **public**.{% endif %}
+
+{% data variables.product.github %} will use and display default files for any repository owned by the account, regardless of the destination repository's visibility, that does not have its own file of that type. For supported files that can be stored in more than one location, {% data variables.product.github %} uses the following order of precedence:
* The `.github` folder
* The root of the repository
* The `docs` folder
-If no corresponding file is found in the current repository, {% data variables.product.github %} will use the default file from the `.github` repository, following the same order of precedence.
-
->[!NOTE] The `.github` repository must be **public**{% ifversion ghec or ghes %} or **internal**{% endif %} for most default community health files to be applied organization-wide. Private `.github` repositories are not supported.{% ifversion ghec or ghes %} However, **issue and pull request templates require a public `.github` repository** and will not be applied organization-wide from an internal repository.{% endif %}
+If no corresponding file is found in the current repository, {% data variables.product.github %} will use the default file from the `.github` repository. For files that can be stored in more than one location, {% data variables.product.github %} follows the same order of precedence in the `.github` repository.
-For example, anyone who creates an issue or pull request in a repository that does not have its own `CONTRIBUTING.md` file will see a link to the default `CONTRIBUTING.md` from the `.github` repository. However, if a repository has any files in its own `.github/ISSUE_TEMPLATE` folder, such as issue templates or a `config.yml` file, none of the contents of the default `.github/ISSUE_TEMPLATE` folder will be used. This allows repository maintainers to override the default files with specific templates or content on per-repository basis.
+For example, anyone who creates an issue or pull request in a repository that does not have its own `CONTRIBUTING.md` file will see a link to the default `CONTRIBUTING.md` from the `.github` repository. However, if a repository defines valid issue templates or issue template configuration in its own `.github/ISSUE_TEMPLATE` folder, none of the contents of the default `.github/ISSUE_TEMPLATE` folder will be used. This allows repository maintainers to override the default files with specific templates or content on a per-repository basis.
Storing the files in `.github` repository allows making changes to the defaults just in one place. Additionally, they won’t appear in the file browser or Git history of the individual repositories, and are not included in their clones, packages, or downloads.
@@ -57,16 +57,13 @@ You can create defaults in your organization or personal account for the followi
| Community health file | Description |
| --- | --- |
-| {% ifversion fpt or ghec %} |
-| _CODE_OF_CONDUCT.md_ | A CODE_OF_CONDUCT file defines standards for how to engage in a community. For more information, see [AUTOTITLE](/communities/setting-up-your-project-for-healthy-contributions/adding-a-code-of-conduct-to-your-project). |
-| {% endif %} |
+| _CODE_OF_CONDUCT.md_ | A CODE_OF_CONDUCT file defines standards for how to engage in a community.{% ifversion fpt or ghec %} For more information, see [AUTOTITLE](/communities/setting-up-your-project-for-healthy-contributions/adding-a-code-of-conduct-to-your-project).{% endif %} |
| _CONTRIBUTING.md_ | A CONTRIBUTING file communicates how people should contribute to your project. For more information, see [AUTOTITLE](/communities/setting-up-your-project-for-healthy-contributions/setting-guidelines-for-repository-contributors). |
| Discussion category forms | Discussion category forms customize the templates that are available for community members to use when they open new discussions in your repository. For more information, see [AUTOTITLE](/discussions/managing-discussions-for-your-community/creating-discussion-category-forms). |
| {% ifversion fpt or ghec %} |
| _FUNDING.yml_ | A FUNDING file displays a sponsor button in your repository to increase the visibility of funding options for your open source project. For more information, see [AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository). |
| {% endif %} |
-| _GOVERNANCE.md_ | A GOVERNANCE file lets people know about how your project is governed. For example, it might discuss project roles and how decisions are made. For more information, see [Leadership and Governance - Open Source Guides](https://opensource.guide/leadership-and-governance/#understanding-governance-for-your-growing-project). |
-| Issue and pull request templates and _config.yml_ | Issue and pull request templates customize and standardize the information you'd like contributors to include when they open issues and pull requests in your repository. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates).
If an issue template sets a label, that label must be created in your `.github` repository and any repositories where the template will be used.{% ifversion ghec or ghes %} Organization-wide issue and pull request templates require the `.github` repository to be public.{% endif %} |
+| Issue and pull request templates and _config.yml_ | Issue and pull request templates customize and standardize the information you'd like contributors to include when they open issues and pull requests in your repository. For more information, see [AUTOTITLE](/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates).
If an issue template sets a label, that label must be created in your `.github` repository and any repositories where the template will be used. |
| _SECURITY.md_ | A SECURITY file gives instructions on how to report a security vulnerability in your project and description that hyperlinks the file. For more information, see [AUTOTITLE](/code-security/how-tos/report-and-fix-vulnerabilities/configure-vulnerability-reporting/add-security-policy). |
| _SUPPORT.md_ | A SUPPORT file lets people know about ways to get help with your project. For more information, see [AUTOTITLE](/communities/setting-up-your-project-for-healthy-contributions/adding-support-resources-to-your-project). |
@@ -79,7 +76,7 @@ You cannot create a default license file. License files must be added to individ

1. In the "Repository name" field, type **.github**.
1. Optionally, in the "Description" field, type a description.
-1. Make sure the repository status is set to **Public**{% ifversion ghec or ghes %} or **Internal**{% endif %}. A repository for default files cannot be private.
+1. {% ifversion ghec %}If you are creating the repository for an {% data variables.enterprise.prodname_emu_org %}, set the repository status to **Internal**. For any other account, set the status to **Public**.{% else %}Make sure the repository status is set to **Public**.{% endif %} A repository for default files cannot be private.
{% data reusables.repositories.initialize-with-readme %}
{% data reusables.repositories.create-repo %}
-1. In the repository, create one of the supported community health files. Issue templates and their configuration file must be in a folder called `.github/ISSUE_TEMPLATE`. All other supported files may be in the root of the repository, the `.github` folder, or the `docs` folder. For more information, see [AUTOTITLE](/repositories/working-with-files/managing-files/creating-new-files).
+1. In the repository, create one of the supported community health files. Discussion category forms must be in a folder called `.github/DISCUSSION_TEMPLATE`. Issue templates and their configuration file must be in a folder called `.github/ISSUE_TEMPLATE`. {% ifversion fpt or ghec %}A `FUNDING.yml` file must be in the `.github` folder. {% endif %}All other supported files may be in the root of the repository, the `.github` folder, or the `docs` folder. For more information, see [AUTOTITLE](/repositories/working-with-files/managing-files/creating-new-files).
diff --git a/content/copilot/concepts/agents/cloud-agent/about-automations.md b/content/copilot/concepts/agents/cloud-agent/about-automations.md
index e54bcd366add..2eb26a35eb06 100644
--- a/content/copilot/concepts/agents/cloud-agent/about-automations.md
+++ b/content/copilot/concepts/agents/cloud-agent/about-automations.md
@@ -112,3 +112,4 @@ For more information about how {% data variables.product.github %} mitigates the
* [AUTOTITLE](/copilot/how-tos/use-copilot-agents/cloud-agent/create-automations)
* [AUTOTITLE](/copilot/concepts/agents/cloud-agent/about-cloud-agent)
+* To learn how to store your automation as code, review it through pull requests, or run it with a different coding agent, see [AUTOTITLE](/copilot/concepts/agents/about-github-agentic-workflows)
diff --git a/content/copilot/concepts/tools/ai-tools.md b/content/copilot/concepts/tools/ai-tools.md
index 9f7a8fdb8013..4552125edbcd 100644
--- a/content/copilot/concepts/tools/ai-tools.md
+++ b/content/copilot/concepts/tools/ai-tools.md
@@ -138,10 +138,10 @@ For issues you're tackling yourself, use **{% data variables.copilot.copilot_cha
Before you start your next task, take a moment to identify the right tool to make your work faster and more efficient.
-{% note %}
+
Do you feel prepared to identify the right AI tool for your next task?
Yes No
-{% endnote %}
+
diff --git a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-spark.md b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-spark.md
index 851f29b3c0ed..6d265c5e7105 100644
--- a/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-spark.md
+++ b/content/copilot/how-tos/administer-copilot/manage-for-enterprise/manage-spark.md
@@ -37,13 +37,13 @@ You can allow members to use {% data variables.product.prodname_spark_short %} f
{% data reusables.enterprise-accounts.policy-enablement-next-steps %}
-{% note %}
+
Was this article helpful in enabling and managing {% data variables.product.prodname_spark_short %} for your enterprise?
Yes No
-{% endnote %}
+
## Further reading
diff --git a/content/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-organization-instructions.md b/content/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-organization-instructions.md
index d3c1ef481a4f..68d4f75b1fa7 100644
--- a/content/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-organization-instructions.md
+++ b/content/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-organization-instructions.md
@@ -35,10 +35,10 @@ You can add organization custom instructions via your organization settings.
To see your instructions in action, go to [https://github.com/copilot](https://github.com/copilot?ref_product=copilot&ref_type=engagement&ref_style=text) and start a conversation.
-{% note %}
+
Did you successfully add custom instructions for your organization?
Yes No
-{% endnote %}
+
diff --git a/content/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-personal-instructions.md b/content/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-personal-instructions.md
index 4e8a6b33821f..b98a6f7ac65c 100644
--- a/content/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-personal-instructions.md
+++ b/content/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-personal-instructions.md
@@ -49,13 +49,13 @@ To add personal custom instructions on {% data variables.product.github %}:
Your instructions are now active and remain active until you change or remove them.
-{% note %}
+
Did you successfully add personal custom instructions?
Yes No
-{% endnote %}
+
## Further reading
diff --git a/content/copilot/tutorials/reduce-technical-debt.md b/content/copilot/tutorials/reduce-technical-debt.md
index b425dc065808..6c8d8a2db55d 100644
--- a/content/copilot/tutorials/reduce-technical-debt.md
+++ b/content/copilot/tutorials/reduce-technical-debt.md
@@ -356,13 +356,13 @@ By automating routine refactoring and maintenance tasks, {% data variables.produ
### Quick survey
-{% note %}
+
After reading this tutorial, do you feel confident you can use {% data variables.product.prodname_copilot_short %} to reduce the technical debt in a codebase?
Yes No
-{% endnote %}
+
## Next steps
diff --git a/content/repositories/creating-and-managing-repositories/repository-limits.md b/content/repositories/creating-and-managing-repositories/repository-limits.md
index 2349bbde5057..180b91973962 100644
--- a/content/repositories/creating-and-managing-repositories/repository-limits.md
+++ b/content/repositories/creating-and-managing-repositories/repository-limits.md
@@ -45,7 +45,7 @@ To avoid throttling and performance issues, we recommend staying within the foll
* **Push size**: This limit is enforced at 2GB.
* **Single object size**:
- The recommended maximum limit is 1MB. This is enforced at 100MB. To track large files in a Git repository, we recommend using {% data variables.large_files.product_name_short %}. See [AUTOTITLE](/repositories/working-with-files/managing-large-files/about-git-large-file-storage).
+ The recommended maximum limit is 1MB. {% ifversion ghes %}By default, this is enforced at 100 MB, but enterprise owners can change or remove this limit. See [AUTOTITLE](/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-repository-management-policies-in-your-enterprise#enforcing-a-policy-for-git-push-limits).{% else %}This is enforced at 100 MB.{% endif %} To track large files in a Git repository, we recommend using {% data variables.large_files.product_name_short %}. See [AUTOTITLE](/repositories/working-with-files/managing-large-files/about-git-large-file-storage).
* **Git read operations (e.g. fetches, clones)**:
diff --git a/data/reusables/organizations/close-all-content-when-blocking-user.md b/data/reusables/organizations/close-all-content-when-blocking-user.md
new file mode 100644
index 000000000000..a8ee93843637
--- /dev/null
+++ b/data/reusables/organizations/close-all-content-when-blocking-user.md
@@ -0,0 +1 @@
+1. Optionally, select **Close all open issues, pull requests, and discussions opened by this user**.