Skip to content

Design decisions

Each record states a decision, why it was made, and what it costs. Records are not edited after the fact except to mark them superseded; a changed decision gets a new record. Proposals not yet decided live in docs/design.

# Decision Status
0001 One admission queue, one batch assembled at a time Accepted
0002 Verify with tests, model checking and mutation testing together Partly superseded by 0009
0003 Per-key batching with one batch in flight per key Accepted
0004 Dispatch a key's next batch when its previous one completes Accepted
0005 Pair per-key batching with a fenced, idempotent write Accepted
0006 Report outcomes per input; fail a batch only when it did not happen Accepted
0007 Bound batches and the waiting room by weight as well as count Accepted
0008 Deferred: sharding, lock-free admission, adaptive concurrency, and more Deferred
0009 Drop mutation testing Accepted
0010 Send an idle key's input directly; batch only keys with concurrent work Accepted
0011 A key's waiting inputs are sent in a pluggable order Accepted
0012 Package "read once, apply, conditional write" as FoldWrite Accepted
0013 Rename BulkDike to Ferry Accepted
0014 Package "commit, then project" as ProjectedWrite, marker in the store Accepted
0015 Project per entry: a projection may land for some entries, and Committed says why Accepted