Contend for a single claim slot and turn the rejected count into a grant, queue, or reject remediation action.

claim contention The single claim slot and request count are scalars, so the claimed and rejected counts that drive the remediation action stay deterministic and free of atomic identity.

Atomic Claim Remediation Report

requests
AtomicClaimRemediationReport.kt
Replay: real traced execution (multi-file project)
fun main() {
    val requests = 1
    val slotCapacity = 1
    var claimed = 0
    var rejected = 0

    for (i in 1..requests) {
        if (claimed < slotCapacity) {
            claimed++
        } else {
            rejected++
        }
    }

    val action = if (rejected == 0) {
        "grant"
    } else if (rejected == 1) {
        "queue"
    } else {
        "reject"
    }

    println("requests=$requests claimed=$claimed rejected=$rejected $action")
}
fun main() {
    val requests = 2
    val slotCapacity = 1
    var claimed = 0
    var rejected = 0

    for (i in 1..requests) {
        if (claimed < slotCapacity) {
            claimed++
        } else {
            rejected++
        }
    }

    val action = if (rejected == 0) {
        "grant"
    } else if (rejected == 1) {
        "queue"
    } else {
        "reject"
    }

    println("requests=$requests claimed=$claimed rejected=$rejected $action")
}
fun main() {
    val requests = 3
    val slotCapacity = 1
    var claimed = 0
    var rejected = 0

    for (i in 1..requests) {
        if (claimed < slotCapacity) {
            claimed++
        } else {
            rejected++
        }
    }

    val action = if (rejected == 0) {
        "grant"
    } else if (rejected == 1) {
        "queue"
    } else {
        "reject"
    }

    println("requests=$requests claimed=$claimed rejected=$rejected $action")
}
  1. requests ← 1, slotCapacity ← 1, claimed ← 0, rejected ← 0

    1fun main() {2    val requests→ 1 = 1 //@requests=2, 33    val slotCapacity→ 1 = 14    var claimed→ 0 = 05    var rejected→ 0 = 0
  2. for (i in 1..requests)

    7for (i1 in 1..requests1) {8    if (claimed < slotCapacity) {
  3. if (claimed < slotCapacity)

    7for (i in 1..requests) {8    if (claimed0 < slotCapacity1) {9        claimed0++10    } else {11        rejected++
  4. action ← grant

    15    val action→ grant = if (rejected0 == 0) {16        "grant"17    } else if (rejected0 == 1) {18        "queue"19    } else {20        "reject"21    }2223    println("requests=$requests1 claimed=$claimed1 rejected=$rejected0 $actiongrant")24}
    outputrequests=1 claimed=1 rejected=0 grant
  1. requests ← 2, slotCapacity ← 1, claimed ← 0, rejected ← 0

    1fun main() {2    val requests→ 2 = 23    val slotCapacity→ 1 = 14    var claimed→ 0 = 05    var rejected→ 0 = 0
  2. for (i in 1..requests)

    pass 1 of 2
    7for (i1 in 1..requests2) {8    if (claimed < slotCapacity) {
  3. if (claimed < slotCapacity)

    7for (i in 1..requests) {8    if (claimed0 < slotCapacity1) {9        claimed0++10    } else {11        rejected++
  4. for (i in 1..requests)

    pass 2 of 2
    7for (i2 in 1..requests2) {8    if (claimed < slotCapacity) {
  5. else

    9        claimed++10    } else {11        rejected0++12    }13}
  6. action ← queue

    15    val action→ queue = if (rejected1 == 0) {16        "grant"17    } else if (rejected1 == 1) {18        "queue"19    } else {20        "reject"21    }2223    println("requests=$requests2 claimed=$claimed1 rejected=$rejected1 $actionqueue")24}
    outputrequests=2 claimed=1 rejected=1 queue
  1. requests ← 3, slotCapacity ← 1, claimed ← 0, rejected ← 0

    1fun main() {2    val requests→ 3 = 33    val slotCapacity→ 1 = 14    var claimed→ 0 = 05    var rejected→ 0 = 0
  2. for (i in 1..requests)

    pass 1 of 3
    7for (i1 in 1..requests3) {8    if (claimed < slotCapacity) {
    All 3 passes — pass 1 is the card above
    passiclaimedslotCapacityrejected
    1101
    220
    331
  3. if (claimed < slotCapacity)

    7for (i in 1..requests) {8    if (claimed0 < slotCapacity1) {9        claimed0++10    } else {11        rejected++
  4. else

    pass 1 of 2
    9        claimed++10    } else {11        rejected0++12    }13}
  5. else

    pass 2 of 2
    9        claimed++10    } else {11        rejected1++12    }13}
  6. action ← reject

    15    val action→ reject = if (rejected2 == 0) {16        "grant"17    } else if (rejected2 == 1) {18        "queue"19    } else {20        "reject"21    }2223    println("requests=$requests3 claimed=$claimed1 rejected=$rejected2 $actionreject")24}
    outputrequests=3 claimed=1 rejected=2 reject