Commit a write-once value on the first attempt and report how many later writes were rejected.

write-once value A write-once value accepts the first commit and ignores the rest, keeping the stored value and commit count deterministic.

Once Value Coordination Report

writes
once_value.lua
Replay: real traced execution (multi-file project)
local writes = 3
local value = -1
local commits = 0
local rejected = 0

for i = 1, writes do
  if value == -1 then
    value = i * 10
    commits = commits + 1
  else
    rejected = rejected + 1
  end
end

local report_status = "unset"
if commits >= 1 and rejected >= 1 then
  report_status = "guarded"
elseif commits >= 1 then
  report_status = "sealed"
end

print("writes=" .. writes .. " value=" .. value .. " commits=" .. commits .. " rejected=" .. rejected .. " status=" .. report_status)
local writes = 0
local value = -1
local commits = 0
local rejected = 0

for i = 1, writes do
  if value == -1 then
    value = i * 10
    commits = commits + 1
  else
    rejected = rejected + 1
  end
end

local report_status = "unset"
if commits >= 1 and rejected >= 1 then
  report_status = "guarded"
elseif commits >= 1 then
  report_status = "sealed"
end

print("writes=" .. writes .. " value=" .. value .. " commits=" .. commits .. " rejected=" .. rejected .. " status=" .. report_status)
local writes = 1
local value = -1
local commits = 0
local rejected = 0

for i = 1, writes do
  if value == -1 then
    value = i * 10
    commits = commits + 1
  else
    rejected = rejected + 1
  end
end

local report_status = "unset"
if commits >= 1 and rejected >= 1 then
  report_status = "guarded"
elseif commits >= 1 then
  report_status = "sealed"
end

print("writes=" .. writes .. " value=" .. value .. " commits=" .. commits .. " rejected=" .. rejected .. " status=" .. report_status)
  1. writes ← 3, value ← -1, commits ← 0, rejected ← 0

    1local writes→ 3 = 3 --@writes=0, 12local value→ -1 = -13local commits→ 0 = 04local rejected→ 0 = 0
  2. i = 1, writes do

    pass 1 of 3
    6for i1 = 1, writes3 do7  if value == -1 then8    value = i * 10
    All 3 passes — pass 1 is the card above
    passivaluecommitsrejected
    11-1 100 1
    220 1
    331 2
  3. value ← 10, commits ← 1

    6for i = 1, writes do7  if value-1 == -1 then8    value→ 10 = i1 * 109    commits→ 1 = commits + 110  else
  4. rejected ← 1

    pass 1 of 2
    9  commits = commits + 110else11  rejected→ 1 = rejected + 112end
  5. rejected ← 2

    pass 2 of 2
    9  commits = commits + 110else11  rejected→ 2 = rejected + 112end
  6. report_status ← unset

    15local report_status→ unset = "unset"16if commits >= 1 and rejected >= 1 then
  7. report_status ← guarded

    15local report_status = "unset"16if commits1 >= 1 and rejected2 >= 1 then17  report_status→ guarded = "guarded"18elseif commits >= 1 then
  8. print("writes=" .. writes .. " value=" .. value .. " commits=" .. comm…

    22print("writes=" .. writes3 .. " value=" .. value10 .. " commits=" .. commits1 .. " rejected=" .. rejected2 .. " status=" .. report_statusguarded)
    outputwrites=3 value=10 commits=1 rejected=2 status=guarded
  1. writes ← 0, value ← -1, commits ← 0, rejected ← 0, report_status ← unset

    1local writes→ 0 = 02local value→ -1 = -13local commits→ 0 = 04local rejected→ 0 = 056for i = 1, writes do7  if value == -1 then8    value = i * 109    commits = commits + 110  else11    rejected = rejected + 112  end13end1415local report_status→ unset = "unset"16if commits >= 1 and rejected >= 1 then17  report_status = "guarded"18elseif commits >= 1 then19  report_status = "sealed"20end2122print("writes=" .. writes0 .. " value=" .. value-1 .. " commits=" .. commits0 .. " rejected=" .. rejected0 .. " status=" .. report_statusunset)
    outputwrites=0 value=-1 commits=0 rejected=0 status=unset
  1. writes ← 1, value ← -1, commits ← 0, rejected ← 0

    1local writes→ 1 = 12local value→ -1 = -13local commits→ 0 = 04local rejected→ 0 = 0
  2. i = 1, writes do

    6for i1 = 1, writes1 do7  if value == -1 then8    value = i * 10
  3. value ← 10, commits ← 1

    6for i = 1, writes do7  if value-1 == -1 then8    value→ 10 = i1 * 109    commits→ 1 = commits + 110  else
  4. report_status ← unset

    15local report_status→ unset = "unset"16if commits >= 1 and rejected >= 1 then
  5. report_status ← sealed

    17  report_status = "guarded"18elseif commits1 >= 1 then19  report_status→ sealed = "sealed"20end
  6. print("writes=" .. writes .. " value=" .. value .. " commits=" .. comm…

    22print("writes=" .. writes1 .. " value=" .. value10 .. " commits=" .. commits1 .. " rejected=" .. rejected0 .. " status=" .. report_statussealed)
    outputwrites=1 value=10 commits=1 rejected=0 status=sealed