## ADDED Requirements

### Requirement: Homepage modules and ordering
The homepage MUST render distinct content modules that include:
- newest content
- high-performing videos
- channel/podcast highlights
- prominent conversion CTAs

The homepage MUST render modules in a deterministic order configured by the site (not dependent on network timing).

#### Scenario: Homepage render with available data
- **WHEN** content data is available in the cache
- **THEN** the homepage renders the newest module and the high-performing videos module in the configured order

### Requirement: Newest content module
The system MUST compute a "newest" feed across sources by sorting normalized items by `publishedAt` descending.

The system MUST support filtering and limiting the number of items displayed for the newest module.

#### Scenario: Mixed-source newest list
- **WHEN** the cached dataset contains YouTube, Instagram, and podcast items with different publish dates
- **THEN** the newest module lists items ordered by `publishedAt` descending regardless of source

### Requirement: High-performing YouTube videos module
When `metrics.views` is available for YouTube items, the system MUST compute "high-performing" videos by ranking videos by `metrics.views` (descending) with an optional manual override list.

When `metrics.views` is not available, the system MUST render the high-performing module using a manual curated list and MUST NOT fail the page render.

#### Scenario: Views-based ranking available
- **WHEN** YouTube items include `metrics.views`
- **THEN** the high-performing module shows videos ranked by views, unless a manual override list is configured

#### Scenario: Views-based ranking unavailable
- **WHEN** YouTube items do not include `metrics.views`
- **THEN** the high-performing module renders using a manual curated list and the page still loads successfully

### Requirement: Graceful empty and error states
If a module has no content to display, the homepage MUST render a non-broken empty state for that module and MUST still render the rest of the page.

#### Scenario: No Instagram items available
- **WHEN** the cached dataset contains no Instagram items
- **THEN** the Instagram-related module renders an empty state and the homepage still renders other modules

