# Hub-owned filter flats

Telescope Settings → Filter flats stores each filter wheel's per-filter quantity
multiplier and integer order-priority shift in `obs_settings.filter_flat_settings`.
Owners and admins save these through `configure_filter_flats`, using the existing
calibration-setting authorization, persistence, and OBS settings sync.

The quantity slider covers 0.25×–5×. The acquisition count remains the existing
`max(1, round(number_of_flat_to_collect * quantity_multiplier))`. Positive order
priority moves a filter earlier, negative later, and zero leaves its position
alone. The existing throughput, calibration-age, photometric, twilight-band,
diffusion, and lum/air ordering rules still apply. Priority has no new magnitude
limit. Existing throughput-learning behavior also remains unchanged.

`filter_flat_defaults.json` preserves the values from all 31 OBS configuration
variants across 26 sites. At Hub restoration, configured sites are backfilled
and persisted. The cached legacy config is also imported before replacement,
preserving any deployed config customization. Existing owner values always win;
new filters default to 1× and zero shift. OBS status reports cannot overwrite
these Hub-owned values, including when reporting a stale snapshot.

Deploy the Hub backend, defaults file, shared helper, and rebuilt frontend
before deploying OBS with the simplified configs. OBS reads both values from
Hub during startup and settings refresh (the existing 60-second cadence), and
refreshes on the settings command. Both the single-camera flat routine and the
multi-camera planner use these settings. The commissioning quantity estimates
use the same Hub values. Config rows now contain the filter name, wheel
positions, and any optional throughput; they no longer contain flat policy.
