Compare arrivals at a latch against the needed count and turn the remaining count into a release, wait, or escalate remediation action.

Countdown Latch Remediation Report

CountdownLatchRemediationReport.kt
fun main() {
    val arrivals = 
    val needed = 3
    var counted = arrivals
    if (counted > needed) {
        counted = needed
    }
    val remaining = needed - counted

    val action = if (remaining == 0) {
        "release"
    } else if (remaining <= 1) {
        "wait"
    } else {
        "escalate"
    }

    println("needed=$needed counted=$counted remaining=$remaining $action")
}
fun main() {
    val arrivals = 
    val needed = 3
    var counted = arrivals
    if (counted > needed) {
        counted = needed
    }
    val remaining = needed - counted

    val action = if (remaining == 0) {
        "release"
    } else if (remaining <= 1) {
        "wait"
    } else {
        "escalate"
    }

    println("needed=$needed counted=$counted remaining=$remaining $action")
}
fun main() {
    val arrivals = 
    val needed = 3
    var counted = arrivals
    if (counted > needed) {
        counted = needed
    }
    val remaining = needed - counted

    val action = if (remaining == 0) {
        "release"
    } else if (remaining <= 1) {
        "wait"
    } else {
        "escalate"
    }

    println("needed=$needed counted=$counted remaining=$remaining $action")
}
latch remaining The needed count and arrivals are scalars, so the remaining work that drives the remediation action stays deterministic without awaiting a live latch.