fix(cron): surface classified run failure causes

Surface classified cron failure causes without changing raw cron JSON error text.

- add additive CLI `cause` output for finished run entries with `errorReason`
- persist/backfill full `FailoverReason` values on cron run-log entries
- thread provider context through cron finalization so provider-specific failure causes stay accurate
- extend protocol/Swift models and regression coverage for CLI JSON, run-log parsing/search, alerts, and protocol conformance

Verification:
- `pnpm lint --threads=8`
- `pnpm protocol:check`
- `pnpm exec oxfmt --check src/cli/cron-cli/shared.ts src/cli/cron-cli/shared.cause-display.test.ts src/cron/run-log.ts src/cron/run-log.error-reason.test.ts src/cron/cron-protocol-conformance.test.ts src/cron/service.failure-alert.test.ts src/cron/service/timer.ts src/cron/service/ops.ts src/gateway/protocol/schema/cron.ts scripts/protocol-gen-swift.ts`
- `git diff --check`
- AWS Crabbox `cbx_8a6a65ab83b0` / `run_42b73a4a9750`: 4 files, 20 tests passed
- autoreview clean, no accepted/actionable findings
- GitHub CI/CodeQL/OpenGrep/Workflow Sanity green/skipped/neutral on `aa29b087b2587d0aed3d409de5e7a2c706c32cdf`

Co-authored-by: Yoshikazu Terashi <yterashi@peperon-works.jp>
This commit is contained in:
Yoshikazu Terashi
2026-05-27 17:03:17 +09:00
committed by GitHub
parent 57b1c0b3d9
commit 3104f36329
11 changed files with 420 additions and 22 deletions

View File

@@ -5508,6 +5508,7 @@ public struct CronRunLogEntry: Codable, Sendable {
public let action: String
public let status: AnyCodable?
public let error: String?
public let errorreason: AnyCodable?
public let summary: String?
public let diagnostics: [String: AnyCodable]?
public let delivered: Bool?
@@ -5531,6 +5532,7 @@ public struct CronRunLogEntry: Codable, Sendable {
action: String,
status: AnyCodable?,
error: String?,
errorreason: AnyCodable? = nil,
summary: String?,
diagnostics: [String: AnyCodable]?,
delivered: Bool?,
@@ -5553,6 +5555,7 @@ public struct CronRunLogEntry: Codable, Sendable {
self.action = action
self.status = status
self.error = error
self.errorreason = errorreason
self.summary = summary
self.diagnostics = diagnostics
self.delivered = delivered
@@ -5577,6 +5580,7 @@ public struct CronRunLogEntry: Codable, Sendable {
case action
case status
case error
case errorreason = "errorReason"
case summary
case diagnostics
case delivered