Classify a rollout guard as ship, limit, or hold from deterministic readiness inputs.

rollout guard Rollout readiness can be modeled as scalar checks before any live deployment system sees it.

Rollout Guard Reliability Report

pendingMigrations
RolloutGuard.kt
Replay: real traced execution (multi-file project)
fun main() {
    val pendingMigrations = 1
    val errorBudget = 8
    var rolloutStatus = "hold"

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

    println("pending=$pendingMigrations budget=$errorBudget status=$rolloutStatus")
}
fun main() {
    val pendingMigrations = 0
    val errorBudget = 8
    var rolloutStatus = "hold"

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

    println("pending=$pendingMigrations budget=$errorBudget status=$rolloutStatus")
}
fun main() {
    val pendingMigrations = 3
    val errorBudget = 8
    var rolloutStatus = "hold"

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

    println("pending=$pendingMigrations budget=$errorBudget status=$rolloutStatus")
}
  1. pendingMigrations ← 1, errorBudget ← 8, rolloutStatus ← hold

    1fun main() {2    val pendingMigrations→ 1 = 1 //@pendingMigrations=0, 33    val errorBudget→ 8 = 84    var rolloutStatus→ hold = "hold"
  2. rolloutStatus ← limit

    7    rolloutStatus = "ship"8} else if (pendingMigrations1 <= 1 && errorBudget8 >= 6) {9    rolloutStatus→ limit = "limit"10}
  3. println("pending=$pendingMigrations budget=$errorBudget status=$rollou…

    12    println("pending=$pendingMigrations1 budget=$errorBudget8 status=$rolloutStatuslimit")13}
    outputpending=1 budget=8 status=limit
  1. pendingMigrations ← 0, errorBudget ← 8, rolloutStatus ← hold

    1fun main() {2    val pendingMigrations→ 0 = 03    val errorBudget→ 8 = 84    var rolloutStatus→ hold = "hold"
  2. rolloutStatus ← ship

    6if (pendingMigrations0 == 0 && errorBudget8 >= 8) {7    rolloutStatus→ ship = "ship"8} else if (pendingMigrations <= 1 && errorBudget >= 6) {
  3. println("pending=$pendingMigrations budget=$errorBudget status=$rollou…

    12    println("pending=$pendingMigrations0 budget=$errorBudget8 status=$rolloutStatusship")13}
    outputpending=0 budget=8 status=ship
  1. pendingMigrations ← 3, errorBudget ← 8, rolloutStatus ← hold

    1fun main() {2    val pendingMigrations→ 3 = 33    val errorBudget→ 8 = 84    var rolloutStatus→ hold = "hold"56    if (pendingMigrations == 0 && errorBudget >= 8) {7        rolloutStatus = "ship"8    } else if (pendingMigrations <= 1 && errorBudget >= 6) {9        rolloutStatus = "limit"10    }1112    println("pending=$pendingMigrations3 budget=$errorBudget8 status=$rolloutStatushold")13}
    outputpending=3 budget=8 status=hold