fix(container): keep the storages looked up with di() public
A forum message with an attachment answered with a 500: ForumFile is an Eloquent model, so it cannot be constructor-injected and fetches ForumAttachmentStorage by name, while the definition was private. A private service is inlined into the ones that take it when the container is compiled and stops answering to a name of its own — injection keeps working, the runtime lookup throws.
The same had happened to AlbumPhotoStorage (the installer of the album) and LibraryCoverStorage (Utils, Tree). All three are now declared public next to a comment saying why.
RuntimeServiceLookupTest walks every di() call under system/src and modules, resolves the class names through the imports of the file, and fails when the compiled container does not hold that name as public. It checks visibility rather than has(): a ContainerBuilder still reports a private definition after compile, and only the dumper drops it.
The bug predates the content pipeline; it surfaced while testing pages for it.
The same had happened to AlbumPhotoStorage (the installer of the album) and LibraryCoverStorage (Utils, Tree). All three are now declared public next to a comment saying why.
RuntimeServiceLookupTest walks every di() call under system/src and modules, resolves the class names through the imports of the file, and fails when the compiled container does not hold that name as public. It checks visibility rather than has(): a ContainerBuilder still reports a private definition after compile, and only the dumper drops it.
The bug predates the content pipeline; it surfaced while testing pages for it.