- checksummed append frames and tail recovery;
- explicit durability modes;
- three-dimensional point time and run provenance;
- latest/as-of queries;
- mergeable gauge/counter aggregate states;
- property, corruption, and microbenchmark coverage.
Initial exit met: property tests cover every truncation point in the final frame, complete checksum-corrupt frames stay intact and return corruption, and earlier frame corruption never becomes tail recovery. Broader media-fault and physical power-cut work continues in M4.
- database directory and manifest generations;
- typed entities, topology relations, series definitions, units, runs, scenarios, plans, and input snapshots;
- atomic transactions containing catalog changes and point batches;
- plan-versus-outcome query API;
- schema migration/version rules.
Exit met: an optimization run, plan metadata, scheduled points, and subsequent actuals round-trip; torn mixed frames expose neither partial catalog state nor partial points.
- seal append logs;
- sort by series and temporal dimensions;
- sparse series/time index and checksummed block/footer format;
- timestamp/value codec bake-off (delta, Gorilla, Chimp, ALP, fixed point, LZ4/Zstd);
- bounded memory and segment cache.
Initial exit met: v1 segments are indexed, checksummed, no-replace published, property-tested, and roughly 10.3x smaller than the logical point layout on the bootstrap energy waveform. External merge sorting and the broader codec bake-off remain hardening work rather than format blockers.
- durable policies and scheduler;
- 5m/30m/hour/day/month materialization;
- timezone/DST calendar buckets;
- invalidation/rebuild for late data and revisions;
- query planner using exact rollups plus raw edge buckets;
- raw deletion safety gate.
Exit: multi-year aggregate query cost scales with returned buckets, and crash tests prove raw data is never deleted before valid durable rollups exist.
Initial exit met: fixed and DST-correct calendar aggregate states are persisted in checksummed immutable files, generations recover from a corrupt newest manifest, late revisions invalidate and rebuild materializations, cached query cost scales with returned buckets, and retention remains a non-destructive gate. Stable time shards bound rewrite amplification, and the planner combines adjacent rollups with raw invalid/current edges. Background scheduling, bounded cache eviction, and physical log reclamation remain hardening work.
- deterministic energy generator and adapters;
- TSBS compatibility;
- Docker matrix across the registry;
- Linux ARM64/SD runs, full-disk handling, soak and real power cuts;
- backup/restore, integrity check, salvage, metrics, and operational tooling.
Exit: reproducible, result-verified reports with no unexplained durability or configuration asymmetry.
Initial progress: the deterministic mixed energy generator, portable bundle,
machine-readable FTWDB runner, and exact FTWDB/SQLite native comparison are
implemented. The pinned server registry is explicitly marked compose/smoke-only
until each adapter verifies results. VictoriaMetrics now has a result-verified
telemetry-subset adapter, but not a full-domain or equal-durability comparison.
QuestDB now has a result-verified stored-revision subset: ILP/HTTP stores every
portable point and all three revision times, while an exact-range
SAMPLE BY 5m ALIGN TO FIRST OBSERVATION query verifies site-0 grid actuals.
This adapter does not yet import catalog or plan records or verify a DST
calendar query. Its acknowledged durability point is not yet equal to FTWDB's.
The TSBS IoT write adapter, fixed sanitized real-installation replay, model-query
benchmarks, process-kill test, and local full-disk evidence now cover more of the
workload and failure surface. A deterministic NBD SD-card emulator and one ARM64
Linux/ext4 smoke run add repeatable media-cache and power-loss checks, but the
recorded cut happened after the load and host sync. A repeatable 64 MiB
Linux/NBD/ext4 run reached ENOSPC after 770,000 durable points in 77 commits;
check-store and inspect passed on that prefix. Local snapshot backup and
strict restore now use atomic no-clobber publication, read-only checks, selected
file CRCs, and tested rollback after final sync or post-check errors.
Process-level CLI tests cover usage errors, generated and sanitized input paths,
integrity checks, inspection, backup and restore JSON, exact restored bytes,
and byte-for-byte read-only behavior. The sanitized fixture restore fixes the
expected result at 889,978 points, 89 commits, and snapshot CRC32 9ff1a95b.
The Linux NBD power-loss run now follows recovery with an off-card backup and a
verified restore to a new target on the emulated card. Strict salvage now reads
only the raw log, stops at the first invalid frame without resync, ignores all
derived files, and publishes a checked prefix through the same atomic
no-clobber path. The sanitized fixture fixes clean salvage at 889,978 points,
89 commits, and snapshot CRC32 9ff1a95b; the NBD run also checks a seven-byte
torn suffix and a verified partial target. Together with the
process-lock, sync-failure, /dev/full, and NBD tests, this closes the
robustness gaps tracked in issue #17. Tests on the target board and SD cards,
power cuts during commits, soak runs, remote backup policy, and the remaining
result-verified adapters stay open and are required for the M4 exit.