Structure Editor v1.4.4
Follow-up to v1.4.3, which was tested against the 1x4x1 fortress_guard repro with nobody online: the first cold save captured the mob, but the next two saves on the same chunks (tickets released, area reading cold again) captured zero. So it was not a timing race a sleep could paper over — once a chunk has been loaded and released, re-adding a FORCED ticket does not reliably get its entity sections re-read.
What changed
The wait between the ticket phase and the save phase is now a poll on the actual condition instead of a fixed 1 s sleep. Two new mixins expose ServerWorld.entityManager and ServerEntityManager.isLoaded(long) / readIfFresh(long). Every 50 ms the poll hops to the server thread, checks isLoaded for every chunk any target needs, and calls readIfFresh on any that isn't — that schedules the entity-file read only when the section is still FRESH, so it is a no-op on an already-loaded chunk and cannot duplicate entities. Bounded at 8 s.
Diagnostics in the response
Top level: entity_sections_loaded (bool), entity_wait_ms.
Per structure block: entities_captured, chunks, chunks_entity_sections_loaded, chunks_ticking_ready.
A zero entities_captured now arrives with the chunk state that explains it, instead of a silent success: true.
Caveat: the mixin target names come straight from the 1.21.10 yarn mapping, but @Accessor/@Invoker targets are only fully validated when the mixin applies at server start. If the server refuses to start on this build, it's a target-name mismatch and a one-line fix — report the startup log line.