> ## Documentation Index
> Fetch the complete documentation index at: https://docs.helix-db.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Disjoint membership

# Shared membership writes

Normal writer startup uses checked disjoint membership merges immediately. There
is no activation API, stored mode, or exclusive fallback. This applies to node
labels, topology, node and edge equality indexes, and search membership rows.

Each existing flush emits one merge per changed physical row. Its conflict tokens
contain every changed member, including removals. Adjacency tokens include the
direction, so incoming and outgoing membership for the same neighbor are distinct.
Checked staging validates the existing values before it stages the batch. It does
not turn those validation reads into ordinary row observations. Explicit query
reads and ranges still conflict, as do overlapping tokens, entity-record writes,
unique ownership checks, and real graph dependencies.

## Storage contract

The current and maximum supported index storage version remain **4**. Canonical
values and the existing `HLXRBM2` / `HLXADJ2` membership-delta codecs are unchanged.
WAL replay, partial merging, and compaction must retain support for those operands.
No index rebuild or new storage migration is needed for this unreleased change.

**Do not open a database containing these delta operands with a pre-delta binary.**
Version 4 does not distinguish those binaries. Mixed-version operation and rollback
to a binary without these decoders are not supported. This is an explicit
development-only compatibility boundary, not an automatic upgrade protocol.

New databases initialize at version 4. Existing supported version-4 databases open
without conversion. Experimental version-5 databases return the existing
unsupported-version error on reader, embedded-writer, and managed-failover open;
startup must not lower or remove their marker. Managed bootstrap still refuses
any nonempty store before version dispatch. The
retired activation key tag `0x0C` and value tag `0x08` are not reused. Malformed
metadata checks, managed-writer fencing, and existing version-2/3 migrations to
version 4 remain in place.

The change does not alter cascade ordering, intermediate topology flushes,
`drop_nodes`, token containers, or SlateDB.
