perf: page writes in one revision, and saves off the main thread

The page writer keeps its step-by-step object placement but simulates
each step's write and read-back in memory, building one revision per
write instead of one per step; output is byte-identical (505 corpus
sections, 8052 page edits, generated pages up to 2000 paragraphs). A
250-paragraph import into a 4.6 MB section drops from 22 s to 0.15 s and
2000 paragraphs from 38 minutes to 0.7 s.

Section::queue_save saves on a thread, chaining consecutive saves of a
page, and saved() reports outcomes; Snowbound saves through it, so an
edit no longer re-reads and rewrites the section on the main thread.

Assisted-by: claude-opus-5.5
Assisted-by: claude-opus-5
e0b4334a77clover caruso committed on 9/27/2026, 11:23:49 AMparent710848e
20 files changedLine totals unavailable