Classify whether a release should ship, stay limited, or hold.

rollout guard A rollout guard combines pending work and budget headroom into a deterministic release label.

Rollout Guard Reliability Report

pendingMigrations
rollout_guard.php
Replay: real traced execution (multi-file project)
<?php
$pendingMigrations = 1;
$errorBudget = 8;
$rolloutStatus = "hold";

if ($pendingMigrations === 0 && $errorBudget >= 8) {
    $rolloutStatus = "ship";
} elseif ($pendingMigrations <= 1 && $errorBudget >= 6) {
    $rolloutStatus = "limit";
}

echo "pending=" . $pendingMigrations . " budget=" . $errorBudget . " status=" . $rolloutStatus . "\n";
<?php
$pendingMigrations = 0;
$errorBudget = 8;
$rolloutStatus = "hold";

if ($pendingMigrations === 0 && $errorBudget >= 8) {
    $rolloutStatus = "ship";
} elseif ($pendingMigrations <= 1 && $errorBudget >= 6) {
    $rolloutStatus = "limit";
}

echo "pending=" . $pendingMigrations . " budget=" . $errorBudget . " status=" . $rolloutStatus . "\n";
<?php
$pendingMigrations = 3;
$errorBudget = 8;
$rolloutStatus = "hold";

if ($pendingMigrations === 0 && $errorBudget >= 8) {
    $rolloutStatus = "ship";
} elseif ($pendingMigrations <= 1 && $errorBudget >= 6) {
    $rolloutStatus = "limit";
}

echo "pending=" . $pendingMigrations . " budget=" . $errorBudget . " status=" . $rolloutStatus . "\n";
  1. $pendingMigrations ← 1, $errorBudget ← 8, $rolloutStatus ← hold

    1<?php2$pendingMigrations→ 1 = 1; //@pendingMigrations=0, 33$errorBudget→ 8 = 8;4$rolloutStatus→ hold = "hold";56if ($pendingMigrations === 0 && $errorBudget >= 8) {7    $rolloutStatus = "ship";8} elseif ($pendingMigrations <= 1 && $errorBudget >= 6) {9    $rolloutStatus→ limit = "limit";10}1112echo "pending=" . $pendingMigrations1 . " budget=" . $errorBudget8 . " status=" . $rolloutStatuslimit . "\n";
    outputpending=1 budget=8 status=limit
  1. $pendingMigrations ← 0, $errorBudget ← 8, $rolloutStatus ← hold

    1<?php2$pendingMigrations→ 0 = 0;3$errorBudget→ 8 = 8;4$rolloutStatus→ hold = "hold";
  2. $rolloutStatus ← ship

    6if ($pendingMigrations0 === 0 && $errorBudget8 >= 8) {7    $rolloutStatus→ ship = "ship";8} elseif ($pendingMigrations <= 1 && $errorBudget >= 6) {
  3. echo "pending=" . $pendingMigrations . " budget=" . $errorBudget . " s…

    12echo "pending=" . $pendingMigrations0 . " budget=" . $errorBudget8 . " status=" . $rolloutStatusship . "\n";
    outputpending=0 budget=8 status=ship
  1. $pendingMigrations ← 3, $errorBudget ← 8, $rolloutStatus ← hold

    1<?php2$pendingMigrations→ 3 = 3;3$errorBudget→ 8 = 8;4$rolloutStatus→ hold = "hold";56if ($pendingMigrations === 0 && $errorBudget >= 8) {7    $rolloutStatus = "ship";8} elseif ($pendingMigrations <= 1 && $errorBudget >= 6) {9    $rolloutStatus = "limit";10}1112echo "pending=" . $pendingMigrations3 . " budget=" . $errorBudget8 . " status=" . $rolloutStatushold . "\n";
    outputpending=3 budget=8 status=hold