With upload_split: true, the night is uploaded as two archives, and the config documents the intent (.config:401-409):
If upload_split is true, two archives will be created. One archive, suffix _imgdata, contains the images. The other archive, suffix _metadata will only contain the data derived from the images, including the timelapse. The metadata archive is much smaller than the imagedata archive, and can be extracted very quickly.
The actual archive contents diverge from this in both directions:
- Heavyweight derived products are duplicated into
_imgdata — including the timelapse, so stations upload it twice every night.
_imgdata is missing the one small file that would make it self-contained for calibration work: CALSTARS.
Cause
In RMS/ArchiveDetections.py, the split predicate is a filename test:
imgdata_set = (set([item for item in file_list if item.startswith("FF") and item.endswith(".fits")]) |
set([item for item in file_list if item.startswith("FR") and item.endswith(".bin")]))
metadata_set = set([item for item in file_list if item not in imgdata_set])
...but both archiveDir() calls then receive the full extra_files list, and Misc.archiveDir() copies those files into each archive directory. extra_files (assembled in RMS/Reprocess.py:536-576) is not just the small calibration files — it includes the timelapse.mp4, the FT timestamps tarball, flux products, and sky-model .npz files.
Meanwhile CALSTARS and FTPdetectinfo are not in extra_files; they ride in the generic night file list as TXT files and therefore land in _metadata only.
Observed contents of a real production archive
CA000Q_20260604_013355_478445_imgdata.tar.bz2 (station on upload_mode with restricted FF upload) contains:
8x FF_*.fits <- the actual image payload
7x FR_*.bin
.config (extra_files duplication - good)
mask.bmp (good)
platepar_cmn2010.cal (good)
platepars_all_recalibrated.json (good)
platepars_flux_recalibrated.json
CA000Q_..._timelapse.mp4 <- documented as _metadata content; duplicated
CA000Q_20260603-154_FT.tar.bz2 <- duplicated
flux_*.json (x3) <- duplicated
CA000Q-{25,70,100}km.kml <- duplicated
CA000Q_..._observation_summary.{json,txt}
CA000Q_..._config_audit_report.txt
CA000Q_..._ff_intervals.png
Not present: CALSTARS_*.txt, FTPdetectinfo_*.txt.
Why it matters
Wasted bandwidth. The timelapse is typically the second-largest file of the night. Duplicating it (plus FT tar and npz products) into _imgdata doubles their upload cost across the fleet, on the archive that is already the big one — directly against the stated purpose of the split.
_imgdata is not self-contained for calibration. Downloading _imgdata is the natural thing to do to open a night in SkyFit2 — and it opens fine (images, config, platepar, mask are all there). But without CALSTARS the detected-star are missing, and the user has to go back for _metadata — for ~1 MB of compressed text missing from a multi-hundred-MB archive.
With
upload_split: true, the night is uploaded as two archives, and the config documents the intent (.config:401-409):The actual archive contents diverge from this in both directions:
_imgdata— including the timelapse, so stations upload it twice every night._imgdatais missing the one small file that would make it self-contained for calibration work: CALSTARS.Cause
In
RMS/ArchiveDetections.py, the split predicate is a filename test:...but both
archiveDir()calls then receive the fullextra_fileslist, andMisc.archiveDir()copies those files into each archive directory.extra_files(assembled inRMS/Reprocess.py:536-576) is not just the small calibration files — it includes the timelapse.mp4, the FT timestamps tarball, flux products, and sky-model.npzfiles.Meanwhile CALSTARS and FTPdetectinfo are not in
extra_files; they ride in the generic night file list as TXT files and therefore land in_metadataonly.Observed contents of a real production archive
CA000Q_20260604_013355_478445_imgdata.tar.bz2(station onupload_modewith restricted FF upload) contains:Not present:
CALSTARS_*.txt,FTPdetectinfo_*.txt.Why it matters
Wasted bandwidth. The timelapse is typically the second-largest file of the night. Duplicating it (plus FT tar and npz products) into
_imgdatadoubles their upload cost across the fleet, on the archive that is already the big one — directly against the stated purpose of the split._imgdatais not self-contained for calibration. Downloading_imgdatais the natural thing to do to open a night in SkyFit2 — and it opens fine (images, config, platepar, mask are all there). But without CALSTARS the detected-star are missing, and the user has to go back for_metadata— for ~1 MB of compressed text missing from a multi-hundred-MB archive.