From 1147dea9fcd48efd6dec79b19a2b42d7d47bf18c Mon Sep 17 00:00:00 2001 From: Codex Date: Tue, 14 Jul 2026 02:13:42 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=20runtime=20GitOps=20?= =?UTF-8?q?verify=20marker=20=E7=BB=84=E5=90=88=E5=88=A4=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- scripts/native/cicd/pac-status-evaluator.cjs | 31 ++++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/scripts/native/cicd/pac-status-evaluator.cjs b/scripts/native/cicd/pac-status-evaluator.cjs index 30454536..eb79995d 100644 --- a/scripts/native/cicd/pac-status-evaluator.cjs +++ b/scripts/native/cicd/pac-status-evaluator.cjs @@ -392,7 +392,7 @@ function extractPacSourceObservation(recordsInput) { const skipMarkerSeen = collectMarker !== null || promoteMarker !== null; const skipMarkerConflict = skipMarkerSeen && !noRuntimeChangePlan; const runtimeGitopsVerifyMarkerConflict = runtimeGitopsVerifyMarker !== null - && (!noRuntimeChangePlan || skipMarkerSeen); + && (!noRuntimeChangePlan || promoteMarker !== null); const deliveryTerminalReady = planTask?.status === "succeeded" && collectTask?.status === "succeeded" && promoteTask?.status === "succeeded"; @@ -411,7 +411,7 @@ function extractPacSourceObservation(recordsInput) { mode = "runtime-gitops-verify"; valid = true; reason = "no-build-no-rollout-plan-gitops-verify"; - } else if (planShapeValid && sourceCommitValid && !noRuntimeChangePlan && !skipMarkerConflict && deliveryTerminalReady) { + } else if (planShapeValid && sourceCommitValid && !noRuntimeChangePlan && runtimeGitopsVerifyMarker === null && !skipMarkerConflict && deliveryTerminalReady) { mode = "delivery"; valid = true; reason = "artifact-or-runtime-delivery-required"; @@ -922,6 +922,7 @@ function runtimeGitopsVerifyObservation(sourceCommit = "c".repeat(40)) { reusedServices: Array.from({ length: 8 }, (_item, index) => `service-${index}`), noImageBuildReason: "test-only-change", }, + { event: "collect-artifacts", status: "skipped", reason: "no-build-no-rollout-plan" }, { event: "gitops-promote", status: "continuing", reason: "no-build-no-rollout-plan-gitops-verify" }, { event: "pac-task-terminal", pipelineTask: "plan-artifacts", taskRun: "plan", status: "succeeded", reason: "Succeeded", results: [] }, { event: "pac-task-terminal", pipelineTask: "collect-artifacts", taskRun: "collect", status: "succeeded", reason: "Succeeded", results: [] }, @@ -1068,7 +1069,7 @@ function runPacStatusFixtureChecks() { ]) } }), }, { - id: "runtime-gitops-verify-marker-conflict", + id: "runtime-gitops-verify-promote-marker-conflict", expectedOk: false, expectedCode: "pac-source-observation-inconsistent", input: fixtureInput({ artifact: { sourceObservation: extractPacSourceObservation([ @@ -1081,6 +1082,30 @@ function runPacStatusFixtureChecks() { { event: "pac-task-terminal", pipelineTask: "gitops-promote", taskRun: "promote", status: "succeeded", reason: "Succeeded", results: [] }, ]) } }), }, + { + id: "runtime-gitops-verify-nonzero-plan-conflict", + expectedOk: false, + expectedCode: "pac-source-observation-inconsistent", + input: fixtureInput({ artifact: { sourceObservation: extractPacSourceObservation([ + { event: "g14-ci-plan", sourceCommitId: "c".repeat(40), affectedServices: ["service"], rolloutServices: ["service"], buildServices: [], reusedServices: ["service"] }, + { event: "gitops-promote", status: "continuing", reason: "no-build-no-rollout-plan-gitops-verify" }, + { event: "pac-task-terminal", pipelineTask: "plan-artifacts", taskRun: "plan", status: "succeeded", reason: "Succeeded", results: [] }, + { event: "pac-task-terminal", pipelineTask: "collect-artifacts", taskRun: "collect", status: "succeeded", reason: "Succeeded", results: [] }, + { event: "pac-task-terminal", pipelineTask: "gitops-promote", taskRun: "promote", status: "succeeded", reason: "Succeeded", results: [] }, + ]) } }), + }, + { + id: "runtime-gitops-verify-terminal-evidence-missing", + expectedOk: false, + expectedCode: "pac-source-observation-inconsistent", + input: fixtureInput({ artifact: { sourceObservation: extractPacSourceObservation([ + { event: "g14-ci-plan", sourceCommitId: "c".repeat(40), affectedServices: [], rolloutServices: [], buildServices: [], reusedServices: ["service"] }, + { event: "collect-artifacts", status: "skipped", reason: "no-build-no-rollout-plan" }, + { event: "gitops-promote", status: "continuing", reason: "no-build-no-rollout-plan-gitops-verify" }, + { event: "pac-task-terminal", pipelineTask: "plan-artifacts", taskRun: "plan", status: "succeeded", reason: "Succeeded", results: [] }, + { event: "pac-task-terminal", pipelineTask: "collect-artifacts", taskRun: "collect", status: "succeeded", reason: "Succeeded", results: [] }, + ]) } }), + }, { id: "retained-source-mismatch", expectedOk: false,