- tests/test_rotation.py covers both framers: history split, idempotent
reopen, no-op cases, aged-out reduction to a single snapshot, internal
snapshot validation, extension-agnostic rotated naming, and the
disabled default.
- Fix plan_rotation to seed the cutoff state from the replay base
snapshot (previously asserted when the base already covered the cutoff).
- docs: snapshots carry the schema version in effect at their position,
keeping replay/migration behavior identical to the unrotated file.
Rotation rewrites the database file while holding the exclusive lock;
flock follows the open file description across ftruncate, and on Windows
in-place rewrite avoids share-mode rename restrictions. Also update
rotation doc timestamp format to ISO basic with microseconds.