Code, API & Reports
Part of the Designer guide. Previous: Rules & Governance · Back to Overview.
After modeling, you check the result directly in the Designer: code, API surface and findings, without switching to the IDE.

Code Viewer
The Code tab shows the generated code read-only in the browser, with syntax highlighting for PHP and YAML. This makes the result of a build checkable without switching to the IDE. The tree is hermetic: changes happen in the model, not in the generated code.
API View

The API tab is the read-only view of an aggregate's surface, in three columns:
- Commands / Queries of the aggregate, including the bound rule chain and expose status (with a link to rule maintenance).
- Entity tree.
- Lifecycle events.
The build additionally generates the formal API specifications from the same definitions: OpenAPI 3.1, AsyncAPI 3.0 and Protocol Buffers 3, always in sync. The overview is in the Highlights.
Validation
The Validation tab summarizes validator, Designer and schema findings into four categories: Errors / Warnings / Suggestions / Overridden. A suggestion can be overridden via a dialog with a mandatory justification. The exception is recorded permanently and documented in the schema configuration.
Build
One click on Build generates the code tree. The flow:
- Pre-validation — errors show up immediately, not only after half the build.
- Live status per pipeline stage — via server-sent events, stage by stage.
- Cancel — the cancel button stops cleanly between stages.
Build readiness: every aggregate and every process knows whether its draft has changed since the last successful build. The report shows current / build needed / build blocked; the build button is only active when a build is actually needed.
A draft blocks the build
An aggregate with an open draft is additionally build-blocked, independent of drift status, at every entry point. Headless this surfaces as DRAFT_EXISTS (MCP). See Aggregate Designer.
For processes, the reference drift also counts: whether a referenced cross-BC call has changed on the producer side (hash comparison). The Context Map's Reconcile check does the same comparison at domain level.