Concurrency Coordination Reports
Checkpoint Resume Coordination Report
Resume a coroutine through a fixed number of ordered checkpoints and report the resume sequence and drain state.
checkpoint resume
Each coroutine yield marks an ordered checkpoint that resumes in sequence, so the checkpoint count and resume order stay deterministic.
Checkpoint Resume Coordination Report
checkpoint_resume.lua
Replay: real traced execution (multi-file project)
local seed = 2
local checkpoints = 0
local order = ""
for i = 1, seed do
checkpoints = checkpoints + 1
order = order .. i
end
local report_status = "idle"
if checkpoints >= 3 then
report_status = "drained"
elseif checkpoints == 2 then
report_status = "checked"
elseif checkpoints == 1 then
report_status = "primed"
end
print("seed=" .. seed .. " checkpoints=" .. checkpoints .. " order=" .. order .. " status=" .. report_status)
local seed = 1
local checkpoints = 0
local order = ""
for i = 1, seed do
checkpoints = checkpoints + 1
order = order .. i
end
local report_status = "idle"
if checkpoints >= 3 then
report_status = "drained"
elseif checkpoints == 2 then
report_status = "checked"
elseif checkpoints == 1 then
report_status = "primed"
end
print("seed=" .. seed .. " checkpoints=" .. checkpoints .. " order=" .. order .. " status=" .. report_status)
local seed = 3
local checkpoints = 0
local order = ""
for i = 1, seed do
checkpoints = checkpoints + 1
order = order .. i
end
local report_status = "idle"
if checkpoints >= 3 then
report_status = "drained"
elseif checkpoints == 2 then
report_status = "checked"
elseif checkpoints == 1 then
report_status = "primed"
end
print("seed=" .. seed .. " checkpoints=" .. checkpoints .. " order=" .. order .. " status=" .. report_status)
seed ← 2, checkpoints ← 0, order ← (empty)
1local seed→ 2 = 2 --@seed=1, 32local checkpoints→ 0 = 03local order→ (empty) = ""checkpoints ← 1, order ← 1
pass 1 of 25for i1 = 1, seed2 do6 checkpoints→ 1 = checkpoints + 17 order→ 1 = order .. i18endcheckpoints ← 2, order ← 12
pass 2 of 25for i2 = 1, seed2 do6 checkpoints→ 2 = checkpoints + 17 order→ 12 = order .. i28endreport_status ← idle
10local report_status→ idle = "idle"11if checkpoints >= 3 thenreport_status ← checked
12 report_status = "drained"13elseif checkpoints2 == 2 then14 report_status→ checked = "checked"15elseif checkpoints == 1 thenprint("seed=" .. seed .. " checkpoints=" .. checkpoints .. " order=" .…
19print("seed=" .. seed2 .. " checkpoints=" .. checkpoints2 .. " order=" .. order12 .. " status=" .. report_statuschecked)outputseed=2 checkpoints=2 order=12 status=checked
seed ← 1, checkpoints ← 0, order ← (empty)
1local seed→ 1 = 12local checkpoints→ 0 = 03local order→ (empty) = ""checkpoints ← 1, order ← 1
5for i1 = 1, seed1 do6 checkpoints→ 1 = checkpoints + 17 order→ 1 = order .. i18endreport_status ← idle
10local report_status→ idle = "idle"11if checkpoints >= 3 thenreport_status ← primed
14 report_status = "checked"15elseif checkpoints1 == 1 then16 report_status→ primed = "primed"17endprint("seed=" .. seed .. " checkpoints=" .. checkpoints .. " order=" .…
19print("seed=" .. seed1 .. " checkpoints=" .. checkpoints1 .. " order=" .. order1 .. " status=" .. report_statusprimed)outputseed=1 checkpoints=1 order=1 status=primed
seed ← 3, checkpoints ← 0, order ← (empty)
1local seed→ 3 = 32local checkpoints→ 0 = 03local order→ (empty) = ""checkpoints ← 1, order ← 1
pass 1 of 35for i1 = 1, seed3 do6 checkpoints→ 1 = checkpoints + 17 order→ 1 = order .. i18endAll 3 passes — pass 1 is the card above pass icheckpointsorder1 1 0 → 1 (empty) → 1 2 2 1 → 2 1 → 12 3 3 2 → 3 12 → 123 report_status ← idle
10local report_status→ idle = "idle"11if checkpoints >= 3 thenreport_status ← drained
10local report_status = "idle"11if checkpoints3 >= 3 then12 report_status→ drained = "drained"13elseif checkpoints == 2 thenprint("seed=" .. seed .. " checkpoints=" .. checkpoints .. " order=" .…
19print("seed=" .. seed3 .. " checkpoints=" .. checkpoints3 .. " order=" .. order123 .. " status=" .. report_statusdrained)outputseed=3 checkpoints=3 order=123 status=drained