Every bar, lock flash and wait is a measured event: mem's journal records each transaction with its session and its second, and each session's database records when it started, ended and slept. The replay keeps their order and spacing, sped up so the slower side takes about 32 seconds.
The lock. mem is one Gno realm on disk with one lock file. Every call (mem.Next(), mem.Pop("…")) takes the lock, runs, appends to the journal and lets go: one transaction at a time, so two sessions asking at once take turns and step into different todos.
The waits. A mem.Next() with nothing free, while another session works on what it needs, sleeps on a named pipe that every change to mem rings, and on the other session's turn ending. No timer, no polling, no retry loop.
The plan. Nine small Go packages in three groups, a function or two each with its table test, so each todo is tens of lines of real code: text (Roman numerals, word wrap, a CSV line), calc (an expression evaluator, infix to RPN, fractions) and data (an LRU cache, merging intervals, a topological sort). The same plan, seeded into mem, for both sides.
The mistakes are in the times. On a long run the model sometimes pops a todo right after entering it, with nothing written. mem refuses that pop (a red tick), and the session's final checks catch the rest, which it then redoes. Both sides pay for these mistakes in the times shown.
The server.
Same tree, same result: each run ends with every todo done once and the same tests passing, checked by the scenario harness.