Qiiub POS · Task 11 · C — AbandonmentBlock LIGHT (v-final — block default, total-gated). Estado: abandonmentMode default = block (#578 / ADR-0107 Amendment 1, merged — intacto). block (default, hero): tier-2 NO declinable, ventas nuevas BLOQUEADAS hasta resolver — safe-default por error asimétrico: protege al merchant regulado (custodia de efectivo, p.ej. farmacia con controlados) que en warn incumpliría sin enterarse. warn (alternativa configurada, panel abajo): banner persistente + flag en auditLog, la caja sigue vendiendo; opt-in para quien no tiene requisito de custodia. Hard floor en AMBOS modos: ningún cajón cierra-Z sin conteo — warn solo difiere el momento de accountability al cierre, no lo elimina. total-gating: el monto esperado ($342.50) solo aparece POST-identify (baseline del conteo), nunca antes — cero dólares pre-auth. No hay "not now" (ese es TakeoverPrompt tier-1). Alcance: FixedDrawer (cajón compartido) only — el dueño se ausentó mientras otros timbran (seller-join-sin-conteo); no aplica a CarryDrawer/NoDrawer. Resolución 3-tier (ADR-0110): autoridad presente cuenta (resolveTier2 normal-resolve) · fallback emergency-takeover marcado (EmergencyTakeover + flag, seeded enabled) · tier-1 portal hasta PH3. Revisión = CLARIDAD + total-gating.   Created: 2026-06-25 | Last Updated: 2026-06-27
After identify · Resolver counts
Expected in drawer$342.50
The expected total is the count baseline — it appears only after the resolver (present authority, or self in emergency) identifies. Never on the block screen above. One structural rule: no drawer amount renders without an authenticated actor behind it.
Configured alternative · abandonmentMode = warn
María García's drawer was left unattended — resolve it before close.
Sales continue · flagged in the audit log · count still required at close
In warn mode the lane is NOT blocked: a persistent banner over the live register + an auditLog flag, but selling continues. The amount stays hidden here too — total-gating holds in both modes. The hard floor still applies (no Z-close without a count), so warn defers the accountability moment from abandonment to the close — the merchant-chosen throughput trade-off, for merchants with no cash-custody requirement. Opt-in, not default (the default block protects the regulated merchant who would otherwise be non-compliant without noticing).

Clarity map — AbandonmentBlock (v-final, block default)

Clarity review. The point: by default the screen is honestly obligatory (block protects the regulated merchant); warn is the configured opt-in; the count is never skipped in either mode; and no cash amount shows before auth.
aFixedDrawer (shared) only — the language follows from the scope. The till is fixed to the terminal and others ring on it via seller-join (no count in between), so the owner (María) can be physically absent while the lane keeps selling. Does not apply to CarryDrawer (cashier carries their tray — always an owner present) or NoDrawer (no cash). Hence "Drawer owner stepped away" — the accountable person is gone, not "ownerless drawer" and not "the metal tray was left open."
bNON-declinable (block, the default). No "not now," no close. The only exits resolve the drawer. (The declinable case is TakeoverPrompt tier-1 — kept in a separate screen so obligatory is never mixed with optional.) Full-screen stage, not a translucent scrim — the block is total.
cblock / warn knob (ADR-0107 Amendment 1 / #578, intact). The tier-2 action is the per-merchant knob abandonmentMode, default block. block = the hero above (blocks new sales — safe default for cash-custody merchants, asymmetric-error logic: a regulated merchant left in warn is non-compliant without noticing). warn = the panel above (persistent banner + audit flag, keep selling), a configured opt-in for merchants with no custody requirement. Same model — only whether selling is blocked differs. Hard floor in BOTH: no Z-close without a count; warn defers accountability to the close, it does not remove it.
dTotal-gated. Pre-identify shows whose drawer + how long (decision + accountability) but never the cash amount — zero dollars pre-auth, in both modes and on the banner. The expected total appears only post-identify, as the count baseline (illustrated in the post-auth block). No drawer amount renders without an authenticated actor behind it.
e3-tier resolution (ADR-0110), ordered. Primary = present authority counts (resolveTier2 normal-resolve). Fallback = self-attested emergency-takeover when nobody is present — seeded enabled by default (a dead drawer with no manager is unacceptable), per-merchant knob to disable. Tier-1 (portal/online unlock) is prepared-not-connected until PH3, shown as a note, not a live button.
fThe count is never skipped. Both resolution paths count the drawer; only the actor differs. Copy makes the consequence explicit before the tap.
gEmergency is honest, not hidden. It stamps EmergencyTakeover + a reconciliation flag (the audit mitigation for the solo-offline-no-authority deadlock); the UI says "flagged for reconciliation" so the operator knows it is recorded, not a silent escape hatch.