The submit flow discarded the real failure reason and always returned the generic "Failed to submit benchmark results." to the UI. The most common cause is the leaderboard's one-per-hour rate limit (HTTP 429), which left users with no idea why their submission failed or that retrying shortly would also fail. - benchmark_controller: return a clear, actionable message. Name the rate limit explicitly on 429; otherwise pass through the underlying detail (repository error or a service validation message like "already submitted"), falling back to the generic only when we have nothing. - benchmark_service: attach the raw upstream `detail` to the thrown error so the controller can surface it. The frontend already renders the server `error` string, so no client change is needed. |
||
|---|---|---|
| .. | ||
| controllers | ||
| data | ||
| exceptions | ||
| jobs | ||
| middleware | ||
| models | ||
| services | ||
| utils | ||
| validators | ||