# Polling Contract — Calm UI Rules

## Principle
Polling is allowed only when it materially improves UX (active operations). It must be DB-only and must stop when no longer needed.

## Dashboard
- Polling is enabled only while active runs exist (queued/running) for the current tenant.
- Polling is disabled when:
  - No active runs exist.

## Operations index
- Polling is enabled only while active runs exist.
- Polling is disabled when:
  - No active runs exist.

## Modals
- No polling inside modals.
- When a modal is open, polling should not cause churn in the background.

## Technical approach
- Widgets: use `$pollingInterval = null` to disable polling.
- Tables: apply `$table->poll('10s')` only when active runs exist.
