How do you stop a broken data run from overwriting good data?
Add a health guard before you write: if not every constituent prices cleanly and the benchmark isn’t valid, exit with a non-zero status before writing the file. A failed run becomes a no-op instead of an outage, and the live page keeps the last good snapshot. Pair it with an inline baked fallback on the front end so a failed fetch never shows an empty box.
