Performance and model complexity
Documentation status: guide — see Maturity and evidence.
Declarative modeling changes where performance work is applied. Complexity grows with concepts, reified relations, joins, events, views, processes, and publication channels.
Keep query surfaces bounded
Collections and joins should correspond to meaningful application access patterns. Avoid broad joins in frequently refreshed views. Use context, filters, and explicit collection paths to narrow providers. When an access pattern is stable and frequent, model it explicitly instead of duplicating ad hoc queries in screens or scripts.
Separate long-running work
Long or remote operations should normally use asynchronous process state and messaging instead of blocking a UI or service call. This keeps failure, retry, and progress observable.
Measure model-level operations
Measure provider execution, collection/join evaluation, view refreshes, service calls, event routing, and process transitions. High-frequency paths should remain simple and use the narrowest conceptual scope that preserves the required semantics.
Performance optimization must not silently change conceptual meaning. An index, cache, projection, or provider optimization is acceptable only if the public contract remains equivalent.