FA-74843 / CRDT convergence / Member archive
G-Counter gossip: repeated sync adds slots instead of taking the maximum · case 03
Counters grow every time the same state is gossiped again, and replicas never agree.
Case contract
Each replica keeps a grow-only map replica->count. ["inc", r, k] adds positive integer k to r's own slot; a non-positive k is rejected and counted. ["sync", src, dst] merges src into dst by pointwise maximum. Return per-replica values (sum of slots), the rejection count, and the first replica's sorted slots.
Why this case matters
State-based counters must converge under repeated, reordered and transitive gossip.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| repeated sync is idempotent | {"rejected": 0, "state": [["a", 12], ["b", 2]], "values": [14, 10, 0, 0]} | {"rejected": 0, "state": [["a", 4], ["b", 2]], "values": [6, 6, 0, 0]} | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗