fix(runs): prioritize failed terminal receipts
Some checks failed
CD Pipeline / workflow-shape (push) Has been cancelled
CD Pipeline / cancel-stale-cd (push) Has been cancelled
CD Pipeline / tests (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
CD Pipeline / post-deploy-checks (push) Has been cancelled

This commit is contained in:
ogt
2026-07-15 09:45:52 +08:00
parent 26c9ec829d
commit 3bf84fdc58
3 changed files with 357 additions and 0 deletions

View File

@@ -18,6 +18,22 @@ export interface AwoooPStatusChain {
verification?: string | null;
needs_human?: boolean | null;
next_step?: string | null;
run_terminal_precedence?: {
active?: boolean | null;
reason?: string | null;
run_id?: string | null;
run_state?: string | null;
error_code?: string | null;
outcome_timeout_no_write_terminal?: boolean | null;
timeout_at?: string | null;
terminal_at?: string | null;
terminalizer_runtime_write_performed?: boolean | null;
outcome_runtime_write_status?: string | null;
transport_replayed?: boolean | null;
incident_resolution_authorized?: boolean | null;
runtime_closure_verified?: boolean | null;
safe_next_action?: string | null;
} | null;
operator_outcome?: {
schema_version?: string;
state?: string | null;
@@ -466,6 +482,13 @@ export interface AwoooPStatusChain {
function toneClass(chain?: AwoooPStatusChain | null) {
if (!chain) return "border-[#d8d3c7] bg-[#faf9f3] text-[#5f5b52]";
if (
chain.run_terminal_precedence?.active === true
|| chain.stage_status === "failed"
|| String(chain.repair_state ?? "").startsWith("failed_")
) {
return "border-[#e2a29b] bg-[#fff0ef] text-[#9f2f25]";
}
if (chain.repair_state === "auto_repaired_verified") {
return "border-[#9bc7a4] bg-[#f0faf2] text-[#17602a]";
}
@@ -477,6 +500,11 @@ function toneClass(chain?: AwoooPStatusChain | null) {
function chainIcon(chain?: AwoooPStatusChain | null) {
if (!chain) return Route;
if (
chain.run_terminal_precedence?.active === true
|| chain.stage_status === "failed"
|| String(chain.repair_state ?? "").startsWith("failed_")
) return TriangleAlert;
if (chain.repair_state === "auto_repaired_verified") return CheckCircle2;
if (chain.needs_human || chain.repair_state === "blocked_manual_required") return ShieldCheck;
return Activity;
@@ -557,6 +585,7 @@ export function AwoooPStatusChainPanel({
approve_post_apply_verifier_plan: t("nextActions.reviewPostApplyVerifier"),
assign_km_writeback_owner_after_verified_execution: t("nextActions.prepareKmPlaybookWriteback"),
assign_playbook_trust_owner_after_verified_execution: t("nextActions.prepareKmPlaybookWriteback"),
await_new_source_recurrence_after_agent99_relay_recovery: t("nextActions.collectEvidenceOrWait"),
};
return labels[key] ?? valueOrEmpty(value, emptyLabel);
};