Accumulate a selected number of values as a small rolling-window model.

window Windowed pipelines use a bounded prefix or range of records.
total The total is a scalar checkpoint that replay can inspect at every step.

Window Total

window
window_total.lua
Replay: real traced execution (multi-file project)
local window = 3
local total = 0
local seen = 0

for _, value in ipairs({4, 6, 8, 10}) do
  if seen < window then
    total = total + value
    seen = seen + 1
  end
end

print("window=" .. window)
print("seen=" .. seen)
print("total=" .. total)
local window = 2
local total = 0
local seen = 0

for _, value in ipairs({4, 6, 8, 10}) do
  if seen < window then
    total = total + value
    seen = seen + 1
  end
end

print("window=" .. window)
print("seen=" .. seen)
print("total=" .. total)
local window = 4
local total = 0
local seen = 0

for _, value in ipairs({4, 6, 8, 10}) do
  if seen < window then
    total = total + value
    seen = seen + 1
  end
end

print("window=" .. window)
print("seen=" .. seen)
print("total=" .. total)
  1. window ← 3, total ← 0, seen ← 0

    1local window→ 3 = 3 --@window=2, 42local total→ 0 = 03local seen→ 0 = 0
  2. _, value in ipairs({4, 6, 8, 10}) do

    pass 1 of 4
    5for _1, value4 in ipairs({4, 6, 8, 10}) do6  if seen < window then7    total = total + value
    All 4 passes — pass 1 is the card above
    pass_value
    114
    226
    338
    4410
  3. total ← 4, seen ← 1

    pass 1 of 3
    5for _, value in ipairs({4, 6, 8, 10}) do6  if seen0 < window3 then7    total→ 4 = total + value48    seen→ 1 = seen + 19  end
    All 3 passes — pass 1 is the card above
    passvaluetotalseen
    140 40 1
    264 101 2
    3810 182 3
  4. print("window=" .. window)

    12print("window=" .. window3)13print("seen=" .. seen3)14print("total=" .. total18)
    outputwindow=3
    seen=3
    total=18
  1. window ← 2, total ← 0, seen ← 0

    1local window→ 2 = 22local total→ 0 = 03local seen→ 0 = 0
  2. _, value in ipairs({4, 6, 8, 10}) do

    pass 1 of 4
    5for _1, value4 in ipairs({4, 6, 8, 10}) do6  if seen < window then7    total = total + value
    All 4 passes — pass 1 is the card above
    pass_valuewindowtotalseen
    11420 40 1
    22624 101 2
    338
    4410
  3. total ← 4, seen ← 1

    pass 1 of 2
    5for _, value in ipairs({4, 6, 8, 10}) do6  if seen0 < window2 then7    total→ 4 = total + value48    seen→ 1 = seen + 19  end
  4. total ← 10, seen ← 2

    pass 2 of 2
    5for _, value in ipairs({4, 6, 8, 10}) do6  if seen1 < window2 then7    total→ 10 = total + value68    seen→ 2 = seen + 19  end
  5. print("window=" .. window)

    12print("window=" .. window2)13print("seen=" .. seen2)14print("total=" .. total10)
    outputwindow=2
    seen=2
    total=10
  1. window ← 4, total ← 0, seen ← 0

    1local window→ 4 = 42local total→ 0 = 03local seen→ 0 = 0
  2. _, value in ipairs({4, 6, 8, 10}) do

    pass 1 of 4
    5for _1, value4 in ipairs({4, 6, 8, 10}) do6  if seen < window then7    total = total + value
    All 4 passes — pass 1 is the card above
    pass_value
    114
    226
    338
    4410
  3. total ← 4, seen ← 1

    pass 1 of 4
    5for _, value in ipairs({4, 6, 8, 10}) do6  if seen0 < window4 then7    total→ 4 = total + value48    seen→ 1 = seen + 19  end
    All 4 passes — pass 1 is the card above
    passvaluetotalseen
    140 40 1
    264 101 2
    3810 182 3
    41018 283 4
  4. print("window=" .. window)

    12print("window=" .. window4)13print("seen=" .. seen4)14print("total=" .. total28)
    outputwindow=4
    seen=4
    total=28