When a type mainly carries a few related values with value semantics.
Records are strongest for DTOs, summaries, and value objects where the type mostly represents data. They reduce boilerplate, but the deeper benefit is that they communicate that the type behaves like a value.