solar/docs/TRADING_RELEASE_CHECKLIST.md

3.1 KiB

Trading Release Go/No-Go Checklist

Release Info

  • Date:
  • Environment: prod / staging
  • Reviewer:
  • Build/tag:
  • Decision: GO / NO-GO

A) Core Functionality (must pass)

  • Trading page loads without JS/API errors
  • Expected section shows base + range values
  • Price coverage card visible with A/M/B
  • Daily expected table shows:
    • base revenue
    • revenue range
    • base kWh
    • kWh range
    • source mix
    • quality
  • Historical section still works (summary + chart + table)

Expected pass values (example, not fixed):

  • hours_total = 168 for days_ahead=7
  • hours_with_price > 0
  • A + M + B + missing = hours_total
  • missing should usually be 0 or low

B) Price Ladder Validity (must pass)

  • Near-term hours include A (actual day-ahead)
  • Future hours include M (model prediction)
  • B only used when A+M unavailable
  • No unexplained all-zero expected revenue days when kWh > 0 and coverage exists

Quick interpretation check:

  • Healthy pattern: A concentrated early horizon, M dominant later.

C) Forecast Verification (must pass if feature enabled)

  • Verification panel loads
  • Metrics shown (e.g. MAE/MAPE/within-10%)
  • Benchmark delta shown (pred vs benchmark)
  • Uses historical released period (not future-only)
  • n_pairs > 0 for tested range

D) Localization EN/NL (must pass)

  • EN strings correct for new Trading fields
  • NL strings correct for new Trading fields
  • Language toggle updates all new labels
  • No mixed-language leftovers in Trading

E) Backward Compatibility (must pass)

  • /trading/expected still returns legacy fields:
    • total_expected_revenue_eur
    • total_expected_kwh
    • daily[].expected_revenue_eur
    • daily[].expected_kwh
  • UI remains stable if extended fields missing (graceful fallback)

F) Operational Health (must pass)

  • No 500 responses for Trading endpoints
  • No new DB/upsert rollback errors in backend logs
  • No CardinalityViolationError in recent logs
  • Scheduler refresh still running after deployment window

Use one known location (e.g. be-aalst):

  • GET /trading/expected?location_id=<id>&days_ahead=7
    • returns summary, daily, meta
  • GET /trading/forecast-eval?...
    • metrics + n_pairs
  • GET /trading/forecast-benchmark?...
    • revenue comparison fields present

H) Go/No-Go Rules

GO if all are true

  • Section A, B, D, E, F all passed
  • No sev-1/sev-2 defects open
  • API smoke checks are green or known non-blocking

NO-GO if any are true

  • Missing/incorrect expected revenue logic
  • Localization broken in either language
  • Backend errors affecting data integrity
  • Trading endpoints unstable (5xx bursts)

I) Defect Log (if any)

Severity Area Issue Repro Owner ETA

J) Final Sign-off

  • QA: PASS / FAIL
  • Product: PASS / FAIL
  • Engineering: PASS / FAIL
  • Final decision: GO / NO-GO