The async oplog stack graduates to first-class options
Summary: The async oplog stack graduates to first-class options (v0.6.0b7).
The Rust server's storage write-path modes — the background oplog drainer,
non-logged oplog tables, and the mongod-style log-only-the-oplog data mode
with its stable-checkpoint cadence — were until now reachable only through
process-wide SECANTUS_* environment variables. They are now real,
per-store options at every layer: a StorageOptions struct on the storage
crate, RustServer(oplog_async=…, oplog_nonlogged=…, data_nonlogged=…,
checkpoint_seconds=…) kwargs on the embedded handle, and --oplog-async /
--oplog-nonlogged / --data-nonlogged / --checkpoint-seconds flags plus
matching [storage] TOML keys on the secantusd-rs daemon. Unset options
defer to the environment variables, so existing env-driven workflows are
unchanged; an explicit option wins for that store only.
Two async-mode gaps closed on the way: an async store now prunes its oplog
opportunistically from write volume (the every-1000-emits cadence the sync
path always had — previously an async store only pruned on explicit calls),
and create_archive drains the oplog queue before its checkpoint so a
backup taken under the async drainer can no longer miss acknowledged writes.