Turn a recorded task failure count into an observe, retry, or failover remediation action.

recorded failures The task outcome is reduced to a scalar failure count, so the remediation action depends only on that count and never on task scheduling or object identity.

Task Value Remediation Report

failures
task_value_remediation_report.swift
Replay: real traced execution (multi-file project)
let failures = 0
let retryLimit = 2
let attempts = failures + 1

var action = "observe"
if failures >= 1 {
    action = "retry"
}
if failures > retryLimit {
    action = "failover"
}

let line = "failures=\(failures) attempts=\(attempts) \(action)"
print(line)
let failures = 1
let retryLimit = 2
let attempts = failures + 1

var action = "observe"
if failures >= 1 {
    action = "retry"
}
if failures > retryLimit {
    action = "failover"
}

let line = "failures=\(failures) attempts=\(attempts) \(action)"
print(line)
let failures = 3
let retryLimit = 2
let attempts = failures + 1

var action = "observe"
if failures >= 1 {
    action = "retry"
}
if failures > retryLimit {
    action = "failover"
}

let line = "failures=\(failures) attempts=\(attempts) \(action)"
print(line)
  1. failures ← 0, retryLimit ← 2, attempts ← 1, action ← observe, line ← failures=0 attempts=1 observe

    1let failures→ 0 = 0  //@failures=1, 32let retryLimit→ 2 = 23let attempts→ 1 = failures0 + 145var action→ observe = "observe"6if failures >= 1 {7    action = "retry"8}9if failures > retryLimit {10    action = "failover"11}1213let line→ failures=0 attempts=1 observe = "failures=\(failures0) attempts=\(attempts1) \(actionobserve)"14print(linefailures=0 attempts=1 observe)
    outputfailures=0 attempts=1 observe
  1. failures ← 1, retryLimit ← 2, attempts ← 2, action ← observe

    1let failures→ 1 = 12let retryLimit→ 2 = 23let attempts→ 2 = failures1 + 145var action→ observe = "observe"6if failures >= 1 {
  2. if failures >= 1

    5var action = "observe"6if failures1 >= 1 {7    action = "retry"8}
  3. line ← failures=1 attempts=2 retry

    13let line→ failures=1 attempts=2 retry = "failures=\(failures1) attempts=\(attempts2) \(actionretry)"14print(linefailures=1 attempts=2 retry)
    outputfailures=1 attempts=2 retry
  1. failures ← 3, retryLimit ← 2, attempts ← 4, action ← observe

    1let failures→ 3 = 32let retryLimit→ 2 = 23let attempts→ 4 = failures3 + 145var action→ observe = "observe"6if failures >= 1 {
  2. if failures >= 1

    5var action = "observe"6if failures3 >= 1 {7    action = "retry"8}
  3. if failures > retryLimit

    8}9if failures3 > retryLimit2 {10    action = "failover"11}
  4. line ← failures=3 attempts=4 failover

    13let line→ failures=3 attempts=4 failover = "failures=\(failures3) attempts=\(attempts4) \(actionfailover)"14print(linefailures=3 attempts=4 failover)
    outputfailures=3 attempts=4 failover