The problem
Generic design systems solve buttons and forms. They have nothing to say about a paused agent run awaiting approval, a settlement in confirmation, or a workflow queue under backpressure, which is most of what our products display.
Our approach
We build the system from the interface problems our own products hit. Every component ships with its loading, empty, partial, and failed states, because those are the states that dominate real usage. Teams we hand work over to inherit the system alongside the code.
This is internal. We are documenting it because it explains why our products look
like each other, and why a handover includes a design system rather than a folder of
screenshots.
Why states came first
Most design systems are organised by component. This one is organised by state.
Every component is defined by what it does while loading, while empty, while partially
resolved, and while broken. In a product built on agents and on-chain settlement, those
are not edge cases. They are the normal condition.