Commit fbacef2a37c for woocommerce

commit fbacef2a37c84fa4eb43692fbf590189588746ba
Author: Christopher Hertel <mail@christopher-hertel.de>
Date:   Mon Nov 2 18:15:54 2026 +0100

    Remove AbilitiesRegistry and load AbilitiesLoader through the container (#70410)

    * Remove the unused AbilitiesRegistry class

    * Load AbilitiesLoader through the container

    * Update the changelog entry

    * Drop the internal abilities class from the MCP docs

diff --git a/docs/features/mcp/README.md b/docs/features/mcp/README.md
index 5f3a8ef48ce..12133f441e1 100644
--- a/docs/features/mcp/README.md
+++ b/docs/features/mcp/README.md
@@ -268,12 +268,6 @@ WooCommerce Core

 ### Core Components

-**Abilities Registry** ([`AbilitiesRegistry.php`](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/src/Internal/Abilities/AbilitiesRegistry.php))
-
-- Initializes WooCommerce ability categories and loaders
-- Bridges WordPress Abilities API with WooCommerce operations
-- Enables ability discovery for MCP servers and other Abilities API consumers
-
 **Purpose-Built Domain Abilities** ([`Domain`](https://github.com/woocommerce/woocommerce/tree/trunk/plugins/woocommerce/src/Internal/Abilities/Domain))

 - Provide WooCommerce product and order abilities backed by domain APIs
diff --git a/plugins/woocommerce/changelog/remove-abilities-registry b/plugins/woocommerce/changelog/remove-abilities-registry
new file mode 100644
index 00000000000..4f790aa6670
--- /dev/null
+++ b/plugins/woocommerce/changelog/remove-abilities-registry
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+Comment: Remove the unused internal AbilitiesRegistry class and load AbilitiesLoader through the container; no merchant-facing change.
+
diff --git a/plugins/woocommerce/includes/class-woocommerce.php b/plugins/woocommerce/includes/class-woocommerce.php
index 038321c9860..dd193283aa8 100644
--- a/plugins/woocommerce/includes/class-woocommerce.php
+++ b/plugins/woocommerce/includes/class-woocommerce.php
@@ -22,7 +22,7 @@ use Automattic\WooCommerce\Internal\DownloadPermissionsAdjuster;
 use Automattic\WooCommerce\Internal\Features\FeaturesController;
 use Automattic\WooCommerce\Internal\LegacyAssets\LegacySelect2UsageTracker;
 use Automattic\WooCommerce\Internal\MCP\McpEndpointRemoval;
-use Automattic\WooCommerce\Internal\Abilities\AbilitiesRegistry;
+use Automattic\WooCommerce\Internal\Abilities\AbilitiesLoader;
 use Automattic\WooCommerce\Internal\Abilities\AbilitiesTracking;
 use Automattic\WooCommerce\Internal\ProductAttributes\VisualAttributeTermAdmin;
 use Automattic\WooCommerce\Internal\ProductAttributesLookup\DataRegenerator;
@@ -408,7 +408,7 @@ final class WooCommerce {
 		$container->get( EmailImprovements::class );
 		$container->get( DeferredEmailQueue::class );
 		$container->get( AddressProviderController::class );
-		$container->get( AbilitiesRegistry::class );
+		$container->get( AbilitiesLoader::class );
 		$container->get( McpEndpointRemoval::class );
 		$container->get( CouponCodeLookupInvalidator::class );
 		$container->get( ProductVersionStringInvalidator::class );
diff --git a/plugins/woocommerce/src/Internal/Abilities/AbilitiesLoader.php b/plugins/woocommerce/src/Internal/Abilities/AbilitiesLoader.php
index 5fac2d014b4..11b5f6d925b 100644
--- a/plugins/woocommerce/src/Internal/Abilities/AbilitiesLoader.php
+++ b/plugins/woocommerce/src/Internal/Abilities/AbilitiesLoader.php
@@ -81,7 +81,7 @@ class AbilitiesLoader {
 	 *
 	 * @since 10.9.0
 	 */
-	final public static function init(): void {
+	final public function init(): void {
 		if ( self::$initialized ) {
 			return;
 		}
diff --git a/plugins/woocommerce/src/Internal/Abilities/AbilitiesRegistry.php b/plugins/woocommerce/src/Internal/Abilities/AbilitiesRegistry.php
deleted file mode 100644
index 972e2c46da9..00000000000
--- a/plugins/woocommerce/src/Internal/Abilities/AbilitiesRegistry.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * Abilities Registry class file.
- */
-
-declare( strict_types=1 );
-
-namespace Automattic\WooCommerce\Internal\Abilities;
-
-defined( 'ABSPATH' ) || exit;
-
-/**
- * Abilities Registry class for WooCommerce.
- *
- * Centralized registry that initializes all WooCommerce abilities.
- * These abilities can be consumed by MCP, REST API, or other tools.
- */
-class AbilitiesRegistry {
-
-	/**
-	 * Initialize all WooCommerce abilities.
-	 *
-	 * @since 10.9.0
-	 *
-	 * @internal
-	 */
-	final public function init(): void {
-		AbilitiesLoader::init();
-	}
-
-	/**
-	 * Get all ability IDs from the WordPress Abilities API.
-	 *
-	 * @return array Array of all ability IDs.
-	 */
-	public function get_abilities_ids(): array {
-		return array_keys( wp_get_abilities() );
-	}
-}
diff --git a/plugins/woocommerce/tests/php/src/Internal/AbilitiesApi/ExtensibleAbilitiesTest.php b/plugins/woocommerce/tests/php/src/Internal/AbilitiesApi/ExtensibleAbilitiesTest.php
index a8c2d903fac..6e4015cfa48 100644
--- a/plugins/woocommerce/tests/php/src/Internal/AbilitiesApi/ExtensibleAbilitiesTest.php
+++ b/plugins/woocommerce/tests/php/src/Internal/AbilitiesApi/ExtensibleAbilitiesTest.php
@@ -86,7 +86,7 @@ class ExtensibleAbilitiesTest extends \WC_REST_Unit_Test_Case {

 		parent::setUp();

-		AbilitiesLoader::init();
+		wc_get_container()->get( AbilitiesLoader::class );
 		$this->reset_registries();
 		self::$received = array();
 		wp_set_current_user( self::$administrator_id );