What problem does it solve? Teams building Angular applications with contract-driven backends often end up with inconsistent entity models: contract types leak into templates, hand-written copies of generated types silently diverge, and null handling varies per developer. This rule standardizes how record models and their mappers are declared so every entity follows the same structure. ## Core Features & Use Cases - Two-sided model convention: Declares Api (contract side) and State (screen side) inside one I<Entity> namespace, with optional Draft and nested Short levels for list rows. - Mapper discipline: Requires a mapper inheriting BaseMapper between the sides, with casts going through this.typeCast instead of ?? fallbacks, and screens reading only State. - Shared selection types: Mandates page, order, and filter types from @rt-tools/utils so no duplicate pagination types are created. - Use Case: When adding a new entity to an admin panel, load this rule to declare the namespace, levels, and mapper correctly, regenerate the contract, and avoid pitfalls like as Type casts or optional scalar fields. ## Quick Start Load the entity-models rule and declare a new record model with its namespace, levels, and BaseMapper-based mapper following the entity-models-new pattern.