The only place it make sense to me is the validation = at the route level you want to ensure that the given model exists / request attributes defining relationship (pivot), are there. This is how Laravel does this. Having said that this should be responsibity of domain rather than application
Just a quick mention that there is next to no coupling. If you don't use `primate/store`, none of the ORM code gets pulled in. You could be using any other database client.
The same applies to sessions, i18n, or any frontend. They're all either path'd imports or distinct packages.
Data is always the important part of any real program.