Operational Remediation Reports
Semaphore Capacity Remediation Report
Grant requests against a fixed permit pool and turn the remaining capacity into an admit, hold, or shed remediation action.
remaining capacity
A fixed permit pool is modeled with a scalar counter so the remaining capacity stays deterministic and free of object identity, and it is the only driver of the remediation action.
Semaphore Capacity Remediation Report
semaphore_capacity_remediation_report.py
Replay: real traced execution (multi-file project)
capacity = 3
requests = 1
granted = 0
for _ in range(requests):
if granted < capacity:
granted += 1
available = capacity - granted
action = "admit" if available >= 2 else "hold" if available == 1 else "shed"
print("requests=" + str(requests) + " granted=" + str(granted) + " available=" + str(available) + " action=" + action)
capacity = 3
requests = 2
granted = 0
for _ in range(requests):
if granted < capacity:
granted += 1
available = capacity - granted
action = "admit" if available >= 2 else "hold" if available == 1 else "shed"
print("requests=" + str(requests) + " granted=" + str(granted) + " available=" + str(available) + " action=" + action)
capacity = 3
requests = 4
granted = 0
for _ in range(requests):
if granted < capacity:
granted += 1
available = capacity - granted
action = "admit" if available >= 2 else "hold" if available == 1 else "shed"
print("requests=" + str(requests) + " granted=" + str(granted) + " available=" + str(available) + " action=" + action)
capacity ← 3, requests ← 1, granted ← 0
1capacity→ 3 = 32requests→ 1 = 1 #@requests=2, 43granted→ 0 = 0for _ in range(requests):
5for _0 in range(requests1):6 if granted < capacity:7 granted += 1granted ← 1
5for _ in range(requests):6 if granted0 < capacity3:7 granted→ 1 += 1available ← 2, action ← admit
9available→ 2 = capacity3 - granted110action→ admit = "admit" if available2 >= 2 else "hold" if available == 1 else "shed"1112print("requests=" + str(requests1) + " granted=" + str(granted1) + " available=" + str(available2) + " action=" + actionadmit)outputrequests=1 granted=1 available=2 action=admit
capacity ← 3, requests ← 2, granted ← 0
1capacity→ 3 = 32requests→ 2 = 23granted→ 0 = 0for _ in range(requests):
pass 1 of 25for _0 in range(requests2):6 if granted < capacity:7 granted += 1granted ← 1
pass 1 of 25for _ in range(requests):6 if granted0 < capacity3:7 granted→ 1 += 1for _ in range(requests):
pass 2 of 25for _1 in range(requests2):6 if granted < capacity:7 granted += 1granted ← 2
pass 2 of 25for _ in range(requests):6 if granted1 < capacity3:7 granted→ 2 += 1available ← 1, action ← hold
9available→ 1 = capacity3 - granted210action→ hold = "admit" if available1 >= 2 else "hold" if available == 1 else "shed"1112print("requests=" + str(requests2) + " granted=" + str(granted2) + " available=" + str(available1) + " action=" + actionhold)outputrequests=2 granted=2 available=1 action=hold
capacity ← 3, requests ← 4, granted ← 0
1capacity→ 3 = 32requests→ 4 = 43granted→ 0 = 0for _ in range(requests):
pass 1 of 45for _0 in range(requests4):6 if granted < capacity:7 granted += 1All 4 passes — pass 1 is the card above pass _1 0 2 1 3 2 4 3 granted ← 1
pass 1 of 35for _ in range(requests):6 if granted0 < capacity3:7 granted→ 1 += 1All 3 passes — pass 1 is the card above pass granted1 0 → 1 2 1 → 2 3 2 → 3 available ← 0, action ← shed
9available→ 0 = capacity3 - granted310action→ shed = "admit" if available0 >= 2 else "hold" if available == 1 else "shed"1112print("requests=" + str(requests4) + " granted=" + str(granted3) + " available=" + str(available0) + " action=" + actionshed)outputrequests=4 granted=3 available=0 action=shed