A defective draft says so, above the draft

The review page for a held first email now warns when Clara's own check failed on the draft — and is unchanged when it didn't.

23 Sept 2026 · branch fix-held-draft-needs-attention · captured against propflow-dev · at d67eb49e7a+local

Data note. Every name and balance below comes from propflow-dev, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.

1 · Flagged — the warning sits above the draft

This is the shape of the production hold that started this: Clara's own greeting sat several paragraphs down, too deep for the template to hoist, so the template put another one on top and the renter is greeted twice. Until now this page showed that draft with no comment at all, so it read as an ordinary one to approve.

The warning is the first thing under the header and above the draft, because the failure it prevents is scrolling to the text, finding it plausible, and clicking Approve. It states the consequence in plain words — approving sends this exactly as written. Approve and Reject below are untouched: this is information, not a new gate and not a new button.

Arsenal Banner tone="warning", not a bespoke chip (design-standards §7.1: no decorative bg+border chips, no emoji in product UI).

Asserted in the captured DOM — This draft looks wrong. · the renter gets greeted twice · Read it closely before you approve it · What it says: · Approve. The warning text, the plain-English reason this head actually produces, the consequence sentence and the draft heading are all in the captured DOM — and Approve is still on the page, unchanged.

Flagged — the warning sits above the draft

2 · Clean — byte-identical to today

The control. Same page, same property, a draft that passes Clara's structural check. No banner, no space held for one, nothing moved: the flag is written onto a hold only when there is something to say, so a clean hold has no field at all rather than a false one, and this page renders exactly as it did before this PR.

That is what keeps the warning worth reading. A banner that appears on every hold is a banner nobody sees.

Asserted in the captured DOM — What it says: · Approve. The draft and the Approve control are here; the section below records that the warning strings are NOT.

Clean — byte-identical to today

What a reviewer sees now

Before: a held first email with a doubled greeting arrived in Slack and on this page presented as an ordinary draft to approve, with the structural guard's verdict thrown away at the hold door. After: the same hold carries the verdict, and both surfaces lead with one plain sentence saying the draft looks wrong and why, above the draft itself. Prod hold eschold_c8e85da0-cc04-49cc-b468-9e5e2885a27b is the case this is built from.

PropFlow Docs