The timeseries state keeps whatever a day's first run produced:
build_timeseries fills a window day only when it is absent from state.
That is right for the daily cron, where each day is seen once, but it
means re-running a day never reaches the roll-up -- the artifact is
replaced and the chart keeps the old numbers.
Add refill_dates, naming days to recompute from their artifacts, and
--timeseries-refill-dates on the task script to go with it. Those days'
artifacts are not local to the run, so the script fetches each from the
index first, preferring the build-date route a backfill publishes under
and falling back to the cron's pushdate routes. A day it cannot fetch is
skipped with a note rather than failing the run, leaving its state as it
was.
Exposed on the action as refill_dates. That run keeps the cron's index
routes and its timeseries step, since recomputing shared state is only
meaningful from a run that publishes it, and is refused alongside a
pinned date: a run for a past build date must not publish a roll-up
ending at that date.
Differential Revision: https://phabricator.services.mozilla.com/D323654