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

limit
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)
  1. limit ← 5, processed ← 0, cancelled ← false, batch ← 6

    1local limit→ 5 = 5 --@limit=2, 82local processed→ 0 = 03local cancelled→ false = false4local batch→ 6 = 6
  2. processed ← 1

    pass 1 of 6
    6while processed0 < batch6 do7  if processed >= limit then8    cancelled = true9    break10  end11  processed→ 1 = processed + 112end
    All 6 passes — pass 1 is the card above
    passlimitprocessedcancelled
    10 1
    21 2
    32 3
    43 4
    54 5
    655true
  3. cancelled ← true

    6while processed < batch do7  if processed5 >= limit5 then8    cancelled→ true = true9    break10  end
  4. report_status ← complete

    14local report_status→ complete = "complete"15if cancelled and processed >= 3 then
  5. report_status ← cancelled

    14local report_status = "complete"15if cancelledtrue and processed5 >= 3 then16  report_status→ cancelled = "cancelled"17elseif cancelled then
  6. print("limit=" .. limit .. " processed=" .. processed .. " cancelled="…

    21print("limit=" .. limit5 .. " processed=" .. processed5 .. " cancelled=" .. tostring(cancelledtrue) .. " status=" .. report_statuscancelled)
    outputlimit=5 processed=5 cancelled=true status=cancelled
  1. limit ← 2, processed ← 0, cancelled ← false, batch ← 6

    1local limit→ 2 = 22local processed→ 0 = 03local cancelled→ false = false4local batch→ 6 = 6
  2. processed ← 1

    pass 1 of 3
    6while processed0 < batch6 do7  if processed >= limit then8    cancelled = true9    break10  end11  processed→ 1 = processed + 112end
    All 3 passes — pass 1 is the card above
    passlimitprocessedcancelled
    10 1
    21 2
    322true
  3. cancelled ← true

    6while processed < batch do7  if processed2 >= limit2 then8    cancelled→ true = true9    break10  end
  4. report_status ← complete

    14local report_status→ complete = "complete"15if cancelled and processed >= 3 then
  5. report_status ← halted

    16  report_status = "cancelled"17elseif cancelledtrue then18  report_status→ halted = "halted"19end
  6. print("limit=" .. limit .. " processed=" .. processed .. " cancelled="…

    21print("limit=" .. limit2 .. " processed=" .. processed2 .. " cancelled=" .. tostring(cancelledtrue) .. " status=" .. report_statushalted)
    outputlimit=2 processed=2 cancelled=true status=halted
  1. limit ← 8, processed ← 0, cancelled ← false, batch ← 6

    1local limit→ 8 = 82local processed→ 0 = 03local cancelled→ false = false4local batch→ 6 = 6
  2. processed ← 1

    pass 1 of 6
    6while processed0 < batch6 do7  if processed >= limit then8    cancelled = true9    break10  end11  processed→ 1 = processed + 112end
    All 6 passes — pass 1 is the card above
    passprocessed
    10 1
    21 2
    32 3
    43 4
    54 5
    65 6
  3. 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