Apply at most one idempotent write and turn the accepted and skipped counts into a commit, skip, or retry remediation action.

idempotent write Only the first write is accepted and later writes are counted as skipped, so the remediation action is reproducible without a live one-shot value cache.

Once Value Remediation Report

writes
once_value_remediation_report.swift
Replay: real traced execution (multi-file project)
let writes = 1
var accepted = 0
var skipped = 0
for _ in 0..<writes {
    if accepted == 0 {
        accepted += 1
    } else {
        skipped += 1
    }
}

var action = "retry"
if accepted > 0 {
    action = "commit"
}
if skipped > 0 {
    action = "skip"
}

let line = "writes=\(writes) accepted=\(accepted) skipped=\(skipped) \(action)"
print(line)
let writes = 0
var accepted = 0
var skipped = 0
for _ in 0..<writes {
    if accepted == 0 {
        accepted += 1
    } else {
        skipped += 1
    }
}

var action = "retry"
if accepted > 0 {
    action = "commit"
}
if skipped > 0 {
    action = "skip"
}

let line = "writes=\(writes) accepted=\(accepted) skipped=\(skipped) \(action)"
print(line)
let writes = 2
var accepted = 0
var skipped = 0
for _ in 0..<writes {
    if accepted == 0 {
        accepted += 1
    } else {
        skipped += 1
    }
}

var action = "retry"
if accepted > 0 {
    action = "commit"
}
if skipped > 0 {
    action = "skip"
}

let line = "writes=\(writes) accepted=\(accepted) skipped=\(skipped) \(action)"
print(line)
  1. writes ← 1, accepted ← 0, skipped ← 0

    1let writes→ 1 = 1  //@writes=2, 02var accepted→ 0 = 03var skipped→ 0 = 04for _ in 0..<writes {
  2. for _ in 0..<writes

    3var skipped = 04for _ in 0..<writes1 {5    if accepted == 0 {
  3. if accepted == 0

    4for _ in 0..<writes {5    if accepted0 == 0 {6        accepted0 += 17    } else {
  4. action ← retry

    12var action→ retry = "retry"13if accepted > 0 {
  5. if accepted > 0

    12var action = "retry"13if accepted1 > 0 {14    action = "commit"15}
  6. line ← writes=1 accepted=1 skipped=0 commit

    20let line→ writes=1 accepted=1 skipped=0 commit = "writes=\(writes1) accepted=\(accepted1) skipped=\(skipped0) \(actioncommit)"21print(linewrites=1 accepted=1 skipped=0 commit)
    outputwrites=1 accepted=1 skipped=0 commit
  1. writes ← 0, accepted ← 0, skipped ← 0, action ← retry, line ← writes=0 accepted=0 skipped=0 retry

    1let writes→ 0 = 02var accepted→ 0 = 03var skipped→ 0 = 04for _ in 0..<writes {5    if accepted == 0 {6        accepted += 17    } else {8        skipped += 19    }10}1112var action→ retry = "retry"13if accepted > 0 {14    action = "commit"15}16if skipped > 0 {17    action = "skip"18}1920let line→ writes=0 accepted=0 skipped=0 retry = "writes=\(writes0) accepted=\(accepted0) skipped=\(skipped0) \(actionretry)"21print(linewrites=0 accepted=0 skipped=0 retry)
    outputwrites=0 accepted=0 skipped=0 retry
  1. writes ← 2, accepted ← 0, skipped ← 0

    1let writes→ 2 = 22var accepted→ 0 = 03var skipped→ 0 = 04for _ in 0..<writes {
  2. for _ in 0..<writes

    pass 1 of 2
    3var skipped = 04for _ in 0..<writes2 {5    if accepted == 0 {
  3. if accepted == 0

    4for _ in 0..<writes {5    if accepted0 == 0 {6        accepted0 += 17    } else {
  4. for _ in 0..<writes

    pass 2 of 2
    3var skipped = 04for _ in 0..<writes2 {5    if accepted == 0 {
  5. else

    6    accepted += 17} else {8    skipped0 += 19}
  6. action ← retry

    12var action→ retry = "retry"13if accepted > 0 {
  7. if accepted > 0

    12var action = "retry"13if accepted1 > 0 {14    action = "commit"15}
  8. if skipped > 0

    15}16if skipped1 > 0 {17    action = "skip"18}
  9. line ← writes=2 accepted=1 skipped=1 skip

    20let line→ writes=2 accepted=1 skipped=1 skip = "writes=\(writes2) accepted=\(accepted1) skipped=\(skipped1) \(actionskip)"21print(linewrites=2 accepted=1 skipped=1 skip)
    outputwrites=2 accepted=1 skipped=1 skip