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 guard.

Once Value Remediation Report

writes
once_value_remediation.js
Replay: real traced execution (multi-file project)
const writes = 1;

function remediate(count) {
    let accepted = 0;
    let skipped = 0;
    for (let i = 1; i <= count; i++) {
        if (accepted === 0) {
            accepted += 1;
        } else {
            skipped += 1;
        }
    }
    let action = "retry";
    if (accepted >= 1 && skipped >= 1) {
        action = "skip";
    } else if (accepted >= 1) {
        action = "commit";
    }
    console.log(`writes=${count} accepted=${accepted} skipped=${skipped} ${action}`);
}

remediate(writes);
const writes = 0;

function remediate(count) {
    let accepted = 0;
    let skipped = 0;
    for (let i = 1; i <= count; i++) {
        if (accepted === 0) {
            accepted += 1;
        } else {
            skipped += 1;
        }
    }
    let action = "retry";
    if (accepted >= 1 && skipped >= 1) {
        action = "skip";
    } else if (accepted >= 1) {
        action = "commit";
    }
    console.log(`writes=${count} accepted=${accepted} skipped=${skipped} ${action}`);
}

remediate(writes);
const writes = 2;

function remediate(count) {
    let accepted = 0;
    let skipped = 0;
    for (let i = 1; i <= count; i++) {
        if (accepted === 0) {
            accepted += 1;
        } else {
            skipped += 1;
        }
    }
    let action = "retry";
    if (accepted >= 1 && skipped >= 1) {
        action = "skip";
    } else if (accepted >= 1) {
        action = "commit";
    }
    console.log(`writes=${count} accepted=${accepted} skipped=${skipped} ${action}`);
}

remediate(writes);
  1. writes ← 1

    1const writes→ 1 = 1;  //@writes=2, 023function remediate(count) {4    let accepted = 0;5    let skipped = 0;6    for (let i = 1; i <= count; i++) {7        if (accepted === 0) {8            accepted += 1;9        } else {10            skipped += 1;11        }12    }13    let action = "retry";14    if (accepted >= 1 && skipped >= 1) {15        action = "skip";16    } else if (accepted >= 1) {17        action = "commit";18    }19    console.log(`writes=${count} accepted=${accepted} skipped=${skipped} ${action}`);20}2122remediate(writes1);
  2. accepted ← 0, skipped ← 0

    1const writes = 1;  //@writes=2, 023function remediate(count1) {4    let accepted→ 0 = 0;5    let skipped→ 0 = 0;6    for (let i = 1; i <= count; i++) {
  3. for (let i = 1; i <= count; i++)

    4let accepted = 0;5let skipped = 0;6for (let i1 = 1; i <= count1; i++) {7    if (accepted === 0) {
  4. if (accepted === 0)

    5let skipped = 0;6for (let i = 1; i <= count; i++) {7    if (accepted0 === 0) {8        accepted += 1;9    } else {
  5. action ← retry

    11    }12}13let action→ retry = "retry";14if (accepted >= 1 && skipped >= 1) {
  6. if (accepted >= 1)

    15    action = "skip";16} else if (accepted1 >= 1) {17    action = "commit";18}
  7. console.log(`writes=${count} accepted=${accepted} skipped=${skipped} $…

    17        action = "commit";18    }19    console.log(`writes=${count1} accepted=${accepted1} skipped=${skipped0} ${actioncommit}`);20}
    outputwrites=1 accepted=1 skipped=0 commit
  8. remediate(writes);

    19    console.log(`writes=${count} accepted=${accepted} skipped=${skipped} ${action}`);20}2122remediate(writes1);
  1. writes ← 0

    1const writes→ 0 = 0;23function remediate(count) {4    let accepted = 0;5    let skipped = 0;6    for (let i = 1; i <= count; i++) {7        if (accepted === 0) {8            accepted += 1;9        } else {10            skipped += 1;11        }12    }13    let action = "retry";14    if (accepted >= 1 && skipped >= 1) {15        action = "skip";16    } else if (accepted >= 1) {17        action = "commit";18    }19    console.log(`writes=${count} accepted=${accepted} skipped=${skipped} ${action}`);20}2122remediate(writes0);
  2. accepted ← 0, skipped ← 0, action ← retry

    1const writes = 0;23function remediate(count0) {4    let accepted→ 0 = 0;5    let skipped→ 0 = 0;6    for (let i = 1; i <= count; i++) {7        if (accepted === 0) {8            accepted += 1;9        } else {10            skipped += 1;11        }12    }13    let action→ retry = "retry";14    if (accepted >= 1 && skipped >= 1) {15        action = "skip";16    } else if (accepted >= 1) {17        action = "commit";18    }19    console.log(`writes=${count0} accepted=${accepted0} skipped=${skipped0} ${actionretry}`);20}
    outputwrites=0 accepted=0 skipped=0 retry
  3. remediate(writes);

    19    console.log(`writes=${count} accepted=${accepted} skipped=${skipped} ${action}`);20}2122remediate(writes0);
  1. writes ← 2

    1const writes→ 2 = 2;23function remediate(count) {4    let accepted = 0;5    let skipped = 0;6    for (let i = 1; i <= count; i++) {7        if (accepted === 0) {8            accepted += 1;9        } else {10            skipped += 1;11        }12    }13    let action = "retry";14    if (accepted >= 1 && skipped >= 1) {15        action = "skip";16    } else if (accepted >= 1) {17        action = "commit";18    }19    console.log(`writes=${count} accepted=${accepted} skipped=${skipped} ${action}`);20}2122remediate(writes2);
  2. accepted ← 0, skipped ← 0

    1const writes = 2;23function remediate(count2) {4    let accepted→ 0 = 0;5    let skipped→ 0 = 0;6    for (let i = 1; i <= count; i++) {
  3. for (let i = 1; i <= count; i++)

    pass 1 of 2
    4let accepted = 0;5let skipped = 0;6for (let i1 = 1; i <= count2; i++) {7    if (accepted === 0) {
  4. if (accepted === 0)

    5let skipped = 0;6for (let i = 1; i <= count; i++) {7    if (accepted0 === 0) {8        accepted += 1;9    } else {
  5. for (let i = 1; i <= count; i++)

    pass 2 of 2
    4let accepted = 0;5let skipped = 0;6for (let i2 = 1; i <= count2; i++) {7    if (accepted === 0) {
  6. action ← retry

    11    }12}13let action→ retry = "retry";14if (accepted >= 1 && skipped >= 1) {
  7. if (accepted >= 1 && skipped >= 1)

    12}13let action = "retry";14if (accepted1 >= 1 && skipped1 >= 1) {15    action = "skip";16} else if (accepted >= 1) {
  8. console.log(`writes=${count} accepted=${accepted} skipped=${skipped} $…

    17        action = "commit";18    }19    console.log(`writes=${count2} accepted=${accepted1} skipped=${skipped1} ${actionskip}`);20}
    outputwrites=2 accepted=1 skipped=1 skip
  9. remediate(writes);

    19    console.log(`writes=${count} accepted=${accepted} skipped=${skipped} ${action}`);20}2122remediate(writes2);