Concurrency Coordination Reports
Microtask Checkpoint Coordination Report
Await a fixed number of microtask checkpoints in order and report the resume sequence and drain state.
microtask checkpoint
Each await yields to the microtask queue and resumes in order, so the checkpoint count and resume sequence stay deterministic.
Microtask Checkpoint Coordination Report
microtask_checkpoint_coordination.js
Replay: real traced execution (multi-file project)
const seedTasks = 2;
let checkpoints = 0;
let order = "";
async function coordinate(count) {
for (let i = 1; i <= count; i++) {
await Promise.resolve(i);
checkpoints += 1;
order += i;
}
let outcome = "idle";
if (checkpoints >= 3) {
outcome = "drained";
} else if (checkpoints === 2) {
outcome = "checked";
} else if (checkpoints === 1) {
outcome = "primed";
}
console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} status=${outcome}`);
}
coordinate(seedTasks);
const seedTasks = 1;
let checkpoints = 0;
let order = "";
async function coordinate(count) {
for (let i = 1; i <= count; i++) {
await Promise.resolve(i);
checkpoints += 1;
order += i;
}
let outcome = "idle";
if (checkpoints >= 3) {
outcome = "drained";
} else if (checkpoints === 2) {
outcome = "checked";
} else if (checkpoints === 1) {
outcome = "primed";
}
console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} status=${outcome}`);
}
coordinate(seedTasks);
const seedTasks = 3;
let checkpoints = 0;
let order = "";
async function coordinate(count) {
for (let i = 1; i <= count; i++) {
await Promise.resolve(i);
checkpoints += 1;
order += i;
}
let outcome = "idle";
if (checkpoints >= 3) {
outcome = "drained";
} else if (checkpoints === 2) {
outcome = "checked";
} else if (checkpoints === 1) {
outcome = "primed";
}
console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} status=${outcome}`);
}
coordinate(seedTasks);
seedTasks ← 2, checkpoints ← 0, order ← (empty)
1const seedTasks→ 2 = 2; //@seedTasks=1, 32let checkpoints→ 0 = 0;3let order→ (empty) = "";45async function coordinate(count) {6 for (let i = 1; i <= count; i++) {7 await Promise.resolve(i);8 checkpoints += 1;9 order += i;10 }11 let outcome = "idle";12 if (checkpoints >= 3) {13 outcome = "drained";14 } else if (checkpoints === 2) {15 outcome = "checked";16 } else if (checkpoints === 1) {17 outcome = "primed";18 }19 console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} status=${outcome}`);20}2122coordinate(seedTasks2);async function coordinate(count)
2let checkpoints = 0;3let order = "";45async function coordinate(count2) {6 for (let i = 1; i <= count; i++) {for (let i = 1; i <= count; i++)
pass 1 of 25async function coordinate(count) {6 for (let i1 = 1; i <= count2; i++) {7 await Promise.resolve(i1);8 checkpoints += 1;checkpoints ← 1, order ← 1
5async function coordinate(count) {6 for (let i = 1; i <= count; i++) {7 await Promise.resolve(i1);8 checkpoints += 1;9 order += i1;10 }11 let outcome = "idle";12 if (checkpoints >= 3) {13 outcome = "drained";14 } else if (checkpoints === 2) {15 outcome = "checked";16 } else if (checkpoints === 1) {17 outcome = "primed";18 }19 console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} status=${outcome}`);20}2122coordinate(seedTasks2);values this step1checkpoints1ordercheckpoints ← 2, order ← 12
pass 2 of 25async function coordinate(count) {6 for (let i2 = 1; i <= count2; i++) {7 await Promise.resolve(i2);8 checkpoints += 1;9 order += i2;10 }values this step2checkpoints12orderoutcome ← idle
9 order += i;10}11let outcome→ idle = "idle";12if (checkpoints >= 3) {if (checkpoints === 2)
13 outcome = "drained";14} else if (checkpoints2 === 2) {15 outcome = "checked";16} else if (checkpoints === 1) {console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} …
17 outcome = "primed";18 }19 console.log(`tasks=${count2} checkpoints=${checkpoints2} order=${order12} status=${outcomechecked}`);20}outputtasks=2 checkpoints=2 order=12 status=checked
seedTasks ← 1, checkpoints ← 0, order ← (empty)
1const seedTasks→ 1 = 1;2let checkpoints→ 0 = 0;3let order→ (empty) = "";45async function coordinate(count) {6 for (let i = 1; i <= count; i++) {7 await Promise.resolve(i);8 checkpoints += 1;9 order += i;10 }11 let outcome = "idle";12 if (checkpoints >= 3) {13 outcome = "drained";14 } else if (checkpoints === 2) {15 outcome = "checked";16 } else if (checkpoints === 1) {17 outcome = "primed";18 }19 console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} status=${outcome}`);20}2122coordinate(seedTasks1);async function coordinate(count)
2let checkpoints = 0;3let order = "";45async function coordinate(count1) {6 for (let i = 1; i <= count; i++) {for (let i = 1; i <= count; i++)
5async function coordinate(count) {6 for (let i1 = 1; i <= count1; i++) {7 await Promise.resolve(i1);8 checkpoints += 1;checkpoints ← 1, order ← 1, outcome ← idle
5async function coordinate(count) {6 for (let i = 1; i <= count; i++) {7 await Promise.resolve(i1);8 checkpoints += 1;9 order += i1;10 }11 let outcome→ idle = "idle";12 if (checkpoints >= 3) {13 outcome = "drained";14 } else if (checkpoints === 2) {15 outcome = "checked";16 } else if (checkpoints === 1) {17 outcome = "primed";18 }19 console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} status=${outcome}`);20}2122coordinate(seedTasks1);values this step1checkpoints1orderif (checkpoints === 1)
15 outcome = "checked";16} else if (checkpoints1 === 1) {17 outcome = "primed";18}console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} …
17 outcome = "primed";18 }19 console.log(`tasks=${count1} checkpoints=${checkpoints1} order=${order1} status=${outcomeprimed}`);20}outputtasks=1 checkpoints=1 order=1 status=primed
seedTasks ← 3, checkpoints ← 0, order ← (empty)
1const seedTasks→ 3 = 3;2let checkpoints→ 0 = 0;3let order→ (empty) = "";45async function coordinate(count) {6 for (let i = 1; i <= count; i++) {7 await Promise.resolve(i);8 checkpoints += 1;9 order += i;10 }11 let outcome = "idle";12 if (checkpoints >= 3) {13 outcome = "drained";14 } else if (checkpoints === 2) {15 outcome = "checked";16 } else if (checkpoints === 1) {17 outcome = "primed";18 }19 console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} status=${outcome}`);20}2122coordinate(seedTasks3);async function coordinate(count)
2let checkpoints = 0;3let order = "";45async function coordinate(count3) {6 for (let i = 1; i <= count; i++) {for (let i = 1; i <= count; i++)
pass 1 of 35async function coordinate(count) {6 for (let i1 = 1; i <= count3; i++) {7 await Promise.resolve(i1);8 checkpoints += 1;All 3 passes — pass 1 is the card above pass icheckpointsorder1 1 — — 2 2 2 12 3 3 3 123 checkpoints ← 1, order ← 1
5async function coordinate(count) {6 for (let i = 1; i <= count; i++) {7 await Promise.resolve(i1);8 checkpoints += 1;9 order += i1;10 }11 let outcome = "idle";12 if (checkpoints >= 3) {13 outcome = "drained";14 } else if (checkpoints === 2) {15 outcome = "checked";16 } else if (checkpoints === 1) {17 outcome = "primed";18 }19 console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} status=${outcome}`);20}2122coordinate(seedTasks3);values this step1checkpoints1orderoutcome ← idle
9 order += i;10}11let outcome→ idle = "idle";12if (checkpoints >= 3) {if (checkpoints >= 3)
10}11let outcome = "idle";12if (checkpoints3 >= 3) {13 outcome = "drained";14} else if (checkpoints === 2) {console.log(`tasks=${count} checkpoints=${checkpoints} order=${order} …
17 outcome = "primed";18 }19 console.log(`tasks=${count3} checkpoints=${checkpoints3} order=${order123} status=${outcomedrained}`);20}outputtasks=3 checkpoints=3 order=123 status=drained