Two Important review findings on useDrawDistribution:
- ensureShardRegistered cached the rejected promise on fetch/registration
failure, permanently stuck for that (model,year,state) key until a full
page reload. Now deletes the cache entry on failure so the next caller
retries fresh.
- status could become 'ready' even when the LEAID-bound query returned zero
usable rows (district not present in the draws shard), silently mislabeling
a fitSkewedInterval-only render as real posterior draws. Now requires at
least one group with actual draws before reporting 'ready'.