# Layers The layers are crates. Cargo enforces the DAG through the `pkgs/mrlyrs/*` manifests: core ← math ← ui and core ← font ← ui; core ← music ← apps; os leans only on core; apps sees all of those; net sees everything and owns the card. `pkgs/mrlyssg` is the static-site parts: core ← ssg and font ← ssg, nothing else. Nothing in `pkgs/` imports net, ssg least of all; the `apps/*` binaries (cli, gui, git) sit on top and may. ## The one lint `utils/layers.py` enforces the single rule Cargo cannot: apps never import other apps. Shared app code goes in a kit, not a sibling. Run it before shipping (ship.py does). ## Inside a crate Module boundaries inside a merged crate (math/physics/crypto in mrlymath) are convention, not compiler-checked. Families keep talking through their mod.rs face.