SkeinDB True Status Matrix¶
Last updated: 2026-06-13
This is the short truth surface. It is intentionally not a changelog. Use it to answer: what is real today, what is partial, and what should not be claimed yet.
Current Truth Snapshot¶
- Compatibility: SkeinDB does not claim full MySQL or PostgreSQL compatibility. MySQL coverage is broad and corpus-backed; PostgreSQL support is a partial PG v3 baseline. See docs/MYSQL_COMPAT.md and docs/PG_COMPAT.md.
- Core roadmap: docs/PROJECT_BACKLOG.md has 140 done / 0 open top-level roadmap checkboxes. That does not mean every phase is production-complete; several phases remain partial or prototype-strength.
- Research roadmap: docs/RESEARCH_BACKLOG.md has 109 done / 0 open research checkboxes. R01-R17 and R20 are hardened; R18 and R19 remain prototype implemented.
- Latest verified slice: PostgreSQL CSV
COPYnow honors single-byteESCAPEmarkers in addition toQUOTEacross export and import on the live PG path, while the recent catalog parity work still includespg_catalog.pg_descriptionalongsidepg_catalog.pg_am.
Do Not Overclaim¶
- No "100% MySQL compatibility" or "100% PostgreSQL compatibility" claim.
- No production-complete LSM/MANIFEST/WAL storage claim for the whole engine.
- No claim that CDC has external sinks, cluster-wide fanout, broader predicates, or binary/columnar event encodings.
- No claim that R18 performance replay or R19 Wasm query operators are hardened.
- No claim that distribution packaging is fully published until signing/release secrets are configured.
Current Partial Areas¶
| Area | Truth today | Remaining gap |
|---|---|---|
| Storage core | The core on-disk primitives exist and are unit/integration tested in isolation: typed MANIFEST (append + replay), WAL (committed-only recovery + torn-tail truncation), RowSeg/RV1 + FilePtr MVCC chains, ValueStore + DELTA + learned indexes, Run/LSM blocks, rowdir, encryption envelopes, and the Wasm catalog/UDF sandbox (crates/skeindb-core/src/{manifest,wal,rowseg,valuestore,run,rowdir,mvcc,encrypted_valuestore}.rs). The live engine persists rows via JSON/segment (.rseg) snapshots with full in-memory table materialization (engine.rs open_with_storage_mode, persist_table, storage_stats_snapshot); Engine::core_lsm_files_active reports whether the core MANIFEST + wal-*.log files are present as observability for this gap. Storage-mode decisions are centralized in storage_mode.rs. |
The core primitives are not yet wired as the primary always-on row-persistence path: no MANIFEST/WAL/LSM-backed primary writes, no streaming/large-table reads (tables fully materialize in memory), and crash safety between persists is best-effort. |
| PostgreSQL compatibility | PG listener, startup/auth, many SQL rewrites, catalog probes (pg_database, pg_namespace, pg_am, pg_description, pg_proc, pg_type, pg_settings, pg_stat_activity etc via virtual tables), COPY text/csv/binary with NULL / HEADER / HEADER MATCH / DELIMITER / QUOTE / ESCAPE, parenthesized and legacy bare WITH CSV|TEXT|BINARY format aliases, extended query (Parse/Bind/Execute), binary params for common OIDs, SQLSTATE mapping, and corpus coverage exist. Code: pg_wire.rs (framing, auth, COPY encode/decode), server.rs PG paths + virtual catalog, cluster_rpc.rs pg_*_roundtrip tests, tests/compat/pg_corpus.sql. Micro D (2026-06-11 prior + this round): pg_class + new pg_stat_user_tables (empty typed virtual table) in server.rs catalog handler + sql_exec test coverage (SELECT * returns typed cols + 0 rows). |
Not full PostgreSQL; broader COPY option coverage beyond current (e.g. more formats, OIDs, portal suspension), wider catalog parity (more pg_* tables), production driver matrices (Django, Rails, full psycopg etc.), broader dialect. |
| CDC/changefeeds | Local table/query subscriptions work with polling, SSE, WebSocket, durable cursors, row images, objects_json/plain_json, op/pk/range/column filters, pause/resume, backpressure, and resnapshot signaling. Dependency expansion over views/CTE/union/set-ops. External sink config struct exists. Code: engine.rs cdc_* (event delivery, project, subscriptions v9), server.rs CDC RPC + sink drain. Tests in cluster_rpc and engine. (D micro also touches shared server PG catalog surface used by CDC consumers.) |
Broader predicates, binary/columnar encodings, external sink connectors implementation, cluster-wide fanout remain. |
| Compaction scheduler | Live policy/status controls, safe-mode write backpressure, and a pressure-driven worker exist. | Deeper multi-level/file-count compaction across many live tables remains future storage-engine work. |
| Distribution | Debian metadata, Homebrew formula, and tag-driven release workflow scaffolding exist. | Signed apt publication depends on configured secrets and release operations. |
| R18 performance replay | Replay bundles carry performance profiles, deterministic replay rehydrates cache hints + runs variance, timing injection primitive + exercised in replay run + cache/LSM stats re-compute on rehydrate now implemented. Evidence: engine::tests::replay_timing_injection_simulates_deterministic_pacing, engine::tests::replay_pacing_applies_injected_delays_for_replay_exec_fidelity (new unit for pacing), engine::tests::replay_bundle_run_rehydrates_cache_hints (enhanced), engine::tests::replay_bundle_export_import_run_roundtrip, server::tests::maintenance_replay_run_rehydrates_cache_hints, cluster_rpc t183/t188 (updated for replay/RPC + timing pacing assert). |
Timing injection wired to simple pacing mechanism (apply_simulated_pacing called in maintenance_replay_run internal exec path using injected delays for deterministic sim); exercised in unit + RPC integration; stronger cache/LSM/timing fidelity. CI compare harness pre-exists in main.rs. Gaps: full real pacing in runner exec + .github CI distribution gates. |
| R19 Wasm query operators | Compile/inspect/run/perf/edge-package surfaces exist with generated fixed-width Wasm artifacts and host fallback. | Production SIMD-lowered codegen and hardened operator breadth are not claimed. Micro (2026-06-11): engine test now explicitly exercises wasm_plan_inspect + wasm_plan_run (host dispatch to execute_select) + row result parity for host_interpreted_v1 fallback artifact (str projection over inserted data). Evidence: engine::tests::wasm_plan_compile_falls_back_for_unsupported_types (expanded). |
Recent Verified Changes¶
- 2026-06-13: Removed dead "hardening" scaffolding that was carried only to be cited as evidence: the
scan_rows_streaming_stubandselect_streaming_row_path_stub/primary_row_extension/should_bootstrap_core_lsm_for_replay_materializeno-op helpers, the discardedManifestReader::replay_state()andEncryptedValueStore::new()constructions instorage_stats_snapshot, and the replay-workspace RowSeg/MANIFEST/WAL bootstrap whose output nothing read back. The genuinely-wired pieces are retained and tested:storage_mode.rsmode decisions (uses_segment/expects_core_lsm_files/lsm_pipeline_files_active),Engine::core_lsm_files_active+ itscore_lsm_activestat, the compaction worker'suses_segment-based mode checks inserver.rs, and the real replay export/import/run roundtrip. Evidence:engine::tests::storage_mode_decision_helpers,engine::tests::core_lsm_files_active_validates_manifest_header_with_core_primitive,engine::tests::replay_bundle_export_import_run_roundtrip,cluster_rpc::t183_replay_bundle_export_import_run_roundtrip. No on-disk format change;cargo fmt/clippy -D warnings/test --allclean. - 2026-06-11: R18 Performance Replay micro-slice (pacing wiring + fidelity): wired
inject_replay_timinginto simple pacing mechanism (apply_simulated_pacingusing delays for deterministic sim inmaintenance_replay_runinternal replay exec; no real sleeps/IO). Added new unit testengine::tests::replay_pacing_applies_injected_delays_for_replay_exec_fidelity; updatedengine::tests::replay_bundle_export_import_run_roundtrip+replay_bundle_run_rehydrates_cache_hintscomments +cluster_rpc::t188_replay_run_rehydrates_cache_hints(integration exercising replay/RPC path + timing pacing assert on report). Evidence added to R18 row. Net <<200 LOC (small AGENTS slice), unit+RPC integration tests, no on-disk/format change. Deep dive done (engine replay fns, main CLI compare, tests, profiles). Followed by cargo fmt/clippy/test (replay), matrix+backlogs update, site rebuild (python3 scripts/build_docs_site.py), hard self code review, commit (ref review/matrix/R18/AGENTS), push. Per AGENTS.md. Gaps remain: full pacing in runner + CI workflow gates. - 2026-06-11: R18 Performance Replay micro-slice (timing injection + fidelity): added
inject_replay_timingprimitive (deterministic delay sim from profile p50/p95/p99 for pacing/variance) + exercised unconditionally inmaintenance_replay_run(plus storage_stats_snapshot post-rehydrate for LSM fidelity) + new unit testengine::tests::replay_timing_injection_simulates_deterministic_pacing+ enhancements/asserts in roundtrip + cache_hints tests. Covers timing injection gap + strengthens cache/LSM recon; pre-existing CI harness (replay compare + thresholds in main.rs) referenced. Net <50 LOC, unit+integration tests, no format change. Followed by fmt/clippy/test (replay-filtered + full relevant), matrix+backlog update, site rebuild, hard review, commit (ref review/matrix/R18). Per AGENTS. Gaps now: full injection pacing during exec + CI workflow distribution gates. - 2026-06-11: R19 Wasm query operators (host fallback hardening micro-slice): extended
engine::tests::wasm_plan_compile_falls_back_for_unsupported_typesto insert rows + callwasm_plan_inspect+wasm_plan_run(exercises theif artifact.execution == ... GENERATED else execute_selectdispatch inwasm_plan_runforhost_interpreted_v1artifacts) and assert projected row results. This adds concrete coverage for compile/inspect/run/perf/edge-package surfaces on the host fallback path (in addition to generated_filter_project_v1). Still prototype: SIMD-lowered codegen and broader operator support (joins etc) remain gaps. Updated TRUE_STATUS_MATRIX + RESEARCH_BACKLOG; followed by fmt/clippy/test/site-rebuild/review/commit (ref review/matrix/R19). Per AGENTS: tiny, tests included, no on-disk/format change. - 2026-06-11: ABCD round complete (this entry): A (replay_state in stats + R18 interleave), B (lsm_pipeline_files_active extract), C (EVS in stats path), D (pg_stat_user_tables catalog). See new top Recent bullet + table rows. Per AGENTS tiny slices + tests + matrix/backlog/site + review + fmt/clippy/test + commit/push.
- 2026-06-11: Full workspace verification + small storage hardening: added
Engine::core_lsm_files_active()+EngineStorageStats.core_lsm_active(engine.rs) with test evidence in dedup_stats_roundtrip_across_restart. Confirmed core LSM files (MANIFEST + wal-*.log) for non-JSON modes. Matrix Storage core / Phase 1 gap description + evidence updated with code locations and this observability step toward primary pipeline. - 2026-06-11: A/B micro (Storage Pipeline + Monolith Split): added
TableStorageMode::expects_core_lsm_files()helper in storage_mode.rs (B: decision logic centralized in extracted module per reviewer rec, avoiding dup in engine/server); refactoredEngine::core_lsm_files_active+ its test to useManifestReader::open(andManifestWriterfor test setup) from core (A: more of the Manifest pipeline exercised in primary engine stats/open/restart path for gap tracking; read-only, no row persist/format change). Updated testengine::tests::core_lsm_files_active_validates_manifest_header_with_core_primitive+ exercised via dedup_stats_roundtrip_across_restart. Interleaved R18 start (R18 replay uses storage_stats_snapshot for post-rehydrate LSM fidelity; this strengthens the observability used there). Per AGENTS: small net change, tests, fmt/clippy/test verified, matrix update. No ON_DISK change. - 2026-05-28: PostgreSQL CSV
COPYnow honors single-byteESCAPEmarkers on supported CSV forms, allowing custom quote and escape characters to round-trip values containing both characters overCOPY ... TO STDOUTandCOPY ... FROM STDIN. Coverage:server::tests::pg_copy_csv_encode_and_parse_rows_handle_custom_escape_marker,server::tests::pg_parse_copy_to_stdout_recognizes_table_and_query_sources,server::tests::pg_parse_copy_from_stdin_and_decode_rows,cluster_rpc.rs::pg_simple_query_copy_to_stdout_with_csv_escape_roundtrip,cluster_rpc.rs::pg_simple_query_copy_from_stdin_with_csv_escape_roundtrip. - 2026-05-28: PostgreSQL catalog parity now includes
pg_catalog.pg_descriptionas an empty but correctly typed virtual table, soSELECT * FROM pg_catalog.pg_descriptionreturns PostgreSQL-shaped row descriptions and zero rows over bothsql.execand the live PG listener. Coverage:server::tests::sql_exec_pg_catalog_virtual_tables_roundtrip,cluster_rpc.rs::pg_simple_query_pg_catalog_virtual_tables_roundtrip. - 2026-05-28: PostgreSQL CSV
COPYnow honors single-byteQUOTEmarkers across export and import on supported CSV forms, including round-tripping quoted delimiters, empty strings, and doubled custom quote characters. Coverage:server::tests::pg_copy_csv_encode_and_parse_rows_handle_custom_quote_marker,server::tests::pg_parse_copy_to_stdout_recognizes_table_and_query_sources,server::tests::pg_parse_copy_from_stdin_and_decode_rows,cluster_rpc.rs::pg_simple_query_copy_to_stdout_with_csv_quote_roundtrip,cluster_rpc.rs::pg_simple_query_copy_from_stdin_with_csv_quote_roundtrip. - 2026-05-28: PostgreSQL catalog parity now includes
pg_catalog.pg_am, exposingheapandbtreeaccess-method rows with stable OIDs aligned to the currentpg_class.relamvalues over bothsql.execand the live PG listener. Coverage:server::tests::sql_exec_pg_catalog_virtual_tables_roundtrip,cluster_rpc.rs::pg_simple_query_pg_catalog_virtual_tables_roundtrip. - 2026-05-28: PostgreSQL text/csv
COPYnow honors customNULL '...'markers across export and import, quotes literal"NULL"CSV cells so they round-trip distinctly from unquoted nulls, and enforces CSVHEADER MATCHonCOPY ... FROM STDINby rejecting mismatched header names before insert assembly. Coverage:server::tests::pg_copy_text_encode_and_parse_rows_handle_custom_null_marker,server::tests::pg_copy_csv_encode_and_parse_rows_handle_custom_null_marker,server::tests::pg_parse_copy_to_stdout_recognizes_table_and_query_sources,server::tests::pg_parse_copy_from_stdin_and_decode_rows,cluster_rpc.rs::pg_simple_query_copy_csv_with_custom_null_string_roundtrip,cluster_rpc.rs::pg_extended_query_copy_csv_with_custom_null_string_roundtrip,cluster_rpc.rs::pg_simple_query_copy_from_stdin_with_csv_header_match_rejects_mismatch. - 2026-05-28: PostgreSQL
COPYnow accepts PostgreSQL-styleWITH (CSV|TEXT|BINARY)format aliases inside COPY option lists, and the live PG harness now explicitly covers extended-query CSVHEADER MATCHmismatch rejection. Coverage:server::tests::pg_parse_copy_to_stdout_recognizes_table_and_query_sources,server::tests::pg_parse_copy_from_stdin_and_decode_rows,cluster_rpc.rs::pg_simple_query_copy_to_stdout_with_csv_keyword_format_alias_roundtrip,cluster_rpc.rs::pg_extended_query_copy_from_stdin_with_csv_header_match_rejects_mismatch. - 2026-05-28: PostgreSQL
COPYnow also accepts legacy bareWITH CSV|TEXT|BINARYsyntax, and the live PG harness covers keyword-alias copy-in roundtrips in addition to copy-out. Coverage:server::tests::pg_parse_copy_to_stdout_recognizes_table_and_query_sources,server::tests::pg_parse_copy_from_stdin_and_decode_rows,cluster_rpc.rs::pg_simple_query_copy_from_stdin_with_csv_keyword_format_alias_roundtrip,cluster_rpc.rs::pg_simple_query_copy_to_stdout_with_legacy_with_csv_header_roundtrip. - 2026-06-01: PostgreSQL binary
COPY ... FROM STDINnow round-trips over both simple-query and extended-query flows, decoding the standard PostgreSQL binary stream (signature, flags, tuple framing, per-field values) and committing rows through the shared write path. Coverage:server::tests::pg_parse_copy_from_stdin_and_decode_rows,cluster_rpc.rs::pg_simple_query_copy_from_stdin_with_binary_format_roundtrip,cluster_rpc.rs::pg_extended_query_copy_from_stdin_with_binary_format_roundtrip. - 2026-05-27: PostgreSQL
split_part(text, delimiter, n)now works through the shared evaluator with positive and negative field indexes, returnstextmetadata on the PG wire path, and is listed inpg_catalog.pg_proc. Coverage:engine::tests::eval_pg_split_part,server::tests::sql_exec_pg_catalog_virtual_tables_roundtrip,cluster_rpc.rs::pg_simple_query_split_part_roundtrip. - 2026-05-27:
stats.snapshot.alertsnow supports settings-backed route matching plusstats.snapshot-driven HTTP(S) webhook delivery for newly active matched alerts, exposing per-alert route delivery counters and top-levelrouting.delivery.{delivered,suppressed,failed,unsupported}metadata. Coverage:server::tests::stats_snapshot_routes_operator_alerts_from_settings,server::tests::stats_snapshot_delivers_http_alert_routes_once_per_active_alert. - 2026-05-27: encryption profile metadata and the redacted audit ring now persist across reopen in
data/encryption.json, preservingmode/active_key_idstatus without persisting master keys. Coverage:engine::tests::encryption_status_persists_profiles_and_audit_across_restart. - 2026-05-29: encrypted-at-rest cell payloads are now wired through the engine row-persistence path. When a database has an active encryption profile (
ENC_RANDOM/ENC_MLE_DB), encryptable cells (Str/Json/Bytes/Uuid/Embedding) are stored as"$skein_enc"envelopes in table-row files (format_versionbumped 3→4), scalar/key cells stay plaintext, andENC_MLE_DBstays deterministic for equal plaintext. Master keys are still never persisted: tables loaded without their key are marked locked (zero rows, persist refused so ciphertext is preserved) and transparently reload/unlock when the key is registered. Coverage:engine::tests::encrypted_at_rest_cells_roundtrip_and_lock_without_key,engine::tests::encrypted_at_rest_mle_is_deterministic_for_equal_plaintext. Seedocs/ON_DISK_FORMAT.md§11.8.1. - 2026-05-27:
advisor.evaluatelatency benchmarking now covers join-key samples, multi-range ordered samples, multi-column grouped workloads, and grouped range+order workloads. Coverage:engine::tests::advisor_evaluate_reports_latency_benchmark_for_join_key_workload,engine::tests::advisor_evaluate_reports_latency_benchmark_for_multi_range_order_workload,engine::tests::advisor_evaluate_reports_latency_benchmark_for_multi_group_workload,engine::tests::advisor_evaluate_reports_latency_benchmark_for_range_group_order_workload,cluster_rpc.rs::r16_index_advisor_evaluate_reports_join_key_latency_benchmark,cluster_rpc.rs::r16_index_advisor_evaluate_reports_multi_range_order_latency_benchmark,cluster_rpc.rs::r16_index_advisor_evaluate_reports_multi_group_latency_benchmark,cluster_rpc.rs::r16_index_advisor_evaluate_reports_range_group_order_latency_benchmark. - 2026-05-27: CDC
plain_jsonformat added and persisted incdc_subscriptions.jsonformat v8. Coverage:engine::tests::cdc_table_subscription_plain_json_format_persists_and_serializes,server::tests::cdc_table_subscription_plain_json_format_roundtrip,cluster_rpc.rs::cdc_table_subscription_plain_json_format_roundtrip. - 2026-05-27: CDC query dependency extraction now handles CTE definitions while ignoring CTE aliases as physical tables. Coverage:
engine::tests::cdc_query_subscription_over_cte_query_invalidates_on_base_table_changes,cluster_rpc.rs::query_subscribe_over_cte_reports_base_table_keys_and_emits_sse_on_base_changes. - 2026-05-27: CDC query dependency extraction handles set-operation branches and view-expanded base tables. Coverage includes the
cdc_query_subscription_over_union...andcdc_query_subscription_over_view...engine tests plus matchingcluster_rpc.rsSSE tests. - 2026-05-27: CDC primary-key range filters are supported on single-column primary keys and persisted in subscription state.
- 2026-05-26: CDC source-op, exact primary-key, and changed-column filters are live for table and query subscriptions.
Core Roadmap Status¶
| Phase | Current status | Short truth |
|---|---|---|
| Phase 0 Repo setup | Implemented | Primitive file/record/value-id building blocks have runtime tests. |
| Phase 1 Storage core | Partial | Prototype persistence exists; full production storage pipeline is not complete. Monolith split progress: TableStorageMode extracted to storage_mode.rs + helpers + expects_core_lsm_files + lsm_pipeline_files_active (B); core_lsm_files_active + stats now use ManifestReader::open + replay_state (A, more core in stats path). This round: streaming stub + replay materialize path routed to core RowSegmentWriter+Manifest+Wal (A); more centralization in storage_mode (B). Evidence in Recent + Storage row (replay_bundle_export... + t183 + storage_mode_helpers... tests, "this round"). |
| Phase 2 SQL + metadata | Partial | Catalog, DDL/DML subset, and compatibility metadata exist. |
| Phase 3 MySQL protocol | Implemented baseline | MySQL listener and broad SQL compatibility corpus pass; not full MySQL. |
| Phase 4 Web console | Partial advanced | SkeinAdmin is embedded with broad live panels; console remains evolving. |
| Phase 5 SkeinQL API | Implemented baseline | Typed RPC/API surface exists for core operations. |
| Phase 6 ETag cache coherence | Implemented baseline | ETags, prepared GET, and dependency notifications exist. |
| Phase 7 Delta values | Implemented prototype | Delta storage behavior is covered by ValueStore tests. |
| Phase 8 Wasm extensions | Implemented baseline | Wasm catalog/UDF sandbox exists; query operators are R19 prototype. |
| Phase 9 Audit WAL | Implemented baseline | Forensic hash chain, anchors, verify/status, and export tooling exist. |
| Phase 10 Row/column snapshots | Partial | Snapshot build/read/optimizer coverage exists for selected shapes. |
| Phase 11 Compat telemetry + migration | Implemented baseline | Telemetry and migration intent/rewrite/report surfaces exist. |
| Phase 12 SkeinAdmin | Implemented baseline | Admin UI covers major runtime surfaces and research panels. |
| Phase 13 Observability | Partial advanced | Stats, metrics, latency, CDC telemetry, basic alerts, settings-backed alert routing, and stats.snapshot-driven HTTP(S) webhook delivery exist; standalone escalation automation remains. |
| Phase 14 Cluster scale-out | Implemented baseline | Node identity, replication, shard movement, CAS transfer, and routing hints exist. HA is hardened: automated fenced failover (whole-cluster + per-shard) with quorum fencing, leadership epoch, and a Raft-style vote round; data-safe election on true (term, index) log positions; self-healing replication (op-log (term, seq), idempotent/gap-aware apply, leader-driven catch-up); and a commit index (majority-ack) propagated cluster-wide with per-node commit_lag. Remaining consensus follow-ons (read-committed replica reads, automated snapshot transfer for re-sync) are enhancements, not failover-safety gaps — see docs/CLUSTERING.md §2.5. |
| Phase 15 Perf improvements | Implemented baseline | Interning, late materialization, batch scan, and MVCC visibility cache exist. |
| Phase 16 Query coalescing | Implemented baseline | Coalescing is live for prepared GET and patch paths. |
| Phase 17 CAS-aware replication | Implemented baseline | Object need/missing/fetch/pull and shard-manifest transfer exist. |
| Phase 18 Index advisor | Partial advanced | Advisor synthesis/apply/retire/evaluate exists; non-grouped range+order layouts without the same leading key still fall back. |
| Phase 19 Time travel + replay | Implemented baseline | MVCC as_of, history, replay export/import/run, and admin tooling exist. |
| Phase 20 Encryption | Partial baseline | Crypto primitives, envelope helpers, rotation helpers, settings controls, and persisted mode/active-key/audit metadata exist. Engine row persistence now writes encrypted-at-rest cell envelopes (format_version 4, $skein_enc) for encryptable cell kinds when a DB profile is active, with deterministic ENC_MLE_DB and a locked-table guard when keys are absent. Master key bytes are still not persisted, scalar/key cells remain plaintext. Code: core/encrypted_valuestore.rs, core/encryption.rs, engine.rs encryption_* + key_manager. Core tests + engine integration tests. Micro C (2026-06-11 prior + this round): EncryptedValueStore use in skeindb crate test + extended to non-primary stats snapshot path (storage_stats_snapshot constructs it over ValueStore + key_manager for secondary/dedup routing baseline). storage_mode B split also. |
| Phase 21 Compaction scheduler | Partial | Live scheduler controls and worker exist; deeper storage compaction remains. |
| Phase 22 Autoparam + plan cache | Implemented baseline | Autoparam classifiers/feedback/metrics and plan-cache controls exist. |
| Phase 23 CDC/changefeeds | Partial | Local CDC is strong; external sinks/fanout and richer encodings remain. |
| Phase 25 PostgreSQL compat | Partial advanced | PG v3 baseline is substantial but not full PostgreSQL. |
| Phase 26 Distribution | Partial | Packaging scaffolding exists; signed publication requires release configuration. |
Research Track Status¶
| Track | Status | Primary runtime surface |
|---|---|---|
| R01 Learned indexes | Hardened | ValueStore learned-index reports, lookup traces, refresh policy, and benchmark probes. |
| R02 Adaptive row/column | Hardened | Snapshot optimizer, adaptive replacement, dependency refresh, and hybrid execution scaffolds. |
| R03 Delta topology | Hardened | Delta-chain policy, skip patches, compaction, and topology analysis. |
| R04 Differential privacy | Hardened | dp.* aggregates, budgets, audit, accuracy evaluation, and RDP composition. |
| R05 Oblivious execution | Hardened | oblivious.policy.*, padded execution, explain/evaluate, and privacy controls. |
| R06 Forensic WAL queries | Hardened | forensic.query, forensic.verify, forensic.export, Merkle proofs, and bundles. |
| R07 Client-side merge funcs | Hardened | merge.*, Wasm merge policies, offline queue spec, and conflict evaluation. |
| R08 Incremental views | Hardened | view.* create/refresh/evaluate/status/explain_deps with dependency tracking. |
| R09 QUIC-native protocol | Hardened | QUIC RPC transport, 0-RTT write rejection, migration/rebind, and transport benchmark. |
| R10 Vector embeddings | Hardened | vector.insert/search/benchmark/index.status, HNSW/LSH, cache metadata, and RAG sample. |
| R11 LLM/autoparam | Hardened | ai.autoparam.* classifier catalog, labels, feedback, and metrics. |
| R12 NL -> SkeinQL | Hardened | ai.nl.translate/explain/execute, approval tokens, and eval harness. |
| R13 Causal ETag consistency | Hardened | min_causality, vector clocks, causal validators, and replication watermarks. |
| R14 Replay bundles | Hardened | edge.bundle.* plus replay bundle redaction/export/import/run. |
| R15 Schema evolution | Hardened | schema.propose_change/merge_status/simulate_rollout/apply_merge. |
| R16 Auto index synthesis | Hardened | advisor.* synthesize/apply/retire/evaluate/history/dismiss. |
| R17 Intent inference | Hardened | migration.intent_report, migration.rewrite_preview, and migration.report_export. |
| R18 Perf regression replay | Prototype implemented (micro progress) | Performance profiles, variance reports, cache-hint rehydrate, timing injection primitive (inject_replay_timing + dedicated test), LSM stats fidelity re-compute in replay run exist; see recent verified + engine replay tests. CI distribution harness (compare) pre-exists. |
| R19 Wasm query operators | Prototype implemented | Wasm plan compile/inspect/run/perf/edge-package exists; production SIMD-lowered codegen and hardened operator breadth remain open. 2026-06-11 micro: host fallback run/inspect exercised in engine test (see Recent Verified + partial areas). |
| R20 Energy-aware compaction | Hardened | Energy-aware compaction policy, external energy signals, status/stats, and eval harness. |
Compatibility Guardrail¶
SkeinDB coverage is measured against tests/compat/corpus.sql and live integration tests. If marketing copy says "100% MySQL compatibility" or "100% PostgreSQL compatibility," treat that as false until this file and the compatibility docs explicitly say otherwise.
Truth-Maintenance Rule¶
When a task is promoted from prototype to hardened behavior, update:
- The corresponding entry in docs/PROJECT_BACKLOG.md or docs/RESEARCH_BACKLOG.md.
- This matrix row, including any remaining gap.
- At least one test reference proving the claim.