Reference
Doctrine
Doctrine is house engineering law for how Lyrikai / Suttle Media code is shaped — governance, not implementation, which is why it lives in Hive rather than in any one repo. Agents and humans cite it by ADR number in PR reviews and plans; they never restate or fork it downstream.
OOP doctrine
Lyrikai code is composition-first: a functional core of pure, deterministic transformations over immutable data, with classes permitted only where an instance truly owns a resource or lifecycle with enforceable private state. Interfaces are structural and named as ports; dependencies are injected through factory arguments from a composition root; inheritance is effectively banned; every trust boundary validates at runtime.
Reading order: House Style (the paradigm contract) → Decisions (the ADR register, cited as ADR-001…) → Contracts-First (ports, boundaries, versioning) → Tripwires (drift detection).
React-universal doctrine
The universal spec for how Lyrikai writes React on any renderer — web or native. Function components and hooks sit over a pure logic core; state lives at the lowest layer that can own it — local first, the URL as the shareable bus, context only for session-shaped concerns, a store only by ADR. Server data enters through exactly one ported data-client seam per app, never ad-hoc fetches inside components. Page logic lives in sibling helper modules a test runner can execute without a renderer; motion lives in one named preset module per app and dies under reduced motion; components are written naively and hand-memoized only with a measurement attached.
Reading order: Shared Core (renderer-agnostic law) → Decisions (cited as
ADR-U###) → Web Dialect → Native Dialect → Tripwires → Principles
(the researched platform guide).
Where OOP and React-universal overlap, OOP wins and is cited — never restated. Product and app doctrines instantiate React-universal per repo and cite this register; they never fork it.
Pack index: doctrine/README.md · doctrine/oop/README.md · doctrine/react-universal/README.md. This page covers the pack READMEs only — the individual ADRs go deeper.