From 78e31a73e412f4e1d7e67a61a71cb08c835afa4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A5=E9=92=B1?= Date: Sat, 15 Aug 2026 11:52:47 +0700 Subject: [PATCH 1/2] test(v21): reproduce bilingual Product final CI route gaps --- .../v21-product-experience-shell-p0-final-validation.test.js | 2 ++ .../layered-ci/v21-product-experience-shell-p0-routing.test.js | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/layered-ci/v21-product-experience-shell-p0-final-validation.test.js b/tests/layered-ci/v21-product-experience-shell-p0-final-validation.test.js index ebeef0222..fa934fdae 100644 --- a/tests/layered-ci/v21-product-experience-shell-p0-final-validation.test.js +++ b/tests/layered-ci/v21-product-experience-shell-p0-final-validation.test.js @@ -21,6 +21,8 @@ test('Product Experience final validation is an exact-head same-repository pull- assert.doesNotMatch(source, /^\s*(workflow_dispatch|push|schedule):/mu); assert.match(source, /github\.event\.pull_request\.head\.repo\.full_name\s*==\s*github\.repository/u); assert.match(source, /github\.event\.pull_request\.head\.ref\s*==\s*'product\/v21-product-experience-shell-p0'/u); + assert.match(source, /github\.event\.pull_request\.head\.ref\s*==\s*'product\/v21-product-experience-bilingual-search-translation-task-ux-p0'/u); + assert.doesNotMatch(source, /github\.event\.pull_request\.head\.ref[\s\S]{0,80}(?:startsWith|contains|matches)/u); assert.match(source, /runs-on:\s*windows-latest/u); assert.match(source, /runs-on:\s*ubuntu-latest/u); assert.match(source, /actions\/checkout@11d5960a326750d5838078e36cf38b85af677262/u); diff --git a/tests/layered-ci/v21-product-experience-shell-p0-routing.test.js b/tests/layered-ci/v21-product-experience-shell-p0-routing.test.js index 9322051d9..a50780d47 100644 --- a/tests/layered-ci/v21-product-experience-shell-p0-routing.test.js +++ b/tests/layered-ci/v21-product-experience-shell-p0-routing.test.js @@ -11,6 +11,7 @@ const policy = JSON.parse(fs.readFileSync(path.join(ROOT, 'governance/layered-ci const V21_PRODUCT_EXPERIENCE_SHELL_P0_BOOTSTRAP_PATHS = Object.freeze([ 'config/upstreams/v21-product-experience-shell-p0.json', + 'integration/element-module/src/product-experience/BilingualSearchPanel.tsx', 'integration/element-module/src/product-experience/PeopleSurface.tsx', 'integration/element-module/src/product-experience/ProductComposerAccessory.tsx', 'integration/element-module/src/product-experience/ProductExperienceShell.css', @@ -35,7 +36,7 @@ const V21_PRODUCT_EXPERIENCE_SHELL_P0_BOOTSTRAP_PATHS = Object.freeze([ ]); test('V2.1 Product Experience Shell P0 bootstrap paths are exact PRODUCT_WP0 routes', () => { - assert.equal(new Set(V21_PRODUCT_EXPERIENCE_SHELL_P0_BOOTSTRAP_PATHS).size, 22); + assert.equal(new Set(V21_PRODUCT_EXPERIENCE_SHELL_P0_BOOTSTRAP_PATHS).size, 23); for (const file of V21_PRODUCT_EXPERIENCE_SHELL_P0_BOOTSTRAP_PATHS) { const result = classifyWp0Route(policy, [file]); assert.equal(result.pass, true, `${file}: ${JSON.stringify(result)}`); From 1cca222282bc81e16d8e25417c54bbbfbf810939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A5=E9=92=B1?= Date: Sat, 15 Aug 2026 11:59:59 +0700 Subject: [PATCH 2/2] fix(v21): close exact Product final CI routes --- ...uct-experience-shell-p0-final-validation.yml | 17 +++++++++++++---- governance/layered-ci/wp0-routing-policy.json | 1 + 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/v21-product-experience-shell-p0-final-validation.yml b/.github/workflows/v21-product-experience-shell-p0-final-validation.yml index 8dd3b7757..86aeab5d1 100644 --- a/.github/workflows/v21-product-experience-shell-p0-final-validation.yml +++ b/.github/workflows/v21-product-experience-shell-p0-final-validation.yml @@ -7,13 +7,16 @@ permissions: contents: read env: - PRODUCT_BRANCH: product/v21-product-experience-shell-p0 + PRODUCT_BRANCH: ${{ github.event.pull_request.head.ref }} jobs: frozen-element-reproducibility: if: >- github.event.pull_request.head.repo.full_name == github.repository && - github.event.pull_request.head.ref == 'product/v21-product-experience-shell-p0' + ( + github.event.pull_request.head.ref == 'product/v21-product-experience-shell-p0' || + github.event.pull_request.head.ref == 'product/v21-product-experience-bilingual-search-translation-task-ux-p0' + ) runs-on: windows-latest env: CANDIDATE_SHA: ${{ github.event.pull_request.head.sha }} @@ -110,7 +113,10 @@ jobs: materialized-desktop-uat: if: >- github.event.pull_request.head.repo.full_name == github.repository && - github.event.pull_request.head.ref == 'product/v21-product-experience-shell-p0' + ( + github.event.pull_request.head.ref == 'product/v21-product-experience-shell-p0' || + github.event.pull_request.head.ref == 'product/v21-product-experience-bilingual-search-translation-task-ux-p0' + ) runs-on: windows-latest timeout-minutes: 120 env: @@ -415,7 +421,10 @@ jobs: materialized-matrix-uat: if: >- github.event.pull_request.head.repo.full_name == github.repository && - github.event.pull_request.head.ref == 'product/v21-product-experience-shell-p0' + ( + github.event.pull_request.head.ref == 'product/v21-product-experience-shell-p0' || + github.event.pull_request.head.ref == 'product/v21-product-experience-bilingual-search-translation-task-ux-p0' + ) runs-on: ubuntu-latest timeout-minutes: 120 env: diff --git a/governance/layered-ci/wp0-routing-policy.json b/governance/layered-ci/wp0-routing-policy.json index 54487f1a6..ec0a7bcfb 100644 --- a/governance/layered-ci/wp0-routing-policy.json +++ b/governance/layered-ci/wp0-routing-policy.json @@ -172,6 +172,7 @@ "integration/element-module/src/VoiceWorkspace.css", "integration/element-module/src/VoiceWorkspace.tsx", "config/upstreams/v21-product-experience-shell-p0.json", + "integration/element-module/src/product-experience/BilingualSearchPanel.tsx", "integration/element-module/src/product-experience/PeopleSurface.tsx", "integration/element-module/src/product-experience/ProductComposerAccessory.tsx", "integration/element-module/src/product-experience/ProductExperienceShell.css",