{{-- The one message a completion can fail with that has no field to attach to (CR-10 §6.3). "This task has already been completed." and "This entry cannot be completed." are refusals about the ROW, not about anything the user typed — and on a document task there is nothing typed at all: its ✓ is a confirm() with no dialog behind it. So they are rendered here, as a dismissible strip in the flash region's own `.info-box` vocabulary, at the top of whatever card offers the button. Included by the dashboard (directly ABOVE the Pending Tasks card) and by the two Follow Up History cards (at the top of the timeline). It renders nothing at all unless the bag holds a `task` message, so it costs nothing on every ordinary page load — which is also what lets the dashboard include it unconditionally, outside the `@if` that draws the card. That placement is deliberate and dashboard.blade.php's header records why: the commonest way to see this message is to complete your LAST pending task in one tab and press ✓ on it in another, and by the time the redirect lands there is no card left to be inside. Not the flash partial itself: these arrive as validation errors on a redirect (`ValidationException` → `withErrors`), not as `session('error')`, and re-flashing them into the session in the controller would mean the message survived one navigation too many. The dismiss control is the flash partial's — `data-nrems-dismiss`, handled by NREMS.UI in nrems-custom.js — so this behaves like every other closable strip in the shell rather than needing Bootstrap's Alert component. --}} @php $taskErrors = $errors->getBag(\App\Http\Requests\Inquiries\CompleteFollowUpRequest::ERROR_BAG); @endphp @if ($taskErrors->has('task'))
{{ $taskErrors->first('task') }}