Breatic is an AI-native real-time collaborative workspace for content creators, where people and AI agents plan, generate, and edit image, video, audio, and text together on a shared infinite canvas.
The concrete problem was not a missing control. The same model-parameter facts were described in model configuration and again in frontend/shared tables. A creator needs the input shown by the panel, the parameter proposed by an agent, and the rule enforced at submission to be the same fact. The intended experience is simple: choose a mode, see only valid inputs, and never discover a second rule at the final gate.
One parameter had several unofficial authors
The panel, agent proposal tool, and enqueue gate each crossed the gap between model YAML and copied tables differently. The system could be internally consistent in each place while contradicting itself as a whole.
Six sources, one capability contract
Every parameter must now declare one fill source: canvas, pool, editor, panel, remote, or none. These are not six visual widgets. They say who is responsible for supplying the value. none also requires a note explaining why no UI entry exists.
Media parameters can declare accepted media types, optionality, conditions, and modes. Mode declarations state their material sources and whether all or any are required.
Deletion exposed the real boundary
Ten of fourteen model-fact tables disappeared. Four became parameter-name constants. Thirty-four unread required_inputs entries were removed.
One table deliberately remained. Six visual video slots share only four parameter names, so declarations cannot infer how the panel should draw them. The catalog owns capability truth; the interface owns presentation.
A declaration is only real when consumers claim it
Twelve guard categories check both directions: every fill source has a component that handles it, and every control rendered by the panel exists in the catalog. They also compare media types, conditions, modes, and localized labels. A disagreement rejects loading and identifies the model and parameter.
In browser verification, changing six video modes made slots follow the declarations. end_image disappeared outside first_last. Empty-prompt and empty-reference-pool rejections used the same capability facts.
The broader lesson is not “put everything in YAML.” It is to decide which layer may state a fact, which layers may only consume it, and which details genuinely remain presentation. Duplicated truth is still duplicated risk—even when every copy agrees today.
Implementation: https://t.co/dxmlYOJ13l
Join the Breatic community: https://t.co/XAzoXldsoi
Building Breatic in Public · #028
#Breatic #AICoding #SoftwareArchitecture