--- id: MEM-12 family: GR-MEM level: extended profiles: [storage-api, runtime] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-mem/mem-12 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # MEM-12 — Concurrent buffer appends are serialized, and never fatal *GR-MEM (Part I) · level: extended · profiles: storage-api, runtime · added in 1.0* Two branches appending at once would each read the buffer before the other's turn and write back a version missing it. Serializing the read-modify-write prevents that, but losing a turn is worse than a rare interleave. ## The rule > **Normative.** This is the rule. > > 1. The read-modify-write of a conversation buffer is serialized per storage scope (scope, scope identifier and key together), so concurrent appends queue instead of overwriting one another. > > 2. The wait is bounded: an append that still cannot take its turn proceeds unserialized and emits a warning rather than failing or discarding the turn. > > 3. Serialization taken is always released. > > 4. Nothing more is claimed: not storage-level atomicity, and no protection against a writer that does not go through this path. ## Related rules - Names: MEM-7 --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.