# 1.0 Production Readiness Plan ## R1: Correctness, Security, Identity, And Transactions - [x] Finish parallel-aware relationship compaction without collapsing distinct source rows that share endpoints, type, and direction. - [x] Carry stable relationship identity through every advertised read, write, sync, hydration, visibility, and recovery path. - [x] Complete relationship-row ACL/RLS checks for nodes, relationships, paths, scalar identities, aggregates, existence, and hydration-disabled output. - [x] Finish table-qualified filter identity and remove ambiguous internal name-only lookup paths. - [x] Add subtransaction/savepoint delta frames with rollback and release tests. - [x] Complete READ COMMITTED, REPEATABLE READ, SERIALIZABLE, constraint, trigger, partition, composite-key, and concurrent-write coverage for the advertised write profile. The ordered evidence work is tracked in [QA-01](./qa-01-write-correctness-matrix-plan.md). - [x] Complete supported-major evidence for mapped safety, guarded PostgreSQL errors, definer search paths, relation identity, and exact durable values. - [x] Create the machine-readable 1.0 capability/conformance registry and make documentation drift fail CI. ## R2: Resource Containment And Safe Publication - [x] Centralize byte, work, row, disk, and time policy with checked unit types and fallible reservations. - [x] Enforce preflight plus runtime breakers for build, load, queries, sync, compaction, and advertised analytics. - [x] Prefer bounded adaptive batches and spill; return a stable typed resource error before backend or container OOM. - [x] Add production-shaped RSS/PSS gates for stale statistics, many filters, high-cardinality values, parallel edges, supernodes, `LIMIT 1`, concurrent backends, auto-load, and compaction. - [x] Replace process-local publication protection with graph-scoped cross-backend locking and generation compare-and-swap. - [x] Stage, fsync, validate, catch up, and atomically switch generations while retaining the previous serving generation on every failure. - [x] Add reader pins, rollback retention, bounded garbage collection, and competing-publisher/crash/fault-injection tests. ## R3: Bounded Storage, Build, Sync, And Compaction Detailed design and acceptance gates are owned by [Memory Governance And Out-Of-Core Execution](../full-graph-engine/01-memory-governance.md); the earlier [focused out-of-core build sketch](../out-of-core-build-plan.md) is supporting context where it does not conflict with that authoritative plan. - [x] Build from one coherent PostgreSQL snapshot and publish a declared source watermark after bounded catch-up. - [x] Use bounded runs and fixed-fanout external merge for nodes, relationships, filters, resolution, inbound, and outbound data. - [x] Stream validated mmap-ready artifact sections without retaining a second complete owned graph. - [x] mmap inbound CSR and supported filter/dictionary sections while charging private metadata and page-cache-sensitive residency separately. - [x] Pin one immutable projection snapshot per query/generation. - [x] Keep sync ingestion, normalization, manifest publication, and range compaction within enforced byte/row/disk limits. - [x] Prove in-memory and spill builds are equivalent and repeated build/load/sync/compact cycles do not leak memory or files. ## R4: Release-Risk Refactoring - [x] Complete canonical enum/newtype, checked-conversion, pgrx-adapter, exact value, and unsafe/raw-FFI allowlist work needed by R1-R3. - [x] Split publication, generation, resource policy, artifact validation, and compatibility ownership where current coupling prevents isolated tests. - [x] Keep mechanical moves separate from behavior changes and preserve SQL, SQLSTATE, artifact, and configuration contracts. - [x] Execute the playground/scripts overhaul in [04-playground-and-scripts.md](./04-playground-and-scripts.md). - [x] Re-evaluate broader module or crate extraction after 1.0; do not make wholesale decomposition a release gate without concrete risk evidence. ## R5: Supported Query And Write Profile - [x] Freeze the exact SQL and GQL profile advertised for 1.0. - [x] Ensure every advertised capability has parser/binder/executor, diagnostics, ACL/RLS, transaction, resource, positive, negative, and docs evidence as applicable. - [x] Make unsupported GQL and compatibility syntax fail deterministically with guidance; do not imply full ISO GQL or broad openCypher conformance. - [x] Bound all operators used by the supported profile, including path search, aggregate, distinct, sort, hydration, and write rechecks. - [x] Keep PostgreSQL DML authoritative for every graph write and reject unmapped writes with actionable mapping guidance.