fix(remote): --push-to must not select what to pull from master
`remote pull --push-to <remote>` reported "0 datasets found" and exited 0 for every specifier whose data center is None. Two lines combined into a query that is empty by construction: spec.get("data_center") or (push_to_remote if push_to_remote else None), ... ignore_data_centers=[push_to_remote] if push_to_remote else None When the specifier carries no data center the source falls back to the push destination, which is then excluded -- "list from X while excluding X". That is not a corner case. `parse_specifier` leaves data_center None for `all`, and the it4i/lrz zone aliases *explicitly reset it to None* before setting a zone query, so the only scopes that ever worked were ones naming a repository directly (`lexis:...`). `remote_ls` was unaffected because it passes `spec.get("data_center")` alone, which is why `ls` and `pull` disagreed on the same specifier. Verified against a live OWI deployment: remote ls "all/collectionName=main" -> 584 datasets, 51 TiB remote pull "it4i:2026-08-01" --files "**/*.parquet" --yes -> 5 datasets, fetches ... the same plus --push-to owi-up -> 0 datasets found remote pull "lexis:latest" --files "**/*.parquet" --yes --push-to owi-up -> 5 datasets, fetches Ruled out by experiment first: specifier form, --files form (including omitting it), destination contents (a destination holding 5 collections also returned 0), auth, config and image staleness. Impact: an OWI mirror could not be filled through `--push-to` at all, and each attempt looked like a successful run that happened to move nothing. `ignore_data_centers` is kept -- not pulling from the remote you are pushing to is correct; only the source fallback was wrong. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019nPNpEG2QRnmjxxn5LeEb7