Move legacy state entries from config_dir into state_dir.
Idempotent: each entry is skipped when the destination already exists (the migration ran on a prior invocation) or when the source does not exist (nothing to move). Errors on individual entries are logged and swallowed so a single unmovable file does not block the rest.