Partial results instead of lost runs. "Save found notices before the run times out" (saveBeforeTimeout, on by default) and "Finish within" (timeBudgetSecs). Such runs end Succeeded with OUTPUT.complete: false instead of Timed out with nothing saved. If you alert on timed-out runs, also check OUTPUT.complete.
Progressive delivery (deliveryMode: "progressive", opt-in, not in monitor mode): each portal's notices are saved as soon as that portal finishes.
Per-portal time limit (sourceTimeBudgetSecs, default 900 s). A Scotland or Wales portal that times out or errors twice in a row is skipped for the run.
Restart safety: if the platform restarts a run, notices already saved are not saved or charged again (run ledger DELIVERY-LEDGER-n). Monitor mode checkpoints after each saved batch, so a stopped monitor run does not re-charge the next run. Each notice is billable at most once per run.
Exact budget: a run whose maximum charge is used up exactly by Max notices is complete (chargeLimitReached: false). The "Raise the run budget" warning appears only when a wanted notice could not be saved.
New output:
OUTPUT is written at the start (runState: "RUNNING") and at the end ("FINISHED");
- new fields:
complete, incompleteSources, stoppedEarlySources, sourceStates, timeBudget, deliveryMode, crossSourceDuplicatesSkipped, restartAlreadySaved, duplicateUidSkipped, pricingWarning;
- a
RUN-STATUS record is updated while the run is in progress.
All earlier fields are unchanged.
Saving is batched (100 notices per call).
Monitor: a warning is logged after 3 consecutive runs that stopped early.