crates/attemptdb-storage/tests/{crash,repair}.rs and crates/attemptdb-capture/tests/daemon.rs carry #![cfg(unix)]. On Windows those test binaries run zero tests and report ok, so a green Windows CI job today proves the code compiles and passes unit tests — not that it recovers from a crash.
This is written down at the item that is easiest to misread as done (TODO.md, Cross-platform CI), and it is the largest gap in the durability story.
What to do
Port the harness rather than the individual tests. The Unix-specific pieces are:
- process kill (
SIGKILL / SIGABRT of the crash_writer example) → TerminateProcess;
fork-free child spawning is already std::process, so most of it should carry over;
- file locking and "delete a file another process has open" semantics differ on Windows and are exactly what needs testing — expect real engine findings here, not just test plumbing.
Start with one scenario end to end (kill during WAL append) and land it; do not port all 28 in one pull request.
Done when
At least the WAL-append, segment-flush and manifest-update kills run on windows-latest in CI and pass, and the cfg(unix) gate is narrowed to only what is genuinely POSIX-only.
crates/attemptdb-storage/tests/{crash,repair}.rsandcrates/attemptdb-capture/tests/daemon.rscarry#![cfg(unix)]. On Windows those test binaries run zero tests and reportok, so a green Windows CI job today proves the code compiles and passes unit tests — not that it recovers from a crash.This is written down at the item that is easiest to misread as done (
TODO.md, Cross-platform CI), and it is the largest gap in the durability story.What to do
Port the harness rather than the individual tests. The Unix-specific pieces are:
SIGKILL/SIGABRTof thecrash_writerexample) →TerminateProcess;fork-free child spawning is alreadystd::process, so most of it should carry over;Start with one scenario end to end (kill during WAL append) and land it; do not port all 28 in one pull request.
Done when
At least the WAL-append, segment-flush and manifest-update kills run on
windows-latestin CI and pass, and thecfg(unix)gate is narrowed to only what is genuinely POSIX-only.