Classify error-budget spend against a fixed operating budget.

error budget An error budget report compares current spend with the budget and tells the operator whether to continue, watch, or stop releases.

Error Budget Reliability Report

spent
ErrorBudgetReliabilityReport.cs
Replay: real traced execution (multi-file project)
using System;

class Program
{
    static string BudgetStatus(int spent, int budget)
    {
        if (spent > budget)
        {
            return "halt";
        }

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

        return "ok";
    }

    static void Main()
    {
        int budget = 5;
        int spent = 2;
        string status = BudgetStatus(spent, budget);

        Console.WriteLine("spent=" + spent);
        Console.WriteLine("budget=" + budget);
        Console.WriteLine("status=" + status);
    }
}
using System;

class Program
{
    static string BudgetStatus(int spent, int budget)
    {
        if (spent > budget)
        {
            return "halt";
        }

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

        return "ok";
    }

    static void Main()
    {
        int budget = 5;
        int spent = 4;
        string status = BudgetStatus(spent, budget);

        Console.WriteLine("spent=" + spent);
        Console.WriteLine("budget=" + budget);
        Console.WriteLine("status=" + status);
    }
}
using System;

class Program
{
    static string BudgetStatus(int spent, int budget)
    {
        if (spent > budget)
        {
            return "halt";
        }

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

        return "ok";
    }

    static void Main()
    {
        int budget = 5;
        int spent = 7;
        string status = BudgetStatus(spent, budget);

        Console.WriteLine("spent=" + spent);
        Console.WriteLine("budget=" + budget);
        Console.WriteLine("status=" + status);
    }
}
  1. budget ← 5, spent ← 2

    20static void Main()21{22    int budget→ 5 = 5;23    int spent→ 2 = 2; //@spent=4, 724    string status = BudgetStatus(spent2, budget5);
  2. static string BudgetStatus(int spent, int budget)

    4{5    static string BudgetStatus(int spent2, int budget5)6    {7        if (spent > budget)8        {9            return "halt";10        }1112        if (spent >= budget - 1)13        {14            return "watch";15        }1617        return "ok";18    }
  3. status ← ok

    23    int spent = 2; //@spent=4, 724    string status→ ok = BudgetStatus(spent2, budget5);2526    Console.WriteLine("spent=" + spent2);27    Console.WriteLine("budget=" + budget5);28    Console.WriteLine("status=" + statusok);29}
    outputspent=2
    budget=5
    status=ok
  1. budget ← 5, spent ← 4

    20static void Main()21{22    int budget→ 5 = 5;23    int spent→ 4 = 4;24    string status = BudgetStatus(spent4, budget5);
  2. static string BudgetStatus(int spent, int budget)

    4{5    static string BudgetStatus(int spent4, int budget5)6    {7        if (spent > budget)
  3. if (spent >= budget - 1)

    12if (spent4 >= budget5 - 1)13{14    return "watch";15}
  4. status ← watch

    23    int spent = 4;24    string status→ watch = BudgetStatus(spent4, budget5);2526    Console.WriteLine("spent=" + spent4);27    Console.WriteLine("budget=" + budget5);28    Console.WriteLine("status=" + statuswatch);29}
    outputspent=4
    budget=5
    status=watch
  1. budget ← 5, spent ← 7

    20static void Main()21{22    int budget→ 5 = 5;23    int spent→ 7 = 7;24    string status = BudgetStatus(spent7, budget5);
  2. static string BudgetStatus(int spent, int budget)

    4{5    static string BudgetStatus(int spent7, int budget5)6    {7        if (spent > budget)
  3. if (spent > budget)

    6{7    if (spent7 > budget5)8    {9        return "halt";10    }
  4. status ← halt

    23    int spent = 7;24    string status→ halt = BudgetStatus(spent7, budget5);2526    Console.WriteLine("spent=" + spent7);27    Console.WriteLine("budget=" + budget5);28    Console.WriteLine("status=" + statushalt);29}
    outputspent=7
    budget=5
    status=halt