InternalModels
Builds domain models for the previews and tests of lib/ui.
The models' own constructors are internal, which is what stops anyone outside lib/core from building one and lets the SDK add fields to them without breaking callers. internal is module-scoped, though, so lib/ui cannot reach them either, and its previews and tests have to build fixtures somehow. lib/core's own tests are inside that scope and could call the constructors directly; they come through here for the defaults below.
This lives in the debug source set rather than being public: a marker would only ask callers not to look, while a debug-only declaration is absent from the release artifact, so a consumer cannot reach it at all. It stays public because lib/ui resolves lib/core's debug variant and would not see it otherwise.
Every parameter that can carry a neutral default does, so a caller states only what its case is about. That also means adding a property to a model costs one defaulted parameter here rather than a signature every caller has to migrate.
Consumers face the same wall with no equivalent escape hatch, which is what the planned cgs-core-testing artifact is for.