Architecture

Ownership and dependency direction are separate decisions.

A product owns the behavior it contributes. An integration depends on both cores. Neither core depends back on the integration.

Canonical seam

Flow controls its Toolkit integration

RunicFlow
Headless core
RunicFlow.ApplicationBridge
Owned by Flow
RunicToolkit.ApplicationBridge
Application boundary

Product autonomy

Independent histories

Flow, Assets, Translations, Translations Editor, Command Line, Toolkit, and CsWebUi each version and release from their own repository.

Stable seams

Explicit compatibility

Integrations pin exact cross-product versions during the preview. Compatibility is evidence recorded by consumers, frontend builds, and applicable NativeAOT runs.

Framework neutrality

Cores stay portable

Runic Flow owns no UI state. Runic Assets owns no host. Runic Translations begins with .NET but defines language-neutral contracts.

Application boundary

The editor consumes the translation system

Runic Translations owns schemas, compiler behavior, runtime contracts, generators, and authoring APIs. Runic Translations Editor consumes those surfaces as a downstream desktop application and owns translator UX, packaging, and releases.

Integration ownership

Behavior lives with its author

RunicAssets.RunicToolkit and RunicFlow.ApplicationBridge live and release with Assets and Flow respectively.

Application boundary

Schema first, renderer last

Effect Schema is the authority for Application Bridge wire values. Deterministic JSON Schema and a canonical manifest feed the reflection-free C# generator. UI frameworks then project validated application events into their own state systems without owning transport lifecycle.