fix: bound sentinel report evidence output

This commit is contained in:
Codex
2026-06-30 08:28:04 +00:00
parent 5e58a1d7e3
commit 88fa7db59f
7 changed files with 226 additions and 3 deletions
@@ -1150,6 +1150,7 @@ function enrichFindingRowWithStoredDetail(config: WebProbeSentinelServiceConfig,
rootCauseConfidence: stringOrNull(detail?.rootCauseConfidence),
nextAction: stringOrNull(detail?.nextAction),
evidenceSummary: stringOrNull(detail?.evidenceSummary),
rootCauseSignals: record(detail?.rootCauseSignals),
timingSourceOfTruth: stringOrNull(detail?.timingSourceOfTruth),
timingStatus: stringOrNull(detail?.timingStatus),
timingAlert: detail?.timingAlert === true,
@@ -1190,6 +1191,7 @@ function compactStoredFinding(value: unknown): Record<string, unknown> {
rootCauseConfidence: stringOrNull(item.rootCauseConfidence),
nextAction: stringOrNull(item.nextAction),
evidenceSummary: stringOrNull(item.evidenceSummary) ?? compactFindingEvidenceSummary(item.evidence),
rootCauseSignals: compactFindingRootCauseSignals(item.rootCauseSignals),
timingSourceOfTruth: stringOrNull(item.timingSourceOfTruth) ?? stringOrNull(item.expectedElapsedSource) ?? stringOrNull(item.evidenceKind),
timingStatus: stringOrNull(item.timingStatus),
timingAlert: item.timingAlert === true,
@@ -1197,6 +1199,28 @@ function compactStoredFinding(value: unknown): Record<string, unknown> {
};
}
function compactFindingRootCauseSignals(value: unknown): Record<string, unknown> | null {
const item = record(value);
const keys = [
"sessionListReadCount",
"traceEventsReadCount",
"webPerformanceBeaconFailureCount",
"eventSourceFailureCount",
"requestFailedCount",
"httpErrorCount",
"consoleAlertCount",
"requestfailedTop",
"httpStatusTop",
];
const compact: Record<string, unknown> = {};
for (const key of keys) {
const raw = item[key];
if (raw === null || raw === undefined) continue;
compact[key] = Array.isArray(raw) ? raw.slice(0, 8).map(record) : raw;
}
return Object.keys(compact).length === 0 ? null : { ...compact, valuesRedacted: true };
}
function compactFindingEvidenceSummary(value: unknown): string | null {
if (value === null || value === undefined) return null;
if (typeof value === "string") return value.slice(0, 240);