Summary: Return an error instead of aborting when truncate is called while the step-down timestamp is set
Problem
- __wt_layered_truncate has WT_ASSERT_ALWAYS(step_down_timestamp == WT_TS_NONE); it fires in release builds.
- Per-key writes in the same window are routed to ingest or mirrored and straddling transactions get WT_ROLLBACK.
- test/format disables ops.truncate under disagg.stepdown_async to avoid the abort.
Scenario
- Leader in planned step-down; any thread calls WT_SESSION::truncate on a layered: table (MongoDB: pre-image and change-collection removers not verified to stop before the timestamp is reserved).
Definition of Done
- Replace the assertion with an error return (WT_ROLLBACK or ENOTSUP, to be decided) so the caller can retry after the role change.
- Python test: truncate during the step-down window returns the error and leaves no partial state.
- Re-enable ops.truncate under disagg.stepdown_async in test/format or file a follow-up if the drain still cannot account for truncates.