This file captures cross-cutting modeling preferences for the project. These are not Rust-only rules and should inform shared-domain design in any implementation language.
Prefer stronger types and clearer boundaries over broad “flexible” models that rely on optional fields, runtime switches, and late validation.
The project is willing to accept a somewhat more complex type structure when that complexity makes invalid states harder to represent and module responsibilities easier to understand.