v1.14.4-ce¶
Ten fixes for failures that looked like success
Every bug in this release passed its own health check: a query that returned the
wrong rows without erroring, an index that reported itself created and vanished on
restart, a settings page that announced a capability the install did not have, and
an installer config that made GENERATE() fail on every CPU-only host.
Released: 2026-08-21 · Type: correctness and reliability · Upgrade: drop-in
Wrong query results on an indexed AND¶
Affects correctness — upgrade if you use secondary indexes
An AND where one conjunct is served by an index and the other is not returned rows
the WHERE clause excluded.
SELECT * FROM telemetry_events
WHERE received_at > '2026-08-18' -- indexed
AND event_type = 'installation_created' -- residual, dropped
Observed on a live install: 40 rows returned, 10 correct. No error is raised.
Two properties made this hard to spot:
COUNT(*)over the sameWHEREreturned the correct count, because an aggregate plans toTableScan → Filter.- Adding
ORDER BYreturned the correct rows, for the same reason.
So the two natural cross-checks both disagreed with the bug.
Fixed. The index-hit path now evaluates the remaining conjuncts through the same
evaluator FilterExec uses. Predicate-only columns are materialised for evaluation and
narrowed back out of the result.
Index definitions survive a restart¶
Previously CREATE INDEX wrote to an in-memory store only. Definitions did not reach
disk, so a restart discarded every secondary index and the instance silently reverted to
full table scans.
Results remained correct throughout — a table scan answers the same question — so the only symptom was an index that quietly stopped working.
Action required for existing installs
Indexes created before v1.14.4 were never persisted and will not reappear after upgrading. Recreate them once; from this release they survive restarts.
SHOW INDEXES also now reports secondary indexes. It previously listed only the primary
key and unique constraints, so a CREATE INDEX was invisible to it even while the
planner was actively using that index.
These two fixes ship together by necessity
The residual-predicate bug only manifests when an index is live in memory. Because restarts kept wiping indexes, instances silently reverted to the safe path. Making indexes durable makes the residual bug more likely to fire — neither fix is safe to ship alone.
Installer wrote a timeout that breaks GENERATE on CPU¶
The installer wrote [query] default_timeout_ms = 30000 into gateway.toml. The
engine's own default is 300000. An install following the documented path therefore got
a stricter timeout than an install with no config file.
On a CPU-only host a cold GENERATE() takes roughly 53 seconds, so GENERATE,
AGENT_RUN and NL2SQL all failed with Operation timeout on a fresh install.
Existing installs
If your gateway.toml was generated by an older installer, raise
[query] default_timeout_ms to 300000. New installs get this automatically.
Interface¶
| Fix | Detail |
|---|---|
| Wide results | A result set with many columns pushed the editor and its controls off-screen; only the data table scrolls now |
| Agents tab | Crashed the whole Settings page — on an empty database — because /v1/agents returns {"agents": []} and the client expected a bare array |
| Modals | Rendered white text on a white panel; the shared component now defaults to the dark theme |
| Vector Search | A placeholder page was removed from the navigation. Vector search is SQL: COSINE_SIMILARITY(EMBED(a), EMBED(b)) |
| Sidebar | Scrolls instead of clipping its last entries |
| Vision Provider | Reports whether a vision model is actually installed, rather than always claiming native vision is active |
| Streaming | The list no longer renders empty while streams are running |
| PDF preview | Unblocked — the engine's own Content-Security-Policy was refusing blob-backed PDFs in every browser |
Providers¶
Whitespace-only stop sequences are stripped before reaching a provider, which some APIs reject outright.
Validation¶
| Gate | Result |
|---|---|
| Feature validator, against the published artifact | 187 / 187 |
| Recipe certification, pristine data directory | 162 / 162 |
| AVX-512 audit | 2,018 uses, all in _blake3_*, none in the inference path |
| Non-AVX-512 canary (i5-10400F) | boot 3s · EMBED 384 dims · GENERATE OK · zero SIGILL |
The validator ran against the artifact published for this release, not a local build.
Upgrading¶
Drop-in. No migration, no schema change, no config change.