# Flow — Send Back to the Original Filler (Team Leader)

> Persona: **Priya** (TL). Source: `PROJECT_PLAN §9 #3` (send-back destination) + `§9 #8` (re-fill restarts cascade from TL) + `§4b`. Screens: `TL-CHK-VERIFY` → (returns to) `MON-CHK-STATUS`. Modal: `send-back-reason.html`.

---

## Preconditions
- Ramesh's Trampoline Daily is `SUBMITTED` and open on Priya's `TL-CHK-VERIFY`. On review, Priya finds a problem — e.g. an A-item photo is blurred, or an item answered G that should be A.

## Steps

1. **Reject.** Priya clicks **Send back** (red, `§6.4`).
   → The **send-back-reason modal** (`send-back-reason.html`) opens.

2. **Give a reason (required).** The modal has a **required** reason textarea; the confirm button is disabled until it is non-empty (e.g. *"Item 5 photo is blurred — re-shoot the mat seam."*). Priya types the reason and confirms.
   → `POST /checklist-instances/:id/sendback` (`If-Match: <version>`) `{ reason }`. (Empty reason → 422; the UI blocks it first.)

3. **Server transition.** State → `SENT_BACK`; an `ApprovalLog` is written with the reason; the instance is returned to the **original filler — Ramesh** (NOT to Priya, and NOT to any previous approver, `§9 #3`). **Ramesh is notified** (`SENT_BACK`, FCM + in-app). The instance leaves Priya's verify queue.

4. **Filler re-fills.** On `MON-CHK-STATUS` Ramesh sees a prominent **red banner** with Priya's reason + a **Re-fill** CTA → reopens `MON-CHK-FILL` (`IN_PROGRESS`). He fixes the issue (re-shoots the photo / corrects the answer) and re-submits.

5. **Cascade restarts from TL (`§9 #8`).** On re-submit the instance is `SUBMITTED` again and the cascade **starts fresh from TL** — it **re-enters Priya's verify queue**. Priya reviews again and approves (or sends back again).

## Rules enforced in this flow
- **Reason is mandatory** on send-back (`§4b`) — UI blocks an empty reason; server returns 422 if bypassed.
- **Destination is always the original filler** (`§9 #3`) — even if SM or OH had been the one to reject (in their packs), it still returns to Ramesh, not down one step.
- **Re-fill restarts from TL** (`§9 #8`) — not "resume at the rejecting level". Each round is a full fresh cascade.
- **Scope:** Priya can only send back instances in her own team + Game Zone; otherwise 403.

## Result
- A rejected checklist returned to the floor person who filled it, with a clear reason, that — once corrected and re-submitted — climbs the cascade again from the Team Leader.
