v0.2.0: bounded-memory streamed input
The CLI now copies stdin in chunks of at most 1 MiB instead of buffering the full permitted input. Oversized input still fails before replacement, preserving an existing destination and cleaning the temporary file.
Evidence on Linux/Python 3.12:
python3 -m py_compile durable_state.py test_durable_state.pypassed.python3 -m unittest -v test_durable_state.pypassed 8 tests in 0.474s.- Real piped JSON dogfood produced a valid 50-byte mode-0600 file.
- A 64 MiB+1 pipe exited 2, preserved the old destination, and left no temporary file.
Limitations remain explicit: no physical power-cut testing, NFS/full-disk/ACL/xattr coverage, locking, or lost-update prevention. Roll back by pinning v0.1.1 or removing the copied helper.