fix(agent): keep alert replay closure monotonic
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 1m11s
CD Pipeline / build-and-deploy (push) Successful in 7m28s
AWOOOI Harbor 110 Local Repair / workflow-shape (push) Successful in 0s
AWOOOI Harbor 110 Local Repair / harbor-110-local-repair (push) Successful in 8s
CD Pipeline / post-deploy-checks (push) Successful in 2m19s

This commit is contained in:
ogt
2026-07-14 11:24:26 +08:00
parent 82bb69b38f
commit afe15662f3
7 changed files with 690 additions and 10 deletions

View File

@@ -167,6 +167,15 @@ type RuntimeReceiptReadback = {
incident_id?: string | null;
catalog_id?: string | null;
} | null;
historical_stdin_boundary_replay?: HistoricalStdinBoundaryReplay | null;
};
type HistoricalStdinBoundaryReplay = {
status?: string | null;
latest_replay_attempt_closed?: boolean | null;
operation_boundaries?: {
runtime_apply_executed_by_replay?: boolean | null;
} | null;
};
type RuntimeControlPayload = {
@@ -182,6 +191,7 @@ type RuntimeControlPayload = {
critical_break_glass_required?: boolean | null;
} | null;
runtime_receipt_readback?: RuntimeReceiptReadback | null;
historical_stdin_boundary_replay?: HistoricalStdinBoundaryReplay | null;
rollups?: Record<string, number | string | boolean | null | undefined> | null;
};
@@ -692,6 +702,26 @@ export function AutonomousRuntimeReceiptPanel({
const sourceFamilyItems = readback?.work_item_progress?.source_family_items ?? [];
const latestFlow = readback?.latest_flow_closure;
const rollups = payload?.rollups ?? {};
const stdinBoundaryReplay = payload?.historical_stdin_boundary_replay
?? readback?.historical_stdin_boundary_replay;
const replayApplyObserved =
stdinBoundaryReplay?.operation_boundaries?.runtime_apply_executed_by_replay === true
|| toNumber(rollups.historical_stdin_boundary_replay_runtime_apply_count) > 0;
const replayClosed = stdinBoundaryReplay?.latest_replay_attempt_closed === true;
const replayRepairRequired =
stdinBoundaryReplay?.status === "verified_no_write_terminal_repair_required";
const replayTone: Tone = replayApplyObserved
? "warn"
: replayClosed
? "ok"
: "warn";
const replayLabel = replayApplyObserved
? t("replay.applyObserved")
: replayClosed
? replayRepairRequired
? t("replay.closedRepairRequired")
: t("replay.closed")
: t("replay.pending");
const consumerRollups = consumerPayload?.rollups ?? {};
const consumerBlockers = consumerPayload?.active_blockers ?? [];
const telegramVerifierRollups = telegramVerifierPayload?.rollups ?? {};
@@ -1536,6 +1566,22 @@ export function AutonomousRuntimeReceiptPanel({
<span className={cn("inline-flex border px-2 py-0.5 text-xs font-semibold", toneClass(tone))}>
{stateLabel}
</span>
{stdinBoundaryReplay ? (
<span
data-testid="stdin-boundary-replay-status"
className={cn(
"inline-flex items-center gap-1 border px-2 py-0.5 text-xs font-semibold",
toneClass(replayTone)
)}
>
{replayApplyObserved ? (
<TriangleAlert className="h-3.5 w-3.5" aria-hidden="true" />
) : (
<ShieldCheck className="h-3.5 w-3.5" aria-hidden="true" />
)}
{replayLabel}
</span>
) : null}
<span className="font-mono text-xs text-[#77736a]">
{hasRuntimeReadback
? t("completion", {