- Shipped
- August 6, 2026 at 4:18 PM UTC
- Author
- Kamo
- Commit
- 012e197
Per-assignment outcomes — voided, skipped-executed, not-found — because an admin voiding a package for six named people needs to know which had already executed (their evidence stands) and which were never assigned (a stale roster id). A bare 200 cannot say that. Assignment transitions are synchronous: the assignment row, not the e-sign status, is what gates the member and drives the badge. Envelope voids go off-thread and are pre-filtered on SIGNED/VOIDED, because voidEnvelope 409s a completed envelope and an acknowledge-only document has no envelope at all. One member can hold several rows after a redelivery, so every row gets its own decision.