New: prepared statements, UPDATE and DELETE, and key lookups that seek — 0.143 ms through the gateway.Read the update

Changelog

Every merged change, by date.

The commits that changed what UltraFabric does, newest first, with their ids so you can read the diff. Work-in-progress and test-only commits are left out. Every measurement named here was taken on a shared development host and is indicative.

Phases closed

P0 through P3b, each with a written gate and a status note in its plan. Gate P2's speed target was missed and re-scoped in an ADR rather than waved through.

What is counted

feat, fix, perf, bench, docs releases and merges. wip commits, test-only commits and formatting are not listed.

Phases

Phase gates passed

Each phase ends with a gate written before the work starts. The date is the day the plan's status note was written.

PhaseClosedScope
P3b23 Oct 2026OLTP core: key seeks, extended protocol, UPDATE/DELETE, operator credential
P3a23 Oct 2026SQL gateway and token identity; psql and pgx connect
P3c22 Oct 2026Columnar collections; TPC-H gate met
P2e21 Oct 2026Vectorized expressions and batch aggregation
P2d21 Oct 2026Projected scans and typed decimals
P2c21 Oct 2026Noninterference harness, 10⁷ differential plans, Lean proofs, TPC-H baseline
P2b21 Oct 2026Catalog, vectorized executor, rule optimizer, verified queries in ufd
P2a19 Oct 2026Ultra IR foundation: types, encoding, fingerprints, validator, verifier core, reference interpreter
P119 Oct 2026Storage engine (pending a long soak and dedicated-host runs)
P09 Oct 2026Foundations: simulator, fault-injecting disk, model-checked log, benchmark harness
Commits

Changes by date

Newest first. The id is the short commit hash in the UltraFabric repository; the phase is the plan the change belongs to.

CommitPhaseChange
b09a617P3bFinal-review fixes for P3b: UPDATE and DELETE may only write rows the requester read through the security chain; tenant tokens can no longer use the replace-style insert; binary numerics rounded once, binary infinities refused; caps on prepared statements and portals.
ad6e278P3bP3b recorded complete: OLTP bench (indicative), ADR-003/005 addenda, roadmap items P3d (transactions, ORMs) and P3e (parallel reads).
d53e520P3bOperator credential: node-wide requests need a token with uf_operator and no tenant; the Go and Rust token verifiers agree on a shared corpus of malformed and forged tokens.
0c2d1eaP3bSQL UPDATE and DELETE run as verified plans applied atomically at the node (protocol requests 17 and 18).
0b56385P3bExtended query protocol in the gateway: prepared statements with typed $n parameters, portals, text and binary formats, catalog cached per session. Drivers connect in their default mode.
208c8f1P3bDifferential run with key predicates: 1,000,000 generated plans, 0 failures.
5f2f6bfP3bPrimary-key seeks: scans read only the key ranges a filter implies. A point lookup through psql fell from 5.5 ms to 0.29 ms (later 0.143 ms with the extended protocol; indicative, shared host).
c33bb02P3aFinal-review fixes for P3a: exponent literals keep their scale; float division, varchar(n), timestamp(p) and multi-statement writes are 0A000; PostgreSQL float text; login deadline, 16 KiB pre-login messages and a connection cap (53300).
16c25d9P3aDifferential run after the gateway: 2,000,000 generated plans, 0 failures.
24ce65dP3aP3a recorded complete: first SQL latency bench (indicative), roadmap updated.
31b9b4cP3aBudget errors reach clients without byte counts, because the counts include other tenants' rows. Docs: SQL and psql page, protocol kinds 14–16 and codes 110–112.
130a58cP3aEnd-to-end SQL over the gateway: SQL INSERT rejects existing keys (new node request InsertNew, SQLSTATE 23505) instead of replacing the row; numeric × integer keeps the numeric's scale; answers compared with DuckDB; psql smoke test.
e89a959P3aufgw: the PostgreSQL wire protocol in front of ufd, a SQL subset bound to verified Ultra IR, token login.
30cbe0cP3aGo node client, token verifier and SQL binder; the plans it builds are checked by the Rust validator and verifier.
826a76fP3aThe garbage-collection horizon follows a snapshot retention window (--snapshot-retention-secs, default 60).
fc12452P3aToken login at the node: the query environment is derived only from the verified token; catalog request; error codes 110–112.

CommitPhaseChange
44a9288P3aGo port of the canonical encoding (UCE) for types, values and plans, byte-identical to Rust on cross-language test vectors.
f5e4368P3aADR-005: SQL gateway and identity; the P3a plan.
be964fbP3cP3c bench re-run at a clean commit with a same-day row-storage baseline; ranges corrected; site labelled indicative.
a69b309P3cColumnar fixes from the final review: compaction batches bounded by bytes, zone-map bounds only for short strings, header errors propagate, at most 65,534 columnar fields; compaction no longer retried on every insert.
17e2dafP3cTPC-H SF 0.1 on columnar collections: Q1 0.31 s, Q6 0.074 s, answers equal to DuckDB (indicative, shared host).
ca684d9P3cExecutor: digit counting by comparison, typed group-key bytes; uf-tpch advances the GC horizon after a columnar load.
47d56fdP3cMarkers of moved rows kept in their own subspace, so delta scans never walk them; uf-tpch --columnar.
53c3e12P3cColumnar collections over protocol v0; an existing key in an append-only collection is code 109.
4349ee0P3cScans of columnar collections read only the chunks the plan needs.
16cce4aP3cColumnar collections in the catalog: row groups, an append-only delta, atomic compaction.
c170462P3cColumn chunk codec.
ffe2eaaP3cSpecification §5.7 columnar collections; the P3c plan.

CommitPhaseChange
009427bP2eP2e measured: TPC-H Q1 1.16 s, Q6 0.54 s at SF 0.1, answers unchanged (gate met; indicative).
2ff38b4P2eP2e mutation pass; ten-million-plan differential run, 0 failures.
7c144c8P2eProjection pruning above security chains (rewrite L11).
8bbffa5P2eAggregation over typed batches; typed decimal arithmetic; borrowed columns and typed comparisons; typed gather and tenant isolation (commits 8a9b07d, 7f5eeb8, 6118a4c, 4d1ec75).
4b99ee6P2dPruned columns charge only validity flags against the budget; docs state the scan figure is a one-column best case.
1855540P2dP2d scan path measured: the lineitem scan 5.1× faster, answers unchanged; ADR-004 accepted.
d13707eP2dScans decode only the columns a plan can observe; typed decimal columns; projected row decoding (commits 2837a9d, 96b6c9a).
7631915P2cTen-million-plan differential re-run after review fixes, 0 failures; a panicking check now counts as a failure; noninterference also checks the optimized plan.
6dd5e4eP2cP2c complete; Gate P2 report: correctness items pass, the TPC-H 3× target missed and re-scoped by ADR-004.
2d70123P2c10,000,000 differential plans with noninterference checks, 0 failures.
5ea32e3P2cRewrite laws L1–L8 and noninterference for the core security fragment mechanized in Lean 4.
789f024P2cufdiff: parallel differential runner (executor, rewrites, encoding round trip, noninterference) and the nightly script.
e9e99b8P2cDecimal multiplication and AVG in the IR, reference interpreter and executor.
54dd4a3P2cRaw key-value requests can no longer reach collection rows (code 108); executed and fallback plans are always verified.
7a815faP2cNoninterference harness for the reference interpreter and the executor, with a planted leak it must detect.
1d2fc2cP2bP2b merged: catalog, vectorized executor, rule optimizer, verified queries in ufd.
bb4cfd7P2bScans charged against the budget as they stream; a work limit for joins that never match; optimizer size cap (final-review findings).
4615c14P2bRewrite L7 no longer pushes atoms over float grouping keys (+0 and −0 share a group).
e58c9b3P2bVerified, optimized queries over stored collections in ufd (protocol kinds 11–13, codes 101–107).
0a0bcc3P2bRewrite engine with L1–L8, L10–L13 and L15 behind a security barrier and a verifier gate; plan cache; 20,000-case rule differential.
d1c0a3aP2bCanonicalization no longer reorders UNION inputs: a LIMIT above a UNION observes their order.
5805ab8P2bFail-closed canonical plan decoder.
0b09508P2bVectorized operators (hash join, hash aggregate, sort and top-k) with a per-query memory budget; 25,000 generated plans agree with the reference.
3c08cdaP2bCollections in a reserved keyspace, memcomparable row keys, row codec, tenant-prefix storage scans.
69f25b6P2bVerifier: joins of two different secured collections were wrongly rejected; obligations now combine per collection (found by the plan generator).
eb03e45siteultrafabric.dev live behind Cloudflare.

CommitPhaseChange
151c9cesiteThe site: landing page with the verifier plan panel, eight developer docs pages, updates and early access.

CommitPhaseChange
914bebbP2aP2a recorded complete: status, mutation results, specification amendments, P2b/P2c split.
8e757c7P2aVerifier: security typing per the specification, with reject and mutation corpora.
8b395b8P2aReference interpreter with SQL NULL semantics, order-independent errors and security atoms decided first.
bcafb09P2aCanonicalization, UCE plan encoding and fingerprints; protoc decodes the canonical plan and re-encodes it byte-identically.
72a9735P2aExpressions, schemas, plans and a validator that recomputes every type; text form for plans with exact round-trip (commit 1584749).
fe283e4P2aProtobuf wire primitives and fail-closed canonical encoding (UCE v1) for types and values; IR types and values with normal forms and total orderings; in-tree BLAKE3 checked against the official vectors (commits b479bbc, 47e03d5).
8260bf5P1Group commit: many batches share one fdatasync; ufd groups waiting writes.
3d28c5bP1Engine metrics and Prometheus exposition with per-operation latency in ufd.
86bf0f1P1ufd: the daemon serving the engine over a Unix socket with a checksummed v0 protocol; ADR-003.
92f0474P1Idempotent writes, recorded in a hidden keyspace atomically with the batch.
75fc866P1Snapshot-isolation transactions (first committer wins) over any engine.
2f98517P1Incremental compaction in bounded steps per write: worst write latency 371 ms → 23 ms (indicative).
de1c61bP1Slicing-by-8 CRC32C in safe code, checked against the bytewise reference.
b00e98aP1Scans decode entry by entry from cached raw blocks (fixes the YCSB-E regression).
aa3ff9dP1Bench re-run: memory and disk at or below RocksDB, point reads +81%.
7a6ec7eP1Table file format v2 with restart points and a raw-block cache; streaming compaction with bounded memory (commit b0ddcf7).
6a41c81P1The write-ahead log rolls on flush so flushed segments are deleted (disk growth seen in benchmarks).

CommitPhaseChange
f7e95a0P1First indicative results against RocksDB, with analysis.
a0ae43eP1Lazy k-way merge for range scans: reads only the blocks needed.
afb62e1P1kvbench: RocksDB oracle engine, three-way differential test and YCSB runner.
bd8d5b8P1Memory governor: cgroup-aware budget and pressure ladder, with a hard memtable cap.
70a6c30P1Block cache, two-level compaction and MVCC garbage collection with a durable GC horizon.
3d510beP1Real-file I/O backend (pread/pwrite, fdatasync, directory fsync).

CommitPhaseChange
de3dcf0P1Manifest, crash-safe flush protocol, WAL truncation and layered reads.
0d8a36aP1Table file format with checksummed blocks, Bloom filter, index and footer; writer, reader and memtable flush.
5bd4ac8P1Engine seam, model-engine oracle, memtable and the first durable engine (WAL + memtable) with a key-value crash matrix.
cbbd1abP1Segmented write-ahead log with group commit, crash recovery and poisoning; one-million-seed crash campaign.
137e5ddP0Benchmark harness: histograms, YCSB A–F mixes, Zipfian keys, JSON results.
e978a75P0P0 specification amendments (v1.1) and the TLA+ write-ahead log model checked with TLC.
dd401aeP0Deterministic simulation kernel and fault-injecting simulated disk.

Source: git log --format='%h %ad %s' in the repository and the status notes in docs/plans/. The updates page tells the same story in prose, with what was found while building each piece.

Want the diffs?

Early-access teams receive the benchmark scripts with the build, so the measurements behind these entries can be repeated on your hardware.