Evaluate where the carousel code should live and how data flows between components. Produce a recommendation that the team can act on for the carousel port task.
This task should be completed before other carousel subtasks are picked up.
=== Questions to answer
**Where should the code live?**
- MinervaNeue is the leading candidate (skin-level presentation, mobile-only). Could it alternatively live as its own module in MMV? What are the tradeoffs?
- What code from the prototype needs to be ported? (`thumbExtractor.js`, `excludedImageSelectors.js`, carousel UI component, etc.)
- We don't want this in MobileFrontend
**How do thumbnails get from MMV to the carousel?**
- Should MMV's bootstrap fire a client-side hook with discovered, non-excluded thumbnails that Minerva consumes?
- What should the shape of that hook be? (image URLs, file titles, alt text, dimensions?)
- Can we guarantee MMV's discovery runs before Minerva needs the data?
**Server-side container injection**
- What server-side check is sufficient for Minerva to confidently inject a placeholder? (e.g. raw image count in page HTML, basic `noviewer` filtering, or something simpler?)
- How do we handle the edge case where the server reserves space but client-side filtering discovers fewer than 3 qualifying images?
- Is there a risk of the empty placeholder being visible for too long on slow connections? If so, how do we mitigate (skeleton UI, animation, graceful collapse)?
**Feature gating**
- What feature flag mechanism should we use for incremental rollout? URL parameter, MediaWiki config variable, or both?
- Should this be the same flag as the beta viewer (T417675), or independent?
**Display rules**
- Only articles with 3+ qualifying images. Does the server-side check or the client-side logic enforce this threshold?
- How should the carousel connect to the beta viewer? Confirm that navigating to `#/media/File:...` on tap is the right approach.
=== Deliverable
A brief written recommendation (can be a comment on this task or a short document) covering the above questions, with enough detail for the port task to proceed.