`project_status` only COUNTS open escalations; this returns each one with its
kind, reason, detail_md, recommended_action, and (when task-scoped) the
blocked task's title + PR url. A card about a roadmap item carries its
`roadmap_item_id` (null for a task-only, project-level or synthetic row),
which matches the `id` in `list_roadmap`. A "forever-paused" project with no open
`project_pause` row is surfaced as a synthetic `orphan:<project_id>` row.
Each row carries a server-derived `task_retry_available` flag and an exact
`next_tool`: eligible recovery blocks route to `retry_blocked_task`, roadmap
parks to `rearm_roadmap_item`, platform conflicts to their structured
resolver, an orphan block whose task keeps its own PR to the owner tool
`requeue_for_review` (it takes the row's task_id, not its id), other stale
work to `replan_task`, an open planning question (reason
`expand_needs_clarification`, with its `planning_questions`) to the owner
tool `answer_planning_question`, and only safe auxiliary cards to
`resolve_escalation`. In the legacy ui-review mode only, an eligible
platform conflict on a web_app task also lists `evidence_selector_cells`,
the input of the owner-only `correct_evidence_selector` decision. With the
autonomy ladder enabled (the default) that field is absent and a card
Keelen attributed to its own postprocessor routes to
`resolve_platform_regression`.