Keepstep

Recorded synthetic example · SQLite 3.50.4

An update succeeds. Search loses the article.

A migration removes an external-content FTS5 update trigger. The following write succeeds, but a search for the new word returns one result before migration and none afterward.

General integrity and foreign-key checks passed in all three runs. SQLite also provides a dedicated FTS5 index/content consistency check; Keepstep does not automatically run it.

Reproduce locally

Use Python 3.11+ with built-in FTS5 and Git. The example creates synthetic data in a new directory and checks the broken, repaired and unchanged results. No package installation is needed.

git clone https://github.com/nazeeh111/SchemaRehearsal.git
cd SchemaRehearsal
git checkout c303e9b4d00e5fa274ebd1a2f7eb811d2cb005d7
python3 examples/quickstart.py --fts5 search-demo

Open search-demo/broken/report.html. To examine your own migration, write a workload suite for the local CLI.

What these reports establish

These are static reports from the included synthetic articles, generated from source revision c303e9b4. Each scenario uses fresh before/after copies. The JSON files retain input hashes and the recorded SQLite version.

Keepstep compares only declared workloads. A match is not a guarantee about other queries, database versions or production concurrency. A few direct SQL assertions may be simpler for a single query. The walkthrough explains the example and SQLite's full consistency check.

Development and this presentation used AI assistance.