| Simple query-only | domain/tag + data/tag | Small non-paged read-only collections or singleton/detail lookups | Single repository contract + abstract use case | Single repository + non-paged source + TagUseCaseImpl | Feature/common code reads through interactor |
| Read-heavy multi-contract | domain/media + data/media | Detail, paged, and network variants in one domain package | Nested repository contracts such as Detail, Paged, Network | Types.kt aliases + MediaRepository.* + MediaInteractor.* | Feature ViewModels consume read interactors |
| Hybrid query + mutation | domain/medialist + data/medialist + task/medialist | Fetch plus save/delete/sync for the same concept | Nested contracts per operation | Separate source/repository/interactor classes per operation | Feature/common code reads directly, mutations usually enqueue task workers |
| Hybrid fetch + action | domain/review + data/review + task/review | Paged/detail reads plus vote/save/delete writes | Nested contracts per read/write action | Separate read and mutation sources, repositories, and interactors | Review UI fetches via feature ViewModel; voting/deleting routes through task workers |
| Mutation-only | domain/favourite + data/favourite + task/favourite | A focused toggle/save/delete operation with no local read screen | Small sealed param + single repository contract | Lean Types.kt, single repository, single interactor bridge | UI/common code creates task params; worker runs the mutation interactor |
| Android/platform support | android/core + android/navigation + android/deeplink | Shared platform helpers, shell navigation, deep-link entry, or internal Android API reuse | N/A | Koin-backed helpers, providers, controllers, and shell content | app/core, app shell, and entry layers consume the platform API |