mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
- load() no longer DELETEs the crash tail — it stays non-mutating w.r.t. the event log and records a repair point (repairFrom). The next append runs the DELETE inside its own transaction before inserting. This makes the SQLite backend honor the SAME public contract as JSONL (load returns the committed prefix; the subsequent append performs the one-time physical truncation-repair), instead of mutating during load. - All-tail load: when the discarded crash tail was the session's only committed content (committed.length === 0), the metadata row still read materialized = 1 from the prior append, so has()/list() reported a session load() had just emptied. load() now flips the row's materialized flag to 0 (metadata only — the orphaned event rows are still removed by the deferred repair), so has()/list() are immediately consistent. - Schema version: openDatabase now stores SCHEMA_VERSION in PRAGMA user_version on a fresh database and rejects opening one whose user_version is newer than this build supports, protecting against a future incompatible layout. Regression tests: load is non-mutating (tail rows survive until the next append), all-tail load makes has()/list() false, and a newer-schema database is rejected on open.