fix: clarify code queue split-brain liveness
This commit is contained in:
@@ -179,6 +179,7 @@ function checkStaleActiveOwnerExpired(): FixtureCheck {
|
||||
const diagnostics = schedulerDiagnostics([task], []);
|
||||
assertCondition(decision.allowed === true && decision.reason === "owner-heartbeat-expired", "expired owner heartbeat should be the stale recovery gate", { decision });
|
||||
assertCondition(diagnostics.state === "stale-active", "diagnostics must mark stale active only after owner heartbeat expiry", diagnostics as unknown as Record<string, unknown>);
|
||||
assertCondition(diagnostics.effectiveLiveness === "at-risk" && diagnostics.recommendedAction === "investigate-heartbeat-risk", "expired heartbeat diagnostics must surface at-risk liveness", diagnostics as unknown as Record<string, unknown>);
|
||||
assertCondition(diagnostics.staleRecoveryCandidateTaskIds.includes(task.id), "expired owner heartbeat should create a stale candidate", diagnostics as unknown as Record<string, unknown>);
|
||||
return {
|
||||
name: "code-queue:stale-active-owner-expired",
|
||||
@@ -186,6 +187,8 @@ function checkStaleActiveOwnerExpired(): FixtureCheck {
|
||||
detail: {
|
||||
decision,
|
||||
state: diagnostics.state,
|
||||
effectiveLiveness: diagnostics.effectiveLiveness,
|
||||
recommendedAction: diagnostics.recommendedAction,
|
||||
staleRecoveryCandidateTaskIds: diagnostics.staleRecoveryCandidateTaskIds,
|
||||
},
|
||||
};
|
||||
@@ -203,6 +206,8 @@ function checkControlPlaneSplitBrainDiagnostics(): FixtureCheck {
|
||||
oaPublisher: null,
|
||||
});
|
||||
assertCondition(diagnostics.state === "split-brain" && diagnostics.splitBrain === true, "master postgres-control-plane must report split-brain when DB active has fresh scheduler heartbeat", diagnostics as unknown as Record<string, unknown>);
|
||||
assertCondition(diagnostics.splitBrainLive === true && diagnostics.effectiveLiveness === "live", "fresh split-brain diagnostics must be degraded but live", diagnostics as unknown as Record<string, unknown>);
|
||||
assertCondition(diagnostics.recommendedAction === "continue-supervision", "fresh split-brain diagnostics must recommend continued supervision", diagnostics as unknown as Record<string, unknown>);
|
||||
assertCondition(diagnostics.schedulerActiveRunSlotCount === 0 && diagnostics.databaseActiveTaskCount === 1, "split-brain fixture should preserve the exact control-plane divergence", diagnostics as unknown as Record<string, unknown>);
|
||||
return {
|
||||
name: "code-queue:control-plane-split-brain-diagnostics",
|
||||
@@ -210,6 +215,9 @@ function checkControlPlaneSplitBrainDiagnostics(): FixtureCheck {
|
||||
detail: {
|
||||
state: diagnostics.state,
|
||||
splitBrain: diagnostics.splitBrain,
|
||||
splitBrainLive: diagnostics.splitBrainLive,
|
||||
effectiveLiveness: diagnostics.effectiveLiveness,
|
||||
recommendedAction: diagnostics.recommendedAction,
|
||||
executionStateSource: diagnostics.executionStateSource,
|
||||
databaseActiveTaskIds: diagnostics.databaseActiveTaskIds,
|
||||
schedulerActiveRunSlotCount: diagnostics.schedulerActiveRunSlotCount,
|
||||
|
||||
Reference in New Issue
Block a user