Canon / ai-driven

rule.ai.ux-streaming-contract · canon

Treat streaming as semantic asynchronous state

Queued, generating, tool activity, partial, completed, stopped and failed states are distinguishable and accessible.

Guidance

Reserve layout, preserve focus and user input, expose stop, batch live announcements and label partial output as partial. Completion is a state transition, not the last received token.

Verification contract

Keyboard stop, focus retention, screen-reader announcement, reduced-motion and layout-shift tests

Supporting references

Implementations and verification artifacts