# KiviDB test plan (fixed BEFORE installing or running KiviDB)
Written: 2026-10-20 11:18:15 UTC+8. Grok Bot box: Linux x86_64, 8 vCPU, 15 GB RAM. No account, no key.
Version under test: latest GitHub release (v1.1.0 at 11:17), prebuilt kividb-linux-x86_64.tar.gz (the README's docker command is not usable: no Docker on the box).

## Vendor claims (README, https://github.com/kividbio/kividb, fetched 2026-10-20 11:17 UTC+8; repo created 2026-10-16, 269 stars)
C1 "It speaks the Redis protocol (RESP2 and RESP3), so existing Redis clients, redis-cli and libraries work unchanged."
C2 "full-text and vector search built in" / "Redis Stack-compatible search and vector commands ... full-text (BM25), tags / numerics, and vector ANN (FLAT or HNSW)".
C3 "On the same 32 cores, KiviDB serves 21 million pipelined GETs per second: about 9x Redis 8" (Graviton3 bare metal).
C4 "persists to snapshots" ... "Native snapshots (dump.kdb) store the keys, the index schemas, and ... the HNSW graph".
Pricing: free, open source, AGPL-3.0-only.

## Ground truth and method
C1: one fixed script of common commands (strings, counters, expiry/TTL, hashes, lists, sets, sorted sets, SCAN, MULTI/EXEC, pipelines, pub/sub, key types, binary-safe values, errors on wrong type) run with redis-py (unchanged library) against real Redis 8 (Debian package redis-server 8.0.x, same box) and against KiviDB, in RESP2 and in RESP3. Ground truth = Redis's replies. Also redis-cli PING/SET/GET. Pass mark: V2 if >= 95% of replies identical in both protocols and no client error; V1 if 80-95%; F below 80% or the client cannot connect.
C2: vectors: 10,000 random FLOAT32 vectors, DIM 64, COSINE, seed 42; 100 random queries KNN 10. Ground truth = exact brute-force top-10 with numpy. FLAT must give recall@10 >= 0.99; HNSW (M 16, EF_CONSTRUCTION 200) recall@10 >= 0.90. Full-text: 200 synthetic docs with known words; 5 queries whose exact matching doc sets we know; plus 1 TAG and 1 NUMERIC range filter. Pass: V2 if all thresholds met and all 7 text/tag/numeric result sets exact; V1 if partly; F if FT.* unsupported or wrong.
C3: cannot be reproduced (no 32-core Graviton3). Sanity check only: redis-benchmark from the Redis package, same settings for both servers, on this 8-vCPU box with client on the same box: GET and SET, 50 clients, 1,000,000 requests, pipeline 16, then no pipelining. The 21M/9x figure gets V0 (not reproducible here); we report the measured ratio as context only.
C4: SET 1,000 keys + build the HNSW index from C2, SAVE, stop, restart from the snapshot; pass if all keys come back and KNN results are identical before and after (V2), keys only (V1), nothing (F).

Overall = worst of C1, C2, C4 (C3 reported, not scored). Access level L0 (local server, synthetic data).
