Ingestion after RFC-026

August 6, 2026 ยท View on GitHub

Status: implemented decision (2026-08-06)

RFC-018 and RFC-026 are rejected as product architecture. Their documents are retained as historical design evidence, but they do not describe supported storage, recovery, API, CLI, or operator behavior.

Decision

High-rate ingestion is a transport profile over the ordinary graph writer, not a second durability subsystem. POST /graphs/{graph_id}/load/ndjson accepts a bounded raw application/x-ndjson graph batch with one strict logical node or edge envelope per nonblank line. data may be omitted and defaults to {}; IDs may be omitted and retain ordinary Load semantics (canonical @key node IDs or generated IDs). The boundary rejects duplicate members, unknown or physical fields, malformed values, and supplied noncanonical node IDs before calling the shared Load transaction machinery. That machinery commits the affected Lance tables through ordinary recovery-v9 and makes them visible in one __manifest publication. The request is acknowledged only after that graph commit is durable and visible.

There is no OmniGraph or Lance MemWAL firehose path, durable-but-not-visible waiting room, per-table stream lifecycle, token ledger, hidden stream column, or stream-specific recovery grammar. Producers that require durable acceptance before graph visibility should put an external graph-level log such as Kafka or Kinesis in front of bounded OmniGraph loads.

Why

The implemented MemWAL path optimized per-dataset acceptance while OmniGraph's unit of correctness is one graph commit spanning multiple datasets. It still needed a second coordinator for validation, cross-table visibility, token authority, replay, fold, correction, and lifecycle management. Benchmarking showed that this coordination dominated the path and left it orders of magnitude slower than direct load. The architecture bought a different acknowledgement semantic, not useful ingestion throughput.

The lower-liability design reuses the graph transaction that already owns validation, recovery, and visibility. It has one durability boundary and one source of truth.

Storage-format consequence

The current binary serves exactly internal manifest schema v6. V5 and v6 keep the useful stable-table-identity and exact non-null id fencing work. The unreleased v7-v19 development formats belonged to the rejected WAL design and are abandoned; they are never decoded, migrated, or reinterpreted by the v6 binary. The last released v0.8.x format is v4 and crosses to v6 by export/init/load rebuild.

Recovery sidecars remain at ordinary schema v9. Recovery-sidecar versions and manifest-schema versions are separate version spaces.

Historical material

  • RFC-018 records the original WAL proposal.
  • RFC-026 records the implemented experiment and its accumulated correctness machinery.
  • Firehose path specs retain the implementation sequence and acceptance evidence; they are not an active plan.