[https://www.sqlite.org/pragma.html#pragma_synchronous](https://www.sqlite.org/pragma.html#pragma_synchronous) > WAL mode is always consistent with synchronous=NORMAL, but **WAL mode does lose durability.** A transaction committed in WAL mode with synchronous=NORMAL **might roll back following a power loss or system crash**. Transactions are durable across application crashes regardless of the synchronous setting or journal mode. This question is about sync=NORMAL in WAL mode: Why is it that durability is maintained over process crashes, but not OS crashes? Where is the OS level state kept? Does this mean that transactions are only durable after a checkpoint process is completed moving data from the wal file into the db file? In the above quote, what does "might" mean? Is that a low probability? Thanks