Post-review UX feedback on the run journey:
- The post-trigger card computed its ETA from the just-cleared scenario
selection, so it always promised "~5 minutes" whatever the run size.
ETA now comes from the captured run (estimateRunMinutes, TDD'd) and the
done state is a compact status banner above a still-visible Recent runs
table, which polls every 5s while a run is moving (historyRefetchInterval,
TDD'd) — trigger, glance, leave.
- The only way back was a text-xs gray-400 breadcrumb (~2.5:1, sub-AA);
replaced with an accessible "← Back to {portfolio}" link.
- "Remove all filters" button on Step 2.
- Scenario rows were a checkbox nested inside a button (state invisible to
screen readers); now a label wrapping a real checkbox.
- Large-run confirm lists the scenario names and selection being committed,
is labelled, closes on Escape, and starts focus on "Go back".
- Postcode filter no longer fails silently: loading and error-with-retry
states.
- Run status "Dispatched" reads "Starting up"; scenarios page gains a
"Run modelling" entry point.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- The run's config now lives on the task row's new `inputs` column
(migration PR #361) instead of a config subtask — sub_tasks belong
entirely to the distributor's execution work.
- Distributor path corrected to /v1/modelling/trigger-run.
- Sub-task granularity is batches, not properties: history shows progress
as a percentage under the status chip; the Plans column always shows the
plan count (batch counts are never comparable to property/plan numbers).
- ADR-0008 amended accordingly.
Live verification of the task write waits for PR #361 to be applied.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>