Modules
Dependency Direction
Keep dependencies flowing from specialized packages toward shared primitives:
When adding a new dependency, check that it does not create a cycle or pull implementation-specific concerns into a lower-level package.
Package Boundaries
Package | Add code here when it is about |
|---|---|
Cross-cutting primitives that are useful without domain-specific dependencies. | |
Reading, writing, storing, and versioning configuration data. | |
| Module discovery, named exports, metadata, and composition container helpers. |
Transport, protocol parsing, binary serialization, endpoint routing, and device communication. | |
UI-agnostic application model behavior such as identity, tree structure, focus, navigation, layout, and undo. | |
| Persistent storage formats, packages, hierarchical stores, and time-series data. |
| Shared test-only helpers for xUnit-based projects. |
Test Placement
Put tests in the matching *.Test project:
Asv.Common->Asv.Common.TestAsv.Cfg->Asv.Cfg.TestAsv.IO->Asv.IO.TestAsv.Modeling->Asv.Modeling.TestAsv.Store->Asv.Store.Test
Prefer focused tests near the behavior being changed. Broaden coverage when the change affects a shared contract, serialization format, or cross-package workflow.