Public API per module
Other modules may only use a module's contracts, events, data objects, enums and exceptions, or classes you mark with
Verifiable boundaries between the modules of a Laravel application, checked in CI.
$ php artisan cordon:verify
Cordon analysed 212 files in 6 modules (148 cross-module references).
x [internal_access] Modules/Billing/app/Services/CheckoutService.php:13
Module [Billing] uses Modules\Catalog\Models\Product, which is internal to module [Catalog]. Depend on its public API instead (a class in a public namespace such as Contracts, or one marked #[PublicApi]).
x [cycles]
Modules [Billing, Catalog] form a dependency cycle: Billing -> Catalog -> Billing. Break it by inverting one dependency, for example with an event or a contract.
2 boundary violations.