Commit 4066d64f3ea for woocommerce
commit 4066d64f3eaeb63be8b45592276941c7529931e9
Author: Taha Paksu <3295+tpaksu@users.noreply.github.com>
Date: Mon Oct 5 18:19:26 2026 +0300
Route order fulfillment file reviews to Escargot (#69375)
* Route order fulfillment file reviews to Escargot
* Route Admin Features reviews to feature owners
---------
Co-authored-by: Ján Mikláš <neosinner@gmail.com>
diff --git a/.github/actions/assign-reviewers/test.js b/.github/actions/assign-reviewers/test.js
index 7c50e22d6b3..7c743151de8 100644
--- a/.github/actions/assign-reviewers/test.js
+++ b/.github/actions/assign-reviewers/test.js
@@ -83,6 +83,44 @@ check( 'the shipped configs still parse and name reviewers', () => {
}
} );
+check( 'Admin Features files route to their feature owners', () => {
+ const community = path.join( __dirname, '../../project-community-pr-assigner.json' );
+ const config = JSON.parse( fs.readFileSync( community, 'utf8' ) );
+ const owners = ( file ) => {
+ const matched = Object.keys( config )
+ .filter( ( pattern ) => matches( pattern, file ) )
+ .flatMap( ( pattern ) => [].concat( config[ pattern ] ) );
+ return [ ...new Set( matched ) ];
+ };
+
+ const source = 'plugins/woocommerce/src/Admin/Features';
+ const tests = 'plugins/woocommerce/tests/php/src/Admin/Features';
+ const cases = [
+ [ `${ source }/Blueprint/Init.php`, 'somewherewarm' ],
+ [ `${ source }/MarketingRecommendations/Init.php`, 'ballade' ],
+ [ `${ source }/Navigation/RemovedDeprecated.php`, 'somewherewarm' ],
+ [ `${ source }/OnboardingTasks/Init.php`, 'rubik' ],
+ [ `${ source }/PaymentGatewaySuggestions/Init.php`, 'moltres' ],
+ [ `${ source }/ProductBlockEditor/ProductTemplates/SectionInterface.php`, 'kirigami' ],
+ [ `${ source }/ShippingPartnerSuggestions/ShippingPartnerSuggestions.php`, 'escargot' ],
+ [ `${ source }/Fulfillments/FulfillmentsController.php`, 'escargot' ],
+ [ `${ source }/Fulfillments/deep/Nested.php`, 'escargot' ],
+ [ `${ source }/Features.php`, 'rubik' ],
+ [ `${ source }/LaunchYourStore.php`, 'rubik' ],
+ [ `${ source }/Onboarding.php`, 'rubik' ],
+ [ `${ source }/TransientNotices.php`, 'somewherewarm' ],
+ [ `${ tests }/Analytics/FeatureEnabledTest.php`, 'ventures' ],
+ [ `${ tests }/Blueprint/InitTest.php`, 'somewherewarm' ],
+ [ `${ tests }/OnboardingTasks/DeprecatedExtendedTaskTest.php`, 'rubik' ],
+ [ `${ tests }/ShippingPartnerSuggestions/DefaultShippingPartnersTest.php`, 'escargot' ],
+ [ `${ tests }/Fulfillments/FulfillmentsControllerTest.php`, 'escargot' ],
+ ];
+
+ for ( const [ file, owner ] of cases ) {
+ assert.deepStrictEqual( owners( file ), [ owner ], `${ file } should route only to ${ owner }` );
+ }
+} );
+
/* Requesting the reviews. */
const run = async ( { config, mode = 'changed-files', changed = [], requestReviewers, membership = {} } ) => {
diff --git a/.github/project-community-pr-assigner.json b/.github/project-community-pr-assigner.json
index 4b939200f53..5ae8379bb10 100644
--- a/.github/project-community-pr-assigner.json
+++ b/.github/project-community-pr-assigner.json
@@ -18,6 +18,7 @@
"plugins/woocommerce/client/legacy/**/*{attribute,product,variation}*": "kirigami",
"plugins/woocommerce/src/{Blocks,LayoutTemplates}/**/*": "kirigami",
"plugins/woocommerce/src/Admin/BlockTemplates/**/*": "kirigami",
+ "plugins/woocommerce/src/Admin/Features/ProductBlockEditor/**/*": "kirigami",
"plugins/woocommerce/src/Internal/{CostOfGoodsSold,Customers,ProductAttributes,ProductAttributesLookup,ProductDownloads,ProductFeed,ProductFilters,ProductGallery,ProductImage,VariationGallery}/**/*": "kirigami",
"plugins/woocommerce/includes/{blocks,customizer,shortcodes,theme-support,walkers,widgets}/**/*": "kirigami",
"plugins/woocommerce/includes/{class-wc-customer*,class-wc-product*,wc-customer*,wc-product*,wc-stock-functions.php}": "kirigami",
@@ -34,6 +35,8 @@
"plugins/woocommerce/src/Internal/{Abilities,AbilitiesApi,Api,BatchProcessing,Caches,ComingSoon,CustomerEmailVerification,DataStores,DependencyManagement,Features,LegacyAssets,Logging,MCP,OrderReviews,Orders,OrderWithdrawal,PushNotifications,ReceiptRendering,RestApi,ShopperLists,StockNotifications,Traits,TransientFiles}/**/*": "rubik",
"plugins/woocommerce/src/Internal/{AddressProvider,POS}/**/*": "kirigami",
"plugins/woocommerce/src/Internal/Admin/{Logging,Onboarding,Orders,Schedulers}/**/*": "rubik",
+ "plugins/woocommerce/src/Admin/Features/{Features.php,LaunchYourStore.php,Onboarding.php}": "rubik",
+ "plugins/woocommerce/src/Admin/Features/OnboardingTasks/**/*": "rubik",
"plugins/woocommerce/src/Internal/Admin/*": "rubik",
"plugins/woocommerce/src/Internal/Admin/{ProductForm,ProductReviews}/**/*": "kirigami",
"plugins/woocommerce/includes/*": "rubik",
@@ -45,6 +48,7 @@
"plugins/woocommerce/tests/php/src/{Api,Caching,Database,Proxies,Utilities}/**/*": "rubik",
"plugins/woocommerce/tests/php/src/Internal/{Abilities,AbilitiesApi,Api,BatchProcessing,Caches,ComingSoon,CustomerEmailVerification,DataStores,DependencyManagement,Features,LegacyAssets,LegacyPhpApi,Logging,MCP,OrderReviews,Orders,OrderWithdrawal,PushNotifications,ReceiptRendering,RestApi,ShopperLists,StockNotifications,Telemetry,Traits,TransientFiles}/**/*": "rubik",
"plugins/woocommerce/tests/php/src/Internal/Admin/{Logging,Onboarding,Orders,Schedulers}/**/*": "rubik",
+ "plugins/woocommerce/tests/php/src/Admin/Features/OnboardingTasks/**/*": "rubik",
"plugins/woocommerce/tests/php/src/Internal/Admin/*": "rubik",
"plugins/woocommerce/tests/php/src/Internal/*": "rubik",
"plugins/woocommerce/tests/php/src/Admin/API/**/*": "rubik",
@@ -56,6 +60,7 @@
"packages/php/email-editor/**/*": "ballade",
"plugins/woocommerce/client/admin/client/{marketing,settings-email}/**/*": "ballade",
"plugins/woocommerce/src/Admin/Marketing/**/*": "ballade",
+ "plugins/woocommerce/src/Admin/Features/MarketingRecommendations/**/*": "ballade",
"plugins/woocommerce/src/Internal/{Email,EmailEditor}/**/*": "ballade",
"plugins/woocommerce/src/Internal/Admin/{EmailImprovements,EmailPreview,Emails,Marketing}/**/*": "ballade",
"plugins/woocommerce/includes/{emails,react-admin/emails}/**/*": "ballade",
@@ -73,6 +78,7 @@
"plugins/woocommerce/client/admin/client/{payments,payments-welcome,settings,settings-payments,settings-recommendations}/**/*": "moltres",
"plugins/woocommerce/src/Gateways/**/*": "moltres",
"plugins/woocommerce/src/Admin/Settings/**/*": "moltres",
+ "plugins/woocommerce/src/Admin/Features/PaymentGatewaySuggestions/**/*": "moltres",
"plugins/woocommerce/src/Internal/Settings/**/*": "moltres",
"plugins/woocommerce/includes/{gateways,payment-tokens}/**/*": "moltres",
"plugins/woocommerce/includes/admin/settings/**/*": "moltres",
@@ -96,6 +102,8 @@
"plugins/woocommerce/tests/php/includes/shipping/**/*": "escargot",
"plugins/woocommerce/tests/legacy/unit-tests/{countries,shipping,tax}/**/*": "escargot",
"plugins/woocommerce/assets/images/{shipping_partners,shipping_providers}/**/*": "escargot",
+ "plugins/woocommerce/src/Admin/Features/{Fulfillments,ShippingPartnerSuggestions}/**/*": "escargot",
+ "plugins/woocommerce/tests/php/src/Admin/Features/{Fulfillments,ShippingPartnerSuggestions}/**/*": "escargot",
"packages/js/{data,explat,tracks}/**/*": "ventures",
"packages/php/woocommerce-analytics/**/*": "ventures",
"plugins/woocommerce/client/admin/client/{analytics,order-attribution-install-banner}/**/*": "ventures",
@@ -106,13 +114,16 @@
"plugins/woocommerce/src/Internal/Admin/Reports/**/*": "ventures",
"plugins/woocommerce/tests/php/src/Internal/Admin/Reports/**/*": "ventures",
"plugins/woocommerce/tests/php/src/Admin/API/Reports/**/*": "ventures",
+ "plugins/woocommerce/tests/php/src/Admin/Features/Analytics/**/*": "ventures",
"plugins/woocommerce/tests/php/src/Admin/*Report*": "ventures",
"plugins/woocommerce/tests/php/src/Internal/McStatsTest.php": "ventures",
"plugins/woocommerce/tests/php/includes/tracks/**/*": "ventures",
"packages/js/{admin-layout,csv-export,navigation,notices}/**/*": "somewherewarm",
"packages/php/blueprint/**/*": "somewherewarm",
"plugins/woocommerce/client/admin/client/{activity-panel,blueprint,dashboard,embedded-body-layout,guided-tours,header,homescreen,inbox-panel,layout,store-management-links}/**/*": "somewherewarm",
- "plugins/woocommerce/src/Admin/{Composer,DateTimeProvider,Features,Notes,Overrides,RemoteInboxNotifications,Schedulers}/**/*": "somewherewarm",
+ "plugins/woocommerce/src/Admin/{Composer,DateTimeProvider,Notes,Overrides,RemoteInboxNotifications,Schedulers}/**/*": "somewherewarm",
+ "plugins/woocommerce/src/Admin/Features/TransientNotices.php": "somewherewarm",
+ "plugins/woocommerce/src/Admin/Features/{Blueprint,Navigation}/**/*": "somewherewarm",
"plugins/woocommerce/src/Internal/{CLI,Integrations,Jetpack,Utilities}/**/*": "somewherewarm",
"plugins/woocommerce/src/Internal/Admin/{ImportExport,Notes}/**/*": "somewherewarm",
"plugins/woocommerce/includes/{cli,export,import,integrations}/**/*": "somewherewarm",
@@ -121,7 +132,7 @@
"plugins/woocommerce/tests/**/*{export,import,navigation,notice,tool}*": "somewherewarm",
"plugins/woocommerce/tests/php/src/Internal/{CLI,Integration,Utilities}/**/*": "somewherewarm",
"plugins/woocommerce/tests/php/src/Internal/Admin/{ImportExport,Notes}/**/*": "somewherewarm",
- "plugins/woocommerce/tests/php/src/Admin/Features/**/*": "somewherewarm",
+ "plugins/woocommerce/tests/php/src/Admin/Features/Blueprint/**/*": "somewherewarm",
"plugins/woocommerce/tests/php/src/Admin/*": "somewherewarm",
"plugins/woocommerce/tests/php/includes/{cli,exporter,importer}/**/*": "somewherewarm",
"plugins/woocommerce/tests/legacy/unit-tests/{exporter,geolocation,importer,integrations,util}/**/*": "somewherewarm",