V3 SyncConfiguration + public-R2 connector

v3 licenses live on a public R2 bucket in the v3 format. Add the v3 config and a plain-HTTP connector; do not use PDS or the GCP v2 layout.

  • Add v3? to SyncConfiguration (mirror v2?, sync_configuration.rb).
  • Add a v3 branch to Location.for_licenses returning the public R2 base URL (new storage_type), offline taking precedence.
  • Add the v3 license config pinned to VERSION_FORMAT_V3, behind a flag so Switch the licenses sync from v2 to v3 + rollout (#606527 - closed) • Unassigned • 19.4 is one flip.
  • New public-HTTP connector: read manifest.json, fetch full_dataset/delta .tar.zst over plain HTTP (no auth). Reuse TarZstReader, NdjsonDataFile; force NDJSON data file class.
  • Wire into SyncService#connector and #offline_connector (sync_service.rb).

Refs (reuse): connector/archive/tar_zst_reader.rb, connector/ndjson_data_file.rb, connector/malware_offline.rb (offline layout). Do NOT model transport on malware_pds.rb (auth) or gcp.rb (v2).

Edited by 🤖 GitLab Bot 🤖