A Bash reliability report can gate a service window with fixed failed-check and duration values.

Program

Play the script to choose the failed check count and inspect the service window status.

failed_checks
service_window_reliability_report.sh
Replay: real traced execution (multi-file project)
#!/usr/bin/env bash

failed_checks=1
allowed_failures=1
open_minutes=45
if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then
    status="ready"
else
    status="blocked"
fi
echo "failed=$failed_checks open=$open_minutes status=$status"
#!/usr/bin/env bash

failed_checks=0
allowed_failures=1
open_minutes=45
if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then
    status="ready"
else
    status="blocked"
fi
echo "failed=$failed_checks open=$open_minutes status=$status"
#!/usr/bin/env bash

failed_checks=3
allowed_failures=1
open_minutes=45
if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then
    status="ready"
else
    status="blocked"
fi
echo "failed=$failed_checks open=$open_minutes status=$status"
  1. failed_checks ← 1

    3failed_checks=14allowed_failures=1
    values this step1failed_checks
  2. allowed_failures ← 1

    3failed_checks=14allowed_failures=15open_minutes=45
    values this step1allowed_failures
  3. open_minutes ← 45

    4allowed_failures=15open_minutes=456if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then
    values this step45open_minutes
  4. if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then

    5open_minutes=456if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then7    status="ready"
    values this step1failed_checks1allowed_failures45open_minutes
  5. status ← ready

    6if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then7    status="ready"8else
    values this stepreadystatus
  6. echo "failed=$failed_checks open=$open_minutes status=$status"

    10fi11echo "failed=$failed_checks open=$open_minutes status=$status"
    outputfailed=1 open=45 status=ready
    values this step1failed_checks45open_minutesreadystatus
  1. failed_checks ← 0

    3failed_checks=04allowed_failures=1
    values this step0failed_checks
  2. allowed_failures ← 1

    3failed_checks=04allowed_failures=15open_minutes=45
    values this step1allowed_failures
  3. open_minutes ← 45

    4allowed_failures=15open_minutes=456if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then
    values this step45open_minutes
  4. if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then

    5open_minutes=456if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then7    status="ready"
    values this step0failed_checks1allowed_failures45open_minutes
  5. status ← ready

    6if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then7    status="ready"8else
    values this stepreadystatus
  6. echo "failed=$failed_checks open=$open_minutes status=$status"

    10fi11echo "failed=$failed_checks open=$open_minutes status=$status"
    outputfailed=0 open=45 status=ready
    values this step0failed_checks45open_minutesreadystatus
  1. failed_checks ← 3

    3failed_checks=34allowed_failures=1
    values this step3failed_checks
  2. allowed_failures ← 1

    3failed_checks=34allowed_failures=15open_minutes=45
    values this step1allowed_failures
  3. open_minutes ← 45

    4allowed_failures=15open_minutes=456if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then
    values this step45open_minutes
  4. if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then

    5open_minutes=456if (( failed_checks <= allowed_failures && open_minutes >= 30 )); then7    status="ready"
    values this step3failed_checks1allowed_failures45open_minutes
  5. status ← blocked

    8else9    status="blocked"10fi
    values this stepblockedstatus
  6. echo "failed=$failed_checks open=$open_minutes status=$status"

    10fi11echo "failed=$failed_checks open=$open_minutes status=$status"
    outputfailed=3 open=45 status=blocked
    values this step3failed_checks45open_minutesblockedstatus
failure budget `allowed_failures` is the fixed policy for the service window.
duration gate `open_minutes` is a deterministic scalar, not a live clock read.
report line The final echo keeps the inputs and readiness label together.