Compare spent error budget with the available budget and report burn status.

budget spend Budget spend is kept as a scalar so each replay variant has a clear input.
burn status The burn status switches from ok to watch to halt as the budget is consumed.

Error Budget Reliability Report

spent
error_budget_reliability_report.cpp
Replay: real traced execution (multi-file project)
#include <iostream>
#include <string>

int main() {
    int spent = 2;
    int budget = 5;
    std::string status = "ok";

    if (spent >= budget - 1) {
        status = "watch";
    }

    if (spent > budget) {
        status = "halt";
    }

    std::cout << "spent=" << spent << std::endl;
    std::cout << "budget=" << budget << std::endl;
    std::cout << "status=" << status << std::endl;
    return 0;
}
#include <iostream>
#include <string>

int main() {
    int spent = 4;
    int budget = 5;
    std::string status = "ok";

    if (spent >= budget - 1) {
        status = "watch";
    }

    if (spent > budget) {
        status = "halt";
    }

    std::cout << "spent=" << spent << std::endl;
    std::cout << "budget=" << budget << std::endl;
    std::cout << "status=" << status << std::endl;
    return 0;
}
#include <iostream>
#include <string>

int main() {
    int spent = 7;
    int budget = 5;
    std::string status = "ok";

    if (spent >= budget - 1) {
        status = "watch";
    }

    if (spent > budget) {
        status = "halt";
    }

    std::cout << "spent=" << spent << std::endl;
    std::cout << "budget=" << budget << std::endl;
    std::cout << "status=" << status << std::endl;
    return 0;
}
  1. spent ← 2, budget ← 5, status ← ok

    4int main() {5    int spent→ 2 = 2; //@spent=4, 76    int budget→ 5 = 5;7    std::string status→ ok = "ok";89    if (spent >= budget - 1) {10        status = "watch";11    }1213    if (spent > budget) {14        status = "halt";15    }1617    std::cout << "spent=" << spent2 << std::endl;18    std::cout << "budget=" << budget5 << std::endl;19    std::cout << "status=" << statusok << std::endl;20    return 0;21}
    outputspent=2
    budget=5
    status=ok
  1. spent ← 4, budget ← 5, status ← ok

    4int main() {5    int spent→ 4 = 4;6    int budget→ 5 = 5;7    std::string status→ ok = "ok";
  2. status ← watch

    9if (spent4 >= budget5 - 1) {10    status→ watch = "watch";11}
  3. std::cout << "spent=" << spent << std::endl;

    17    std::cout << "spent=" << spent4 << std::endl;18    std::cout << "budget=" << budget5 << std::endl;19    std::cout << "status=" << statuswatch << std::endl;20    return 0;21}
    outputspent=4
    budget=5
    status=watch
  1. spent ← 7, budget ← 5, status ← ok

    4int main() {5    int spent→ 7 = 7;6    int budget→ 5 = 5;7    std::string status→ ok = "ok";
  2. status ← watch

    9if (spent7 >= budget5 - 1) {10    status→ watch = "watch";11}
  3. status ← halt

    13if (spent7 > budget5) {14    status→ halt = "halt";15}
  4. std::cout << "spent=" << spent << std::endl;

    17    std::cout << "spent=" << spent7 << std::endl;18    std::cout << "budget=" << budget5 << std::endl;19    std::cout << "status=" << statushalt << std::endl;20    return 0;21}
    outputspent=7
    budget=5
    status=halt