Screen and State Register
Every state the system permits, whether or not anybody drew it
Illustrative, for a fictional B2B product called Warminster. A billing, seats and permissions release: 34 screens, 6 roles, one payment provider. Rows are generated by crossing the screen inventory against the contracts, so a row exists before anybody notices the frame is missing.
| Screen | Class | Cause or condition | Enumerated from | Drawn | Resolution |
|---|---|---|---|---|---|
| Role editor | Error | 409, another editor saved a conflicting change while this form was open | PUT /roles/{id} | No | Open |
| Role editor | Denied | Org admin may not grant a permission they do not hold themselves | Escalation rule | No | Open |
| Role editor | Empty | A new role has no permissions selected and no members assigned | roles.permissions | Yes | Drawn |
| Invite a member | Error | 402, the invitation exceeds the seat count and the plan will not expand | POST /invitations | No | Written |
| Add a card | Error | 3DS challenge abandoned before completion | Provider catalogue | No | Open |
| Usage by member | Empty | Usage exists but the member and date filter matches none of it | Filter state | Yes | Drawn |
| Usage by member | Denied | Read only sees the aggregate but not the per-member column | Field-level rule | No | Open |
| Audit log | Denied | External auditor may read the log but may not export it | Action-level rule | Yes | Drawn |
| Export your data | Loading | Export returns a job id and outlives the page | 202 with job id | No | Written |
| Cancel subscription | Error | An unpaid invoice blocks cancellation until it is settled | DELETE /subscription | No | Written |
| SSO settings | Denied | Billing admin holds no identity permissions and is refused the screen | Permission matrix | No | Deferred |
| 267 further rows, one per remaining required state | |||||