# Forwards-per-view comparison recipe

A fixed-horizon specification for comparing forwarding relative to exposure while refusing unsupported propagation conclusions.

## Calculation

- Mode: normalized_engagement_ranking
- Formula: forwards / views from one captured snapshot at the same target_age_seconds for every candidate.

## Query

Compare [candidate posts] by captured forwards divided by views at one shared post-age horizon. Return numerator, denominator, rate, horizon, coverage status, exclusion reasons, next-ready time where known, and citations. Do not infer destinations or declare a global winner when coverage is incomplete.

## Inputs

- **Candidate set:** Selected source/date items or exact post references from the preceding result.
- **Forward field:** The captured forwards numerator at the chosen horizon.
- **View field:** The same snapshot's positive captured views denominator.
- **Coverage rule:** The shared age and minimum evidence required before ordering.

## Expected output

- Ordered forward/view rates
- Underlying forward and view counts
- Shared horizon and observation timing
- Coverage and missing reasons
- Evidence links for measured posts

## Coverage checks

- [ ] Do not mix observations from different ages
- [ ] Do not infer zero from a null metric
- [ ] Withhold an overall winner for partial data
- [ ] Do not claim a propagation path
- [ ] Keep follow-up scope tied to the prior result
