Architecture Requirements

STUDIO-ARCH-001 GUI as Adapter
status: Must

The GUI reads domain state and translates user actions into explicit intentions/commands without deep internal cross-manipulation. Persistent changes to the domain model are applied only through the Synarius Core controller surface that implements the Controller Command Protocol (STUDIO-ARCH-005).

STUDIO-ARCH-005 Controller command protocol for model mutations
status: Must

Every change to domain model content that must be reflected in a saved project or be reproducible from a command script SHALL be executed exclusively through that controller API (Controller Command Protocol; specified in synarius-core). Studio MUST NOT mutate the model graph or user-relevant attributes by bypassing this layer (for example direct writes to model.root children, ad-hoc mutation of domain instances without going through controller commands, or parallel “shadow” graphs that diverge from the controller-owned model).

Exceptions are limited to: read-only access for display and layout; purely transient GUI/scene state that is not part of the persisted model; and documented temporary gaps until the protocol exposes the missing operation.

STUDIO-ARCH-002 Domain and Rendering Separation
status: Must

Graph/simulation logic remains testable and usable independently from Qt rendering.

STUDIO-ARCH-003 Robust Resource Resolution
status: Must

No absolute hardcoded paths are used; resources are resolved via project-relative or configurable paths.

STUDIO-ARCH-004 Encapsulated Concurrency
status: Must

Simulation threading is encapsulated via defined signals/queues and does not block the GUI thread.