Concurrency Coordination Reports
Cancellation Flag Coordination Report
Stop processing a fixed batch once a scalar cancellation threshold is reached and report the final state.
cancellation flag
This report models cancellation as a scalar flag rather than a live signal object, so the stopping point traces deterministically.
Cancellation Flag Coordination Report
cancellation_flag.lua
Replay: real traced execution (multi-file project)
local limit = 5
local processed = 0
local cancelled = false
local batch = 6
while processed < batch do
if processed >= limit then
cancelled = true
break
end
processed = processed + 1
end
local report_status = "complete"
if cancelled and processed >= 3 then
report_status = "cancelled"
elseif cancelled then
report_status = "halted"
end
print("limit=" .. limit .. " processed=" .. processed .. " cancelled=" .. tostring(cancelled) .. " status=" .. report_status)
local limit = 2
local processed = 0
local cancelled = false
local batch = 6
while processed < batch do
if processed >= limit then
cancelled = true
break
end
processed = processed + 1
end
local report_status = "complete"
if cancelled and processed >= 3 then
report_status = "cancelled"
elseif cancelled then
report_status = "halted"
end
print("limit=" .. limit .. " processed=" .. processed .. " cancelled=" .. tostring(cancelled) .. " status=" .. report_status)
local limit = 8
local processed = 0
local cancelled = false
local batch = 6
while processed < batch do
if processed >= limit then
cancelled = true
break
end
processed = processed + 1
end
local report_status = "complete"
if cancelled and processed >= 3 then
report_status = "cancelled"
elseif cancelled then
report_status = "halted"
end
print("limit=" .. limit .. " processed=" .. processed .. " cancelled=" .. tostring(cancelled) .. " status=" .. report_status)
limit ← 5, processed ← 0, cancelled ← false, batch ← 6
1local limit→ 5 = 5 --@limit=2, 82local processed→ 0 = 03local cancelled→ false = false4local batch→ 6 = 6processed ← 1
pass 1 of 66while processed0 < batch6 do7 if processed >= limit then8 cancelled = true9 break10 end11 processed→ 1 = processed + 112endAll 6 passes — pass 1 is the card above pass limitprocessedcancelled1 — 0 → 1 — 2 — 1 → 2 — 3 — 2 → 3 — 4 — 3 → 4 — 5 — 4 → 5 — 6 5 5 true cancelled ← true
6while processed < batch do7 if processed5 >= limit5 then8 cancelled→ true = true9 break10 endreport_status ← complete
14local report_status→ complete = "complete"15if cancelled and processed >= 3 thenreport_status ← cancelled
14local report_status = "complete"15if cancelledtrue and processed5 >= 3 then16 report_status→ cancelled = "cancelled"17elseif cancelled thenprint("limit=" .. limit .. " processed=" .. processed .. " cancelled="…
21print("limit=" .. limit5 .. " processed=" .. processed5 .. " cancelled=" .. tostring(cancelledtrue) .. " status=" .. report_statuscancelled)outputlimit=5 processed=5 cancelled=true status=cancelled
limit ← 2, processed ← 0, cancelled ← false, batch ← 6
1local limit→ 2 = 22local processed→ 0 = 03local cancelled→ false = false4local batch→ 6 = 6processed ← 1
pass 1 of 36while processed0 < batch6 do7 if processed >= limit then8 cancelled = true9 break10 end11 processed→ 1 = processed + 112endAll 3 passes — pass 1 is the card above pass limitprocessedcancelled1 — 0 → 1 — 2 — 1 → 2 — 3 2 2 true cancelled ← true
6while processed < batch do7 if processed2 >= limit2 then8 cancelled→ true = true9 break10 endreport_status ← complete
14local report_status→ complete = "complete"15if cancelled and processed >= 3 thenreport_status ← halted
16 report_status = "cancelled"17elseif cancelledtrue then18 report_status→ halted = "halted"19endprint("limit=" .. limit .. " processed=" .. processed .. " cancelled="…
21print("limit=" .. limit2 .. " processed=" .. processed2 .. " cancelled=" .. tostring(cancelledtrue) .. " status=" .. report_statushalted)outputlimit=2 processed=2 cancelled=true status=halted
limit ← 8, processed ← 0, cancelled ← false, batch ← 6
1local limit→ 8 = 82local processed→ 0 = 03local cancelled→ false = false4local batch→ 6 = 6processed ← 1
pass 1 of 66while processed0 < batch6 do7 if processed >= limit then8 cancelled = true9 break10 end11 processed→ 1 = processed + 112endAll 6 passes — pass 1 is the card above pass processed1 0 → 1 2 1 → 2 3 2 → 3 4 3 → 4 5 4 → 5 6 5 → 6 report_status ← complete
14local report_status→ complete = "complete"15if cancelled and processed >= 3 then16 report_status = "cancelled"17elseif cancelled then18 report_status = "halted"19end2021print("limit=" .. limit8 .. " processed=" .. processed6 .. " cancelled=" .. tostring(cancelledfalse) .. " status=" .. report_statuscomplete)outputlimit=8 processed=6 cancelled=false status=complete