Turn a failed-check count into a concrete remediation action without reading live service state.

remediation action A remediation report converts the observed failure count into a single monitor, rollback, or escalate action.
rollback limit The rollback limit stays a scalar so the threshold that drives escalation is visible in the replay.

Rollback Action Remediation Report

failedChecks
rollback_action_remediation_report.c
Replay: real traced execution (multi-file project)
#include <stdio.h>

int main(void) {
    int failedChecks = 2;
    int rollbackLimit = 1;
    const char *action = "monitor";

    if (failedChecks > 0) {
        action = "rollback";
    }

    if (failedChecks > rollbackLimit + 2) {
        action = "escalate";
    }

    printf("failed=%d\n", failedChecks);
    printf("limit=%d\n", rollbackLimit);
    printf("action=%s\n", action);
    return 0;
}
#include <stdio.h>

int main(void) {
    int failedChecks = 0;
    int rollbackLimit = 1;
    const char *action = "monitor";

    if (failedChecks > 0) {
        action = "rollback";
    }

    if (failedChecks > rollbackLimit + 2) {
        action = "escalate";
    }

    printf("failed=%d\n", failedChecks);
    printf("limit=%d\n", rollbackLimit);
    printf("action=%s\n", action);
    return 0;
}
#include <stdio.h>

int main(void) {
    int failedChecks = 4;
    int rollbackLimit = 1;
    const char *action = "monitor";

    if (failedChecks > 0) {
        action = "rollback";
    }

    if (failedChecks > rollbackLimit + 2) {
        action = "escalate";
    }

    printf("failed=%d\n", failedChecks);
    printf("limit=%d\n", rollbackLimit);
    printf("action=%s\n", action);
    return 0;
}
  1. failedChecks ← 2, rollbackLimit ← 1, action ← monitor

    3int main(void) {4    int failedChecks→ 2 = 2; //@failedChecks=0, 45    int rollbackLimit→ 1 = 1;6    const char *action→ monitor = "monitor";
  2. action ← rollback

    8if (failedChecks2 > 0) {9    action→ rollback = "rollback";10}
  3. printf("failed=%d ", failedChecks);

    16    printf("failed=%d\n", failedChecks2);17    printf("limit=%d\n", rollbackLimit1);18    printf("action=%s\n", actionrollback);19    return 0;20}
    outputfailed=2
    limit=1
    action=rollback
  1. failedChecks ← 0, rollbackLimit ← 1, action ← monitor

    3int main(void) {4    int failedChecks→ 0 = 0;5    int rollbackLimit→ 1 = 1;6    const char *action→ monitor = "monitor";78    if (failedChecks > 0) {9        action = "rollback";10    }1112    if (failedChecks > rollbackLimit + 2) {13        action = "escalate";14    }1516    printf("failed=%d\n", failedChecks0);17    printf("limit=%d\n", rollbackLimit1);18    printf("action=%s\n", actionmonitor);19    return 0;20}
    outputfailed=0
    limit=1
    action=monitor
  1. failedChecks ← 4, rollbackLimit ← 1, action ← monitor

    3int main(void) {4    int failedChecks→ 4 = 4;5    int rollbackLimit→ 1 = 1;6    const char *action→ monitor = "monitor";
  2. action ← rollback

    8if (failedChecks4 > 0) {9    action→ rollback = "rollback";10}
  3. action ← escalate

    12if (failedChecks4 > rollbackLimit1 + 2) {13    action→ escalate = "escalate";14}
  4. printf("failed=%d ", failedChecks);

    16    printf("failed=%d\n", failedChecks4);17    printf("limit=%d\n", rollbackLimit1);18    printf("action=%s\n", actionescalate);19    return 0;20}
    outputfailed=4
    limit=1
    action=escalate