-
Layer separation is strict. lib/model/ depends on nothing. lib/data/ may depend on model/. lib/analyzer/ may depend on model/, data/, and util/. lib/util/ depends on nothing.
-
No cyclic dependencies between lib/ subdirectories.
-
bin/main.dart only accesses the public API. Never import internal modules directly from the CLI entry point.
-
Public API should be minimal and intentional. Internal implementation details should not be exposed.
-
Files outside lib/ (e.g., bin/, test/) should not be imported by lib/.
-
lib/util/ should be independent of other layers — no imports from model/, data/, or analyzer/.
-
Test files mirror the lib/ structure. test/analyzer/ mirrors lib/analyzer/, test/model/ mirrors lib/model/.