Skip to content

Dashboard shows no staleness indicator: a stale forecast looks identical to a fresh one #33

Description

@ducroq

When the pipeline degrades, the dashboard says nothing. On 2026-09-10 the production forecast was re-published unchanged from an anchor ~34h old and a visitor to https://energy.jeroenveen.nl had no way to tell.

What the page does today

dashboard.js:102 loadAugurForecast fetches augur_forecast_shadow.json and stores it, but never reads metadata.t0 or metadata.last_updated. The only last_updated in the render path is data-processor.js:35, which is new Date().toISOString() — the browser's clock, on the Energy Zero path, unrelated to the forecast.

So the two fields that would reveal staleness both exist in the JSON and neither reaches the page. Worse, they disagree in a way that reads as healthy: on the 09-10 run last_updated was 2026-09-10T03:01 (fresh) while t0 was 2026-09-09T20:00 (stale), because the run genuinely executed — it just had nothing new to work with.

Why this is worth fixing

The pipeline alarms loudly and correctly: [ALARM: t0 stale], [ALARM: eval stale], the heartbeat email. Every one of those is visible only to us. The product itself is the one surface a user sees, and it is silent — a forecast anchored 34h ago renders exactly like one anchored 4h ago.

Sketch

  • Surface the forecast's t0 age on the Prices tab (e.g. "forecast anchored 34h ago" when age exceeds a threshold).
  • Grey or dash the band past some staleness bound rather than drawing it at full confidence.
  • Hours already in the past relative to t0 should not be drawn as forecast at all — related to Dashboard forecasts the first ~24h against a day-ahead auction that already cleared #30, which is the same class of problem from the other end.

Product change, not a model one. Found while diagnosing the 2026-09-07..09-09 EDH outage.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions