The work I care about right now often starts with a question. Someone asks for revenue by region, or for last week's outliers, and a draft comes back: charts, filters, a layout. It looks like a product. The risk is that it is a product of one, assembled beside the system instead of out of it.
I maintain a component system and I am also one of its heaviest users. That loop is what keeps a generated view honest. If the only way to get the draft is to leave the primitives, the draft is a fork with a prompt in front of it.
Generation is another consumer
A hand-built console and a generated dashboard are two callers. They should call the same things: tokens, chart primitives, filters, and the states for empty, loading, and stale. The generator chooses and arranges. It does not get to invent a button because the prompt was in a hurry.
Runtime
This is the same rule as a new app from the scaffold. The first commit is already on the platform. A generated view should be born that way too. The first paint already uses the primitives, so publishing it does not create a second design language.
Intent chooses. It does not restyle.
The model is useful at the selection. Which measure, which cut, which chart, which filter is worth showing first. I would not let it re-decide type size, what a partial result looks like, or how a number behaves while the query is still running. Those decisions already have names, and generation should reuse them.
Dense data makes the rule obvious. A custom renderer exists because a default chart gave up on the cardinality. A generated dashboard that swaps in a different renderer for convenience has thrown away the reason the primitive exists. The dense view and the ordinary view are the same family, or the dense one becomes a special case nobody else can compose.
A stream is a state
When the model is in the runtime, the answer arrives in pieces. Partial, complete, failed, interrupted. That is a component state, the same kind of state as loading and empty. If each product draws its own cursor and its own failure, the system has a hole exactly where the new work is happening.
A streaming sentence and a streaming chart can share that state. The person watching should be able to tell what is still arriving and what is already safe to read. A spinner over the whole draft throws away the part that was already useful.
Same leash as the editor
A model in the editor and a model in the product fail in the same direction. Both take the shortest path to something that looks finished. Typed props, a small public surface, and a scaffold that already imports the system are what make the short path the right one. At runtime the short path is to compose what exists. Anything else is a second platform, delivered as a dashboard.
So the check I run on a generated view is narrow. Could it have been published using only the primitives, charts, and states we already ship? If yes, let the model be as fast as it likes. If no, the draft has quietly started a product nobody asked for.
The model arranges. The system is what it arranges.
