fix: align v02 target validation with rollout services

This commit is contained in:
Codex
2026-06-02 05:19:10 +00:00
parent 84f33ea606
commit 106348fe79
3 changed files with 11 additions and 3 deletions
+9 -1
View File
@@ -1238,6 +1238,7 @@ function v02TargetValidation(input: {
sourceCommit: string | null;
pipelineRun: Record<string, unknown> | null;
argo: Record<string, unknown>;
planArtifacts: Record<string, unknown>;
runtimeWorkloads: Record<string, unknown>;
webAssets: Record<string, unknown>;
gitMirror: Record<string, unknown>;
@@ -1259,6 +1260,9 @@ function v02TargetValidation(input: {
const serviceSourceCommits = Object.fromEntries(workloadItems
.filter((item) => item.serviceId === "hwlab-cloud-api" || item.serviceId === "hwlab-cloud-web")
.map((item) => [String(item.serviceId), stringOrNull(item.sourceCommit) ?? stringOrNull(item.artifactSourceCommit)]));
const rolloutServices = stringArray(input.planArtifacts.rolloutServices)
.filter((serviceId) => serviceId === "hwlab-cloud-api" || serviceId === "hwlab-cloud-web");
const requiredRuntimeServices = rolloutServices.length > 0 ? rolloutServices : ["hwlab-cloud-api"];
const recentItems = Array.isArray(input.recentPipelineRuns.items)
? input.recentPipelineRuns.items.map((item) => record(item))
: [];
@@ -1290,7 +1294,7 @@ function v02TargetValidation(input: {
githubInSync: gitMirrorSummary.githubInSync ?? null,
});
}
for (const serviceId of ["hwlab-cloud-api", "hwlab-cloud-web"]) {
for (const serviceId of requiredRuntimeServices) {
const serviceCommit = serviceSourceCommits[serviceId];
if (sourceCommit !== null && serviceCommit !== sourceCommit) {
const mismatch = { reason: "runtime-service-source-mismatch", serviceId, expectedSourceCommit: sourceCommit, actualSourceCommit: serviceCommit ?? null };
@@ -1314,6 +1318,9 @@ function v02TargetValidation(input: {
: { name: input.pipelineRun.pipelineRun ?? null, status: input.pipelineRun.status ?? null, reason: input.pipelineRun.reason ?? null },
argo: { syncRevision: argoFields.syncRevision ?? null, syncStatus: argoFields.syncStatus ?? null, health: argoFields.health ?? null },
runtimeServices: serviceSourceCommits,
requiredRuntimeServices,
rolloutServices: stringArray(input.planArtifacts.rolloutServices),
reusedServices: stringArray(input.planArtifacts.reusedServices),
superseded,
supersededRuntimeServices,
newerSucceededRuns: newerSucceededRuns.slice(0, 3).map((item) => ({
@@ -2042,6 +2049,7 @@ function v02ControlPlaneStatus(target: V02ControlPlaneStatusTarget = {}): Record
ok: shellSectionOk(argo),
fields: { targetRevision, path, syncRevision, syncStatus, health },
},
planArtifacts,
runtimeWorkloads,
webAssets,
gitMirror,