Use pending checks and error budget to choose a rollout guard status.

guard status A rollout guard turns operational evidence into a compact ship, limit, or hold label.
pending checks Pending checks are kept visible so the report explains why a rollout is limited.

Rollout Guard Reliability Report

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

int main() {
    int pendingChecks = 1;
    int errorBudget = 8;
    std::string status = "ship";

    if (errorBudget < 5) {
        status = "limit";
    }

    if (pendingChecks > 0) {
        status = "limit";
    }

    if (pendingChecks >= 3) {
        status = "hold";
    }

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

int main() {
    int pendingChecks = 0;
    int errorBudget = 8;
    std::string status = "ship";

    if (errorBudget < 5) {
        status = "limit";
    }

    if (pendingChecks > 0) {
        status = "limit";
    }

    if (pendingChecks >= 3) {
        status = "hold";
    }

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

int main() {
    int pendingChecks = 3;
    int errorBudget = 8;
    std::string status = "ship";

    if (errorBudget < 5) {
        status = "limit";
    }

    if (pendingChecks > 0) {
        status = "limit";
    }

    if (pendingChecks >= 3) {
        status = "hold";
    }

    std::cout << "pending=" << pendingChecks << std::endl;
    std::cout << "budget=" << errorBudget << std::endl;
    std::cout << "status=" << status << std::endl;
    return 0;
}
  1. pendingChecks ← 1, errorBudget ← 8, status ← ship

    4int main() {5    int pendingChecks→ 1 = 1; //@pendingChecks=0, 36    int errorBudget→ 8 = 8;7    std::string status→ ship = "ship";
  2. status ← limit

    13if (pendingChecks1 > 0) {14    status→ limit = "limit";15}
  3. std::cout << "pending=" << pendingChecks << std::endl;

    21    std::cout << "pending=" << pendingChecks1 << std::endl;22    std::cout << "budget=" << errorBudget8 << std::endl;23    std::cout << "status=" << statuslimit << std::endl;24    return 0;25}
    outputpending=1
    budget=8
    status=limit
  1. pendingChecks ← 0, errorBudget ← 8, status ← ship

    4int main() {5    int pendingChecks→ 0 = 0;6    int errorBudget→ 8 = 8;7    std::string status→ ship = "ship";89    if (errorBudget < 5) {10        status = "limit";11    }1213    if (pendingChecks > 0) {14        status = "limit";15    }1617    if (pendingChecks >= 3) {18        status = "hold";19    }2021    std::cout << "pending=" << pendingChecks0 << std::endl;22    std::cout << "budget=" << errorBudget8 << std::endl;23    std::cout << "status=" << statusship << std::endl;24    return 0;25}
    outputpending=0
    budget=8
    status=ship
  1. pendingChecks ← 3, errorBudget ← 8, status ← ship

    4int main() {5    int pendingChecks→ 3 = 3;6    int errorBudget→ 8 = 8;7    std::string status→ ship = "ship";
  2. status ← limit

    13if (pendingChecks3 > 0) {14    status→ limit = "limit";15}
  3. status ← hold

    17if (pendingChecks3 >= 3) {18    status→ hold = "hold";19}
  4. std::cout << "pending=" << pendingChecks << std::endl;

    21    std::cout << "pending=" << pendingChecks3 << std::endl;22    std::cout << "budget=" << errorBudget8 << std::endl;23    std::cout << "status=" << statushold << std::endl;24    return 0;25}
    outputpending=3
    budget=8
    status=hold