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 |