`init` planned every file on every run and refused if any of them
existed, so attaching a new monitor could not be configured without
--force — which reallocated global workspace numbers by i3's current
output order and renumbered the monitors already in use.
- allocate_global_starts() keeps the block each known output already
holds and gives new outputs the lowest free block; blocks of inactive
outputs stay reserved.
- read_allocations()/parse_allocation() read those blocks back out of
the generated files (inverse of render_workspaces_for_output).
- --sync writes only the missing files, --prune drops configs for
outputs that are gone and frees their numbers.
- Files without the auto-generated header are never written or
deleted, --force included.
Co-Authored-By: Claude <noreply@anthropic.com>