fix: require runtime provenance for follower closeout
This commit is contained in:
+6
-3
@@ -937,6 +937,7 @@ async function decideAndMaybeTrigger(
|
||||
const previousInFlight = stringOrNull(previous.inFlightJob);
|
||||
const previousLastSucceeded = stringOrNull(previous.lastSucceededSha);
|
||||
const previousObserved = stringOrNull(recordAt(previous, ["source"])?.observedSha);
|
||||
const previousTarget = stringOrNull(recordAt(previous, ["target"])?.targetSha);
|
||||
const superseded = previousInFlight !== null && previousObserved !== null && observedSha !== null && previousObserved !== observedSha;
|
||||
let phase: BranchFollowerPhase;
|
||||
let decision: string;
|
||||
@@ -944,7 +945,7 @@ async function decideAndMaybeTrigger(
|
||||
let inFlightJob: string | null = live.inFlightJob;
|
||||
let lastTriggeredSha = live.lastTriggeredSha ?? previousLastTriggered;
|
||||
let lastSucceededSha = live.lastSucceededSha ?? previousLastSucceeded;
|
||||
if (targetSha === null && observedSha !== null && previousLastSucceeded === observedSha) targetSha = observedSha;
|
||||
if (targetSha === null && observedSha !== null && previousLastSucceeded === observedSha && previousTarget === observedSha) targetSha = observedSha;
|
||||
|
||||
if (!follower.enabled) {
|
||||
phase = "Skipped";
|
||||
@@ -1023,6 +1024,7 @@ async function decideAndMaybeTrigger(
|
||||
status: live.command,
|
||||
exitCode: live.exitCode,
|
||||
timedOut: live.timedOut,
|
||||
payload: live.payload,
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -1273,13 +1275,14 @@ async function readAdapterStatus(registry: BranchFollowerRegistry, follower: Fol
|
||||
const runtimeReady = follower.nativeStatus.runtime === null ? null : runtimeWorkloadsReady(follower.nativeStatus.runtime, bundle.workloads);
|
||||
const hasTektonGate = follower.nativeStatus.tekton !== null;
|
||||
const hasRuntimeTarget = runtimeTargetSha !== null;
|
||||
const hasTargetEvidence = hasRuntimeTarget || hasTektonGate;
|
||||
const requiresRuntimeTarget = follower.nativeStatus.runtime !== null;
|
||||
const hasTargetEvidence = hasRuntimeTarget || (!requiresRuntimeTarget && hasTektonGate);
|
||||
const pipelineGateOk = !hasTektonGate
|
||||
|| pipelineSucceeded === true
|
||||
|| (hasRuntimeTarget && runtimeTargetSha === observedSha && argoReady !== false && runtimeReady !== false);
|
||||
const aligned = observedSha !== null
|
||||
&& hasTargetEvidence
|
||||
&& (hasRuntimeTarget ? runtimeTargetSha === observedSha : true)
|
||||
&& (requiresRuntimeTarget ? hasRuntimeTarget && runtimeTargetSha === observedSha : true)
|
||||
&& pipelineGateOk
|
||||
&& argoReady !== false
|
||||
&& runtimeReady !== false;
|
||||
|
||||
Reference in New Issue
Block a user