# Public Roadmap And Known-Issues Closure Ledger > **Archived 2026-07-16:** This is a planning snapshot, not an executable queue. > The completed [1.0 release program](../v1-release/README.md) owns R0-R7. > Every undelivered direction is now `POST-1.0` and owned by the public > roadmap; no row in this file remains actionable for the release. ## Purpose This is the accountability map for clearing the current public Roadmap and Known Issues. Every public item must have exactly one disposition, one owning archived checkpoint, and objective evidence. A public row may not remain open only because it says “future”, “consider”, or “measure later”. Inventory snapshot for 2026-07-09: - 6 Open Source V1 rows; - 10 Near-Term Roadmap rows; - 14 Reserved/Future rows; - 2 substantive future-work sections outside the tables; - 21 active Known Issues; - 4 resolved Known Issues awaiting retirement. ## Status And Disposition | Value | Meaning | |---|---| | `ARCHIVED` | Historical state from before the 1.0 closure. | | `RESOLVED-RETIRE` | Behavior is shipped; verify release evidence and remove it from active Known Issues. | | `DEFER-TRIGGER` | Remove it from the active roadmap and record an explicit revisit trigger/non-goal. | | `CLOSED` | Evidence is linked and public docs have been updated. | | `POST-1.0` | Active roadmap work that does not block the 1.0 release. | Allowed final dispositions: 1. **Graduate:** move delivered capability into Roadmap Current Baseline and release notes, then remove its planned/reserved row. 2. **Retire:** remove a resolved limitation from active Known Issues after its regression and release evidence is durable. 3. **Reject:** remove the roadmap row and record the rationale/non-goal. 4. **Defer with trigger:** remove it from active work and record the exact event that reopens it. “Someday” is not a trigger. ## Closure Protocol For each row: 1. Start with the named failing/acceptance tests. 2. Implement through the owning plan/checkpoint. 3. Record exact commands, results, compatibility, migration, and performance evidence in `progress.md` or its linked report. 4. Update API/operations docs and release notes. 5. Graduate/retire/reject/defer the public row in the same checkpoint commit. 6. Run a drift check proving every remaining public item appears exactly once in this ledger. Add a repository check that inventories Roadmap table rows and `KI-NNN` IDs, compares them with stable IDs in this ledger, and fails on missing/duplicate coverage. Completed IDs remain in a short archive so identifiers are never reused. ## Version 1.0 Public-Surface Rows These rows are owned by R6 and R7 in the 1.0 release program. | ID | Public item | Owner | Closure evidence | Status | |---|---|---|---|---| | V1-DOC | Documentation | [Quality and operations](./06-quality-performance-operations.md) | Docs inventory, internal/external link check, no duplicate SSOT pages, current install/query/ops/security examples. | CLOSED | | V1-PKG | Packaging | [Quality and operations](./06-quality-performance-operations.md) | PG14-18 source/package/fresh-install/upgrade matrix green; PG19 joins only through PG19-0. | CLOSED | | V1-CI | CI/CD | [Quality and operations](./06-quality-performance-operations.md) | Required unit/static, pgrx, heavy, fuzz, low-memory, concurrency, and release jobs exist at their documented cadence and retain evidence. | CLOSED | | V1-EXAMPLE | Examples | Quality plan plus this ledger | Every maintained quick/realistic example executes in smoke CI and is linked from docs; stale examples are removed. | CLOSED | | V1-API | API clarity | GQL conformance and quality plans | Generated/drift-gated inventory covers exported SQL functions, GUCs, reserved options, SQLSTATEs, volatility/security context, permissions, and version support. | CLOSED | | V1-OPS | Operations | [Quality and operations](./06-quality-performance-operations.md) | Reproducible backup/restore, crash, concurrency, memory, package, generation rollback, and cleanup procedures pass release gates. | CLOSED | ## Engine Roadmap Rows | ID | Public item | Owner | Closure evidence | Status | |---|---|---|---|---| | RM-01 | Correctness and security | Checkpoints 0, 1A, 1C and [Rust boundary plan](./10-rust-type-safety-pgrx-boundaries.md) | KI-014 through KI-025 closed; two-role, multigraph, filter/value, mapped-soundness, error-guard, definer-path, relation-identity, transaction, publication, and failure tests green. | CLOSED | | RM-02 | Resource governance | [Memory governance](./01-memory-governance.md), checkpoints 1B, 3, 5 | Build/load/query/sync/compaction/analytics stay within hard envelopes or return typed resource errors. | CLOSED | | RM-03 | Out-of-core build | Memory/storage plans, checkpoint 2 | Forced-spill build completes below heap requirement and is equivalent at a declared source watermark. | CLOSED | | RM-04 | Full GQL conformance | [GQL plan](./02-gql-conformance.md), checkpoint 6 | Every applicable ISO GQL row is green and generated public docs do not overclaim. | POST-1.0 | | RM-05 | Planner/runtime | [Planner plan](./03-planner-runtime.md), checkpoint 5 | Costed streaming IR, spill, explain estimates/actuals, bounded pathological queries, and differential plan equivalence are green. The bounded subset required by the advertised 1.0 profile remains in R5. | POST-1.0 | | RM-06 | Storage and sync | [Storage plan](./04-projection-storage-sync.md), checkpoints 1C-3 | Identity-preserving vNext generations, watermark catch-up, mmap residency, bounded compaction, crash/CAS tests green. | CLOSED | | RM-07 | PostgreSQL 19 | [PG19 native property graphs](./08-postgresql-19-property-graphs.md), checkpoint 7 | PG19-0 through PG19-5 complete; native mapping needs no duplicate registration; PG14-18 remain green. | POST-1.0 | | RM-08 | Refactoring | [Refactor plan](./05-refactor-plan.md), [Rust boundary plan](./10-rust-type-safety-pgrx-boundaries.md), checkpoint 4 | Proposed mega-modules split with acyclic dependencies; canonical enums/newtypes and pgrx adapters replace stringly/raw boundaries; unsafe is allowlisted; SQL contracts and tests/benchmarks remain green. Release-risk subsets remain in R4. | POST-1.0 | | RM-09 | CI/CD rollout | V1-CI and [quality plan](./06-quality-performance-operations.md) | Each documented tier has a versioned workflow definition and retained release evidence. | CLOSED | | RM-10 | Competitive evidence | Planner/quality plans, checkpoint 8 | Reproducible checked scorecards publish p50/p95/p99, throughput, RSS/PSS, spill, build/load, sync lag, and semantics. | POST-1.0 | ## Reserved And Future Roadmap Rows | ID | Public item | Required task or decision | Closure evidence | Status | |---|---|---|---|---| | RF-01 | WAL-driven sync | Implement logical-decoding input behind the shared `SourceChange` boundary, or reject it after measured trigger-volume evidence. Cover commit/subtransaction ordering, slot restart, schema change, watermark recovery, backpressure, retention, permissions, and trigger-vs-WAL equivalence. | Supported-version crash/restart/equivalence/resource tests and operations docs; otherwise a recorded no-go and row removal. | POST-1.0 | | RF-02 | COPY build scanner | Implement only if it preserves snapshot, validation, ACL/RLS, error, cancellation, and memory semantics of bounded SPI scans; otherwise remove the reserved GUC after a documented benchmark/no-go decision. | Forced-low-memory equivalence and failure tests, or rejected disposition with GUC cleanup. | POST-1.0 | | RF-03 | Out-of-core build and maintenance | Same owner as RM-02/RM-03/RM-06. | All memory-plan acceptance gates green; graduate into Current Baseline. | POST-1.0 | | RF-04 | Relationship registration helper | Run a documented usability/support-ticket gate after relationship identity is fixed. Either ship an unambiguous helper for edge-table keys/endpoints/type or declare `graph.add_edge()` final and improve diagnostics/examples. | API/SQL contract tests if shipped, or evidence-based rejection and roadmap-row removal. | POST-1.0 | | RF-05 | Full ISO GQL | Same owner as RM-04. | Full applicable conformance ledger green; graduate. | POST-1.0 | | RF-06 | PostgreSQL SQL/PGQ | [PG19 plan](./08-postgresql-19-property-graphs.md) and separate SQL/PGQ registry. | Native catalog interop, `GRAPH_TABLE` differential results, security/DDL/version gates, clear acceleration boundary. | POST-1.0 | | RF-07 | openCypher compatibility | Generate a narrow compatibility matrix from shared GQL capability metadata; deterministic unsupported errors; no independent planner/runtime. Decide whether the compatibility facade is a permanent bounded product surface. | Docs never imply broad conformance; matrix/tests green; then retire limitation from Known Issues without requiring full openCypher. | POST-1.0 | | RF-08 | Online mutable overlays | Storage/sync plan and checkpoints 1C/3. | Transaction, cross-backend, crash, upgrade, rollback, bounded-memory, compaction, and source-of-truth gates green. | POST-1.0 | | RF-09 | Full GQL writes | GQL plan checkpoint 6. | Applicable ISO data-modification rows, set-based DML, savepoints, concurrency, RLS, rollback, and SQLSTATE gates green. | POST-1.0 | | RF-10 | Non-CSR mutable projection | Storage plan checkpoint 3 plus release gates. | Supported-version concurrency/crash/upgrade/rebuild/rollback suite, bounded maintenance, release docs, and benchmark signoff with no open P0 projection issue. | POST-1.0 | | RF-11 | pgVector embedding cache | Decide sidecar versus derived artifact section; define stable node-ID/generation keys, invalidation, source/RLS boundary, bounded residency, update/rebuild, and no source lookup in the hot loop. | Correctness/security tests and benchmark showing useful recall/latency or a rejected disposition. | POST-1.0 | | RF-12 | Full A* | Implement only after defining an admissible heuristic for an explicit cost model; otherwise keep semantic guidance approximate and remove A* from active roadmap. | Optimality differential tests against Dijkstra plus bound tests, or recorded no-admissible-model rejection. | POST-1.0 | | RF-13 | Additional analytics | Select algorithms by demonstrated demand; run them in quota-controlled workers with cancellation, progress, failure isolation, and bounded/checkpointed state. | Correctness oracle and memory/performance evidence per algorithm; never an unbounded OLTP call. | POST-1.0 | | RF-14 | Distributed execution | Keep as a non-goal until checkpoint 8 evidence shows a single-database ceiling that cannot be solved locally. | Revisit only on documented workload/scale trigger; otherwise move to deferred archive and remove the active row. | DEFER-TRIGGER | ## Other Roadmap Prose That Needs A Disposition | ID | Public item | Required task or decision | Closure evidence | Status | |---|---|---|---|---| | RP-01 | Semantic-guided search | Define an explicitly approximate `guided_path` contract, signal normalization/weights, degree/type bias, deterministic ties, RLS-safe candidates, beam/work/memory caps, and result diagnostics. | Recall/latency/resource benchmark against structural baselines, or reject until a user workload exists. | POST-1.0 | | RP-02 | Arena allocation | Profile bounded parser/query scratch allocation after streaming runtime lands. Adopt only if allocator overhead is material; never present it as graph compaction. | Before/after profile and unchanged budget/failure behavior, or remove the speculative paragraph. | POST-1.0 | ## Known-Issues Closure Resolved rows remain here only until their release evidence is durable. They should not stay indefinitely on the active Known Issues page. | ID | Owner/disposition | Evidence required to remove from active Known Issues | Status | |---|---|---|---| | KI-001 | Retire hardened write recheck item | Existing two-session stale-write gates green on release matrix; resolution retained in release notes. | RETIRED | | KI-002 | Retire transaction-created-node item | Existing read-your-writes and rollback tests green on release matrix; resolution retained in release notes. | RETIRED | | KI-003 | Move parser fuzzing from issue to permanent quality policy | Fuzz targets build, seed corpus runs in scheduled/release environment, and quality docs own ongoing campaigns. | RETIRED | | KI-004 | Scheduler decision under V1-OPS | Either ship a supervised per-database built-in scheduler with preload/auth/crash/quota tests, or declare external scheduling the supported final model with complete setup/health docs. | POST-1.0 | | KI-005 | Checkpoints 3, 5, 8 | Representative dirty-overlay benchmarks identify and fix material regressions, or demonstrate current performance within an approved threshold; retain regression gate. | POST-1.0 | | KI-006 | RF-07 openCypher bounded-surface decision | Generated compatibility matrix, deterministic rejection tests, and explicit non-conformance docs make the limitation a product boundary rather than an issue. | POST-1.0 | | KI-007 | RM-07/RF-06 and [PG19 plan](./08-postgresql-19-property-graphs.md) | PG19-0 through PG19-5 and SQL/PGQ registry/differential gates green; release notes preserve the change. | POST-1.0 | | KI-008 | RM-08, [refactor plan](./05-refactor-plan.md), and [Rust boundary plan](./10-rust-type-safety-pgrx-boundaries.md) | Named mega-modules are split at cohesive boundaries; RUST-2, RUST-3, and RUST-6 close stringly state, raw-ID, pgrx-adapter, and unsafe-allowlist gaps; SQL behavior remains stable. | POST-1.0 | | KI-009 | Checkpoints 0/6 and [quality plan](./06-quality-performance-operations.md) | Enumerated write SQLSTATE, constraint, RLS, savepoint, concurrency, and rollback weak paths have permanent unit/pgrx/heavy tests. | RETIRED | | KI-010 | Tooling maintenance task | In a Nix-capable environment update both lock inputs, build the dev shell, run documented Rust/PostgreSQL/pgrx checks, and record versions; then retire. | POST-1.0 | | KI-011 | Retire serializer migration item | Upgrade/rebuild documentation and corrupt/trailing-byte regression remain green; historical migration stays in release notes. | RETIRED | | KI-012 | RM-02/RM-03, memory plan, checkpoints 1B/2 | Read-only no longer masks over-budget build; stale/no stats and wide filters spill or fail before OOM under enforced RSS thresholds. | RETIRED | | KI-013 | RM-02/RM-05/RM-06, checkpoints 1B/3/5 | mmap load, paths, GQL, sync, projection reads, compaction, and analytics all use hard byte/work budgets and pathological stress gates. | RETIRED | | KI-014 | RM-01 checkpoint 1A | Two-role tests prove hidden nodes/relationships cannot affect coordinates, topology, counts, paths, existence, hydration, or error side channels. | RETIRED | | KI-015 | RM-01/RM-06 checkpoints 1A/2 | Stable source relationship identity preserves parallel edges through artifact, overlays, paths, writes, rollback, sync, hydration, and compaction. | RETIRED | | KI-016 | RM-01 checkpoint 1A | Same-named filter columns on different graph/table/attributes remain distinct through build, pushdown, persistence, sync, and load. | RETIRED | | KI-017 | RM-01/RM-06 checkpoint 1C | Two PostgreSQL backends cannot fork/overwrite a generation; lock/reload/CAS/crash tests preserve one current manifest. | RETIRED | | KI-018 | RM-01/RM-06 checkpoints 1C/2 | Injected write/checksum/mmap validation/catch-up failure leaves the old generation current and queryable. | RETIRED | | KI-019 | RM-01/RF-09 checkpoints 1A/6 and QA-01 | Mutable GQL writes support PostgreSQL savepoint rollback/release through per-subtransaction delta frames, with READ COMMITTED, REPEATABLE READ, and SERIALIZABLE two-session gates. | RETIRED | | KI-020 | RM-01 and RUST-00A through RUST-00B | Out-of-range/corrupt mapped-layout tests cannot reach unchecked pointer arithmetic; only an owning validated layout constructs stores; Miri/in-memory backing plus PostgreSQL sanitizer matrix is green. | RETIRED | | KI-021 | RM-01 and RUST-00C | Rust destructors unwind through the supported pgrx guard before PostgreSQL ERROR; SQLSTATE/diagnostic behavior is versioned and exact on every supported major; no deep raw `errfinish()` remains. | RETIRED | | KI-022 | RM-01/RM-06 and RUST-00D/RUST-5 | Every filter value domain roundtrips through build, sync, persisted segment, restart, and reload; old/new format behavior is documented and differential results match. | RETIRED | | KI-023 | RM-01 and RUST-00E | Every security-definer function has the vetted `proconfig` search path and shadow-schema attack tests prove catalog/function/operator resolution cannot be redirected. | RETIRED | | KI-024 | RM-01/RM-06 and RUST-00F | OID-stable relation identity survives rename/search-path change, serializes with concurrent DDL, and fails closed on drop/recreate across every supported major. | RETIRED | | KI-025 | RM-01/RM-08 and RUST-1 | Failure injection proves background-worker transactions do not commit unintended partial state or leave stuck jobs; intentional progress checkpoints are documented and tested. | RETIRED | | KI-026 | RM-01/RM-06 | Durable post-build node identity, cross-backend lifecycle, writer horizons, and publication locks remain exact across every supported PostgreSQL major. | RETIRED | ### KI-013 Subsystem Gates KI-013 closed after every child became a permanent release gate: - [x] **KI-013A load:** preflight plus mmap inbound/filter metadata; failure keeps the old backend engine; repeated loads stay within private-memory cap. - [x] **KI-013B query/path:** candidates, degree, expansions, frontier, paths, hydration, sort, group, DISTINCT, result bytes, and interrupts are bounded. - [x] **KI-013C sync ingest:** input and normalized deltas obey byte/row/disk budgets and preserve watermark/idempotency under crash. - [x] **KI-013D projection reads:** one pinned mapped snapshot per generation; no per-query full-file decode/map rebuild. - [x] **KI-013E compaction:** source-range merge stays bounded and equivalent to clean rebuild across repeated cycles. - [x] **KI-013F analytics:** whole-graph work is worker-isolated, quota-bound, cancellable, observable, and cannot OOM an OLTP query backend. ### Explicit Orphan Work Packages These tasks had no sufficiently explicit owner in the original plans: #### OPS-01 Maintenance Scheduler Decision - Either implement a supervised per-database scheduler with enable/disable, cadence, admission, no-duplicate two-backend behavior, crash/restart idempotency, role/database context, and PG14-19 tests; - or declare `pg_cron`/external scheduling the final supported contract, remove the built-in promise, and prove setup/health/failure docs are sufficient. Closes KI-004. #### PERF-01 Dirty Projection Benchmark Benchmark base degree, segment depth, tx inserts/deletes/tombstones, directional reads, weighted/unweighted reads, and concurrency. Record correctness checksum, allocations, p95/p99, and an approved regression threshold. Closes KI-005 when optimizations land or evidence shows no material problem. #### QA-01 GQL Write Failure Matrix For every supported write cover readonly/unmapped/type failures, constraints, triggers, ACL/RLS, stale/disappeared matches, cancellation, rollback, and savepoints. Verify both PostgreSQL rows and projection/transaction deltas after failure, with stable SQLSTATE assertions. Closes KI-009 and contributes to KI-019. QA-01 is complete. The permanent PG14-18 matrix covers the supported write families, SQLSTATE and rollback behavior, transaction isolation, durable projection visibility, and deterministic concurrent-writer races. #### TOOL-01 Nix Input Refresh In a Nix-capable environment update `nixpkgs` and `rust-overlay`, run `nix flake check`/`show`, enter and verify default plus PG14-18 shells, check Rust/cargo-pgrx/`PG_CONFIG`, run a representative build/test, and archive exact revisions/commands. Assign recurring freshness ownership. Closes KI-010. #### META-01 Public Backlog Drift Check Add a CI script that extracts active Roadmap rows and every `KI-NNN` ID, checks for exactly one corresponding ledger ID/status, rejects duplicate/open orphan rows, and requires closed IDs to appear in the archive/release evidence. Closes the traceability gap that allowed public work to exist without an executable work item. ## “Public Backlog Clear” Gate The current Roadmap and Known Issues are clear only when: - every 1.0 item above is `CLOSED` or `RETIRED`, and every undelivered direction is `POST-1.0` with public-roadmap ownership; - every delivered roadmap row has graduated into Current Baseline and release notes; - every resolved KI row has left active Known Issues and its regression remains in CI; - no roadmap row, reserved feature, KI ID, or substantive future-work section is missing from the drift inventory; - `progress.md` points to the next remaining stable ID rather than duplicating its task text; - all checkpoint compatibility, docs, package, test, memory, security, and benchmark evidence is archived. This gate clears the existing public backlog; new discoveries receive new stable IDs rather than silently extending a closed item.