fix(release): repair frozen validation compatibility (#109272)

This commit is contained in:
Dallin Romney
2026-07-16 11:45:31 -07:00
committed by GitHub
parent 42ff5ec754
commit c4b2183db6
6 changed files with 24 additions and 15 deletions
+9 -1
View File
@@ -668,7 +668,10 @@ jobs:
runAndroid
? [
// android-ci-contract-v2: both app variants, Android lint, benchmark, and ktlint.
{ check_name: "android-test-play", task: "test-play" },
{
check_name: "android-test-play",
task: useCompatibleAndroidCi ? "test-play-compat" : "test-play",
},
{ check_name: "android-test-third-party", task: "test-third-party" },
{
check_name: "android-build-play",
@@ -2927,6 +2930,11 @@ jobs:
:app:testPlayDebugUnitTest \
:wear-shared:testDebugUnitTest
;;
test-play-compat)
# Frozen targets predate the Wear shared project. Keep their app-owned
# Play unit tests without importing current Android modules.
./gradlew --no-daemon --build-cache :app:testPlayDebugUnitTest
;;
test-third-party)
./gradlew --no-daemon --build-cache :app:testThirdPartyDebugUnitTest
;;
@@ -2837,9 +2837,7 @@ jobs:
include:
- suite_id: native-live-src-agents
label: Native live agents
# Keep the dedicated Coding Plan suite below while temporarily omitting
# API Platform calls from the broad agents shard.
command: ZAI_API_KEY= Z_AI_API_KEY= node .release-harness/scripts/test-live-shard.mjs native-live-src-agents
command: node .release-harness/scripts/test-live-shard.mjs native-live-src-agents
timeout_minutes: 60
profile_env_only: false
profiles: stable full
+6 -4
View File
@@ -44,6 +44,7 @@ const OPTIONAL_LIVE_SHARD_FILE_ENVS = new Map([
const SKIPPED_ASSERTION_STATUSES = new Set(["disabled", "pending", "skipped", "todo"]);
const QA_RUNTIME_LIVE_TEST = "extensions/qa-lab/src/matrix-channel-driver.lifecycle.live.test.ts";
const QA_RUNTIME_ARTIFACT = "dist/extensions/qa-lab/runtime-api.js";
const ZAI_LIVE_TEST_FILE = "src/agents/zai.live.test.ts";
/** Live-test shards included in release validation. */
export const RELEASE_LIVE_TEST_SHARDS = Object.freeze([
@@ -259,12 +260,13 @@ export function selectLiveShardFiles(shard, files = collectAllLiveTestFiles()) {
case "native-live-src-agents":
return files.filter(
(file) =>
file.startsWith("src/agents/") ||
file.startsWith("src/llm/") ||
file.startsWith("src/skills/"),
file !== ZAI_LIVE_TEST_FILE &&
(file.startsWith("src/agents/") ||
file.startsWith("src/llm/") ||
file.startsWith("src/skills/")),
);
case "native-live-src-agents-zai-coding":
return files.filter((file) => file === "src/agents/zai.live.test.ts");
return files.filter((file) => file === ZAI_LIVE_TEST_FILE);
case "native-live-src-gateway":
return files.filter(
(file) => file.startsWith("src/gateway/") || file.startsWith("src/system-agent/"),
+3 -2
View File
@@ -1571,7 +1571,7 @@ describe("ci workflow guards", () => {
(step: WorkflowStep) => step.name === "Run Android ${{ matrix.task }}",
);
expect(source).toContain('{ check_name: "android-test-play", task: "test-play" }');
expect(source).toContain('task: useCompatibleAndroidCi ? "test-play-compat" : "test-play"');
expect(source).toContain(
'{ check_name: "android-test-third-party", task: "test-third-party" }',
);
@@ -2525,6 +2525,7 @@ printf '%s\n' "\${CURL_SUCCESS_IP:-203.0.113.7}"
(step: WorkflowStep) => step.name === "Run Android ${{ matrix.task }}",
).run;
expect(androidRun).toContain("build-play-compat)");
expect(androidRun).toContain("test-play-compat)");
expect(androidRun).toContain(":app:assemblePlayDebug");
const legacy = runCiManifestFixture({ bundledPlanner: false });
@@ -2539,7 +2540,7 @@ printf '%s\n' "\${CURL_SUCCESS_IP:-203.0.113.7}"
JSON.parse(expectDefined(legacy.outputs.android_matrix, "legacy Android matrix output"))
.include,
).toEqual([
{ check_name: "android-test-play", task: "test-play" },
{ check_name: "android-test-play", task: "test-play-compat" },
{ check_name: "android-test-third-party", task: "test-third-party" },
{ check_name: "android-build-play", task: "build-play-compat" },
]);
@@ -1604,7 +1604,7 @@ describe("package artifact reuse", () => {
expect(workflow).toContain("suite_id: native-live-src-agents");
expect(workflow).toContain("Checkout trusted live shard harness");
expect(workflow).toContain(
"command: ZAI_API_KEY= Z_AI_API_KEY= node .release-harness/scripts/test-live-shard.mjs native-live-src-agents",
"command: node .release-harness/scripts/test-live-shard.mjs native-live-src-agents",
);
expect(workflow).toContain("suite_id: native-live-src-agents-zai-coding");
expect(workflow).toContain(
+4 -4
View File
@@ -48,10 +48,7 @@ describe("scripts/test-live-shard", () => {
expect(allFiles.length).toBeGreaterThan(0);
expect([...new Set(selectedFiles)].toSorted((a, b) => a.localeCompare(b))).toEqual(allFiles);
expect(duplicateFiles).toEqual([
"src/agents/zai.live.test.ts",
"extensions/music-generation-providers.live.test.ts",
]);
expect(duplicateFiles).toEqual(["extensions/music-generation-providers.live.test.ts"]);
expect(musicProviderFanout).toEqual([
"native-live-extensions-media-music-google",
"native-live-extensions-media-music-minimax",
@@ -91,6 +88,9 @@ describe("scripts/test-live-shard", () => {
expect(selectLiveShardFiles("native-live-src-agents", allFiles)).toContain(
"src/skills/workshop/experience-review.live.test.ts",
);
expect(selectLiveShardFiles("native-live-src-agents", allFiles)).not.toContain(
"src/agents/zai.live.test.ts",
);
expect(selectLiveShardFiles("native-live-src-agents-zai-coding", allFiles)).toEqual([
"src/agents/zai.live.test.ts",
]);