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_coordination.js
Replay: real traced execution (multi-file project)
const writes = 3;
let value = -1;
let commits = 0;
let rejected = 0;

function coordinate(count) {
    for (let i = 1; i <= count; i++) {
        if (value === -1) {
            value = i * 10;
            commits += 1;
        } else {
            rejected += 1;
        }
    }
    let outcome = "unset";
    if (commits >= 1 && rejected >= 1) {
        outcome = "guarded";
    } else if (commits >= 1) {
        outcome = "sealed";
    }
    console.log(`writes=${count} value=${value} commits=${commits} rejected=${rejected} status=${outcome}`);
}

coordinate(writes);
const writes = 0;
let value = -1;
let commits = 0;
let rejected = 0;

function coordinate(count) {
    for (let i = 1; i <= count; i++) {
        if (value === -1) {
            value = i * 10;
            commits += 1;
        } else {
            rejected += 1;
        }
    }
    let outcome = "unset";
    if (commits >= 1 && rejected >= 1) {
        outcome = "guarded";
    } else if (commits >= 1) {
        outcome = "sealed";
    }
    console.log(`writes=${count} value=${value} commits=${commits} rejected=${rejected} status=${outcome}`);
}

coordinate(writes);
const writes = 1;
let value = -1;
let commits = 0;
let rejected = 0;

function coordinate(count) {
    for (let i = 1; i <= count; i++) {
        if (value === -1) {
            value = i * 10;
            commits += 1;
        } else {
            rejected += 1;
        }
    }
    let outcome = "unset";
    if (commits >= 1 && rejected >= 1) {
        outcome = "guarded";
    } else if (commits >= 1) {
        outcome = "sealed";
    }
    console.log(`writes=${count} value=${value} commits=${commits} rejected=${rejected} status=${outcome}`);
}

coordinate(writes);
  1. writes ← 3, value ← -1, commits ← 0, rejected ← 0

    1const writes→ 3 = 3;  //@writes=0, 12let value→ -1 = -1;3let commits→ 0 = 0;4let rejected→ 0 = 0;56function coordinate(count) {7    for (let i = 1; i <= count; i++) {8        if (value === -1) {9            value = i * 10;10            commits += 1;11        } else {12            rejected += 1;13        }14    }15    let outcome = "unset";16    if (commits >= 1 && rejected >= 1) {17        outcome = "guarded";18    } else if (commits >= 1) {19        outcome = "sealed";20    }21    console.log(`writes=${count} value=${value} commits=${commits} rejected=${rejected} status=${outcome}`);22}2324coordinate(writes3);
  2. function coordinate(count)

    3let commits = 0;4let rejected = 0;56function coordinate(count3) {7    for (let i = 1; i <= count; i++) {
  3. for (let i = 1; i <= count; i++)

    pass 1 of 3
    6function coordinate(count) {7    for (let i1 = 1; i <= count3; i++) {8        if (value === -1) {
    All 3 passes — pass 1 is the card above
    passvaluei
    1-11
    22
    33
  4. i ← 1

    6function coordinate(count) {7    for (let i = 1; i <= count; i++) {8        if (value-1 === -1) {9            value = i→ 1 * 10;10            commits += 1;11        } else {
  5. outcome ← unset

    13    }14}15let outcome→ unset = "unset";16if (commits >= 1 && rejected >= 1) {
  6. if (commits >= 1 && rejected >= 1)

    14}15let outcome = "unset";16if (commits1 >= 1 && rejected2 >= 1) {17    outcome = "guarded";18} else if (commits >= 1) {
  7. console.log(`writes=${count} value=${value} commits=${commits} rejecte…

    19        outcome = "sealed";20    }21    console.log(`writes=${count3} value=${value10} commits=${commits1} rejected=${rejected2} status=${outcomeguarded}`);22}
    outputwrites=3 value=10 commits=1 rejected=2 status=guarded
  8. coordinate(writes);

    21    console.log(`writes=${count} value=${value} commits=${commits} rejected=${rejected} status=${outcome}`);22}2324coordinate(writes3);
  1. writes ← 0, value ← -1, commits ← 0, rejected ← 0

    1const writes→ 0 = 0;2let value→ -1 = -1;3let commits→ 0 = 0;4let rejected→ 0 = 0;56function coordinate(count) {7    for (let i = 1; i <= count; i++) {8        if (value === -1) {9            value = i * 10;10            commits += 1;11        } else {12            rejected += 1;13        }14    }15    let outcome = "unset";16    if (commits >= 1 && rejected >= 1) {17        outcome = "guarded";18    } else if (commits >= 1) {19        outcome = "sealed";20    }21    console.log(`writes=${count} value=${value} commits=${commits} rejected=${rejected} status=${outcome}`);22}2324coordinate(writes0);
  2. outcome ← unset

    3let commits = 0;4let rejected = 0;56function coordinate(count0) {7    for (let i = 1; i <= count; i++) {8        if (value === -1) {9            value = i * 10;10            commits += 1;11        } else {12            rejected += 1;13        }14    }15    let outcome→ unset = "unset";16    if (commits >= 1 && rejected >= 1) {17        outcome = "guarded";18    } else if (commits >= 1) {19        outcome = "sealed";20    }21    console.log(`writes=${count0} value=${value-1} commits=${commits0} rejected=${rejected0} status=${outcomeunset}`);22}
    outputwrites=0 value=-1 commits=0 rejected=0 status=unset
  3. coordinate(writes);

    21    console.log(`writes=${count} value=${value} commits=${commits} rejected=${rejected} status=${outcome}`);22}2324coordinate(writes0);
  1. writes ← 1, value ← -1, commits ← 0, rejected ← 0

    1const writes→ 1 = 1;2let value→ -1 = -1;3let commits→ 0 = 0;4let rejected→ 0 = 0;56function coordinate(count) {7    for (let i = 1; i <= count; i++) {8        if (value === -1) {9            value = i * 10;10            commits += 1;11        } else {12            rejected += 1;13        }14    }15    let outcome = "unset";16    if (commits >= 1 && rejected >= 1) {17        outcome = "guarded";18    } else if (commits >= 1) {19        outcome = "sealed";20    }21    console.log(`writes=${count} value=${value} commits=${commits} rejected=${rejected} status=${outcome}`);22}2324coordinate(writes1);
  2. function coordinate(count)

    3let commits = 0;4let rejected = 0;56function coordinate(count1) {7    for (let i = 1; i <= count; i++) {
  3. for (let i = 1; i <= count; i++)

    6function coordinate(count) {7    for (let i1 = 1; i <= count1; i++) {8        if (value === -1) {
  4. i ← 1

    6function coordinate(count) {7    for (let i = 1; i <= count; i++) {8        if (value-1 === -1) {9            value = i→ 1 * 10;10            commits += 1;11        } else {
  5. outcome ← unset

    13    }14}15let outcome→ unset = "unset";16if (commits >= 1 && rejected >= 1) {
  6. if (commits >= 1)

    17    outcome = "guarded";18} else if (commits1 >= 1) {19    outcome = "sealed";20}
  7. console.log(`writes=${count} value=${value} commits=${commits} rejecte…

    19        outcome = "sealed";20    }21    console.log(`writes=${count1} value=${value10} commits=${commits1} rejected=${rejected0} status=${outcomesealed}`);22}
    outputwrites=1 value=10 commits=1 rejected=0 status=sealed
  8. coordinate(writes);

    21    console.log(`writes=${count} value=${value} commits=${commits} rejected=${rejected} status=${outcome}`);22}2324coordinate(writes1);