fix: preserve hwlab refresh render evidence

This commit is contained in:
Codex
2026-07-04 03:42:47 +00:00
parent 779274b26f
commit e8bf83821a
7 changed files with 391 additions and 7 deletions
+46
View File
@@ -37,6 +37,7 @@ function renderJobHuman(payload: Record<string, unknown>): string {
const pods = arrayRecords(result?.pods);
const logs = arrayRecords(result?.logs);
const errors = arrayRecords(result?.errors);
const summaryEvidence = refreshEvidenceRows(asOptionalRecord(result?.summary));
const command = asOptionalRecord(payload.command);
const identity = asOptionalRecord(command?.identity);
return [
@@ -59,6 +60,7 @@ function renderJobHuman(payload: Record<string, unknown>): string {
pods.length === 0 ? "" : `\nPODS\n${table(["POD", "PHASE", "READY", "START", "CONTAINERS", "REASON"], pods.map(jobPodRow))}`,
logs.length === 0 ? "" : `\nLOG TAILS\n${table(["POD", "CONTAINER", "STATUS", "REASON", "LINES", "BYTES", "TIMING", "MESSAGE"], logs.map(logRow))}`,
errors.length === 0 ? "" : `\nERRORS\n${table(["POD", "CONTAINER", "REASON", "MESSAGE"], errors.map((item) => [item.pod, item.container, item.degradedReason, item.message]))}`,
summaryEvidence.length === 0 ? "" : `\nEVIDENCE\n${table(["TYPE", "STATUS", "DETAIL", "OBJECT"], summaryEvidence)}`,
command === null ? "" : `\nTARGET COMMAND\n${table(["ROUTE", "SCRIPT", "EXIT", "PARSE_ERROR"], [[identity?.route ?? "-", identity?.script ?? "-", command.exitCode ?? "-", command.parseError ?? "-"]])}`,
command?.stdoutTail ? `\nSTDOUT_TAIL\n${command.stdoutTail}` : "",
command?.stderrTail ? `\nSTDERR_TAIL\n${command.stderrTail}` : "",
@@ -287,11 +289,37 @@ function nativeGateRows(native: Record<string, unknown> | null): unknown[][] {
`${shortSha(stringOrNull(refresh.sourceCommit))}/${stringOrNull(refresh.pipeline) ?? "-"}`,
stringOrNull(refresh.jobName) ?? "-",
]);
rows.push(...refreshEvidenceRows(refresh));
}
for (const error of arrayTextItems(native.errors).slice(0, 5)) rows.push(["error", "present", error, "-"]);
return rows;
}
function refreshEvidenceRows(value: Record<string, unknown> | null): unknown[][] {
if (value === null) return [];
const rows: unknown[][] = [];
const render = asOptionalRecord(value.render);
const renderRuntimeReady = asOptionalRecord(render?.runtimeReadyTask);
if (render !== null) {
rows.push([
"control-plane-render",
renderRuntimeReady?.present === true ? "runtime-ready-present" : renderRuntimeReady?.present === false ? "runtime-ready-absent" : "-",
whenSummary(arrayRecords(renderRuntimeReady?.when)[0]),
stringOrNull(render.pipelineName) ?? "-",
]);
}
const apply = asOptionalRecord(value.apply);
if (apply !== null) {
rows.push([
"control-plane-apply",
stringOrNull(apply.resourceVersion) ?? stringOrNull(apply.degradedReason) ?? "-",
applyMetadataSummary(apply),
stringOrNull(apply.pipelineName) ?? "-",
]);
}
return rows;
}
function taskRunDetail(item: Record<string, unknown> | undefined): string {
if (item === undefined) return "-";
const duration = numberOrNull(item.durationSeconds);
@@ -308,6 +336,24 @@ function argoDetail(argo: Record<string, unknown>): string {
?? shortSha(stringOrNull(argo.revision));
}
function whenSummary(value: Record<string, unknown> | undefined): string {
if (value === undefined) return "-";
const values = arrayTextItems(value.values).join(",");
return `${stringOrNull(value.input) ?? "-"} ${stringOrNull(value.operator) ?? "-"} ${values || "-"}`;
}
function applyMetadataSummary(value: Record<string, unknown>): string {
const annotations = asOptionalRecord(value.annotations);
const labels = asOptionalRecord(value.labels);
return `ann:${firstEntry(annotations)} label:${firstEntry(labels)}`;
}
function firstEntry(value: Record<string, unknown> | null): string {
if (value === null) return "-";
const [key, item] = Object.entries(value)[0] ?? [];
return key === undefined ? "-" : `${key}=${stringOrNull(item) ?? "-"}`;
}
function asOptionalRecord(value: unknown): Record<string, unknown> | null {
return typeof value === "object" && value !== null && !Array.isArray(value) ? value as Record<string, unknown> : null;
}