# EC2 RI Coverage Below 50%

> EC2 fleets where production instances run below 50% Reserved Instance coverage leave commitment discounts unclaimed. ZopNight infers 0% coverage from a missing CUR reservation label, requires 60 days of history and high uptime, and prices savings as actual monthly cost minus the live 1-year RI rate times 730.

Source: https://zop.dev/integrations/aws/recommendations/ec2-ri-coverage-below-50
Updated: 2026-08-19

---

## Reading coverage from billing, not the tag

- resource.Status: running
- Production classification: isProdEnvTag or prod-looking name; dev/test env tag is an authoritative veto
- Coverage gate from the authoritative CUR-derived ReservationCoverage signal (EvaluationContext), not the phantom ri_coverage_pct tag. A Reservation/SavingsPlan label => already covered => abstain; absence of a label => no commitment => 0% coverage (the \<50% gap this rule targets). Gating on the tag kept the rule permanently dead (P5, no producer). The ri_coverage_pct Tag is read only as a documented P5 last-resort to refine the displayed pct, never the firing gate.
- EvaluationContext: per-UID pricing, CommitmentEligible, SuppressCommitmentForUptime, live RI TierRates (CommitmentBreakEven)

## The 50% coverage threshold

```text
riEC2CoverageThreshold=50
```

## Break-even net for closing the coverage gap

concrete-or-abstain (discount/commitment). Savings = the real break-even net, nothing else: CommitmentBreakEven prices the RI at [the published 1-year No Upfront rate](https://aws.amazon.com/ec2/pricing/reserved-instances/pricing/) times 730 hours and recommends only when that is less than the resource's actual current monthly cost, so savings = currentCost − RI×730 (positive by construction), headline % from that live net. Abstains when break-even inputs are unavailable (live RI tier rates absent/non-positive); the prior cost × DeriveCommitmentFraction(tiers, 0.40) flat-fraction fallback is dropped (byte-pattern-identical to the sibling RC-014 fix). commitmentFallbackFraction is no longer applied. Gated by CommitmentEligible (≥60d history, high uptime, utilization) and long-off uptime suppression.

## Choosing 1-year versus 3-year RIs

1. Review EC2 RI recommendations in AWS Cost Explorer
2. Evaluate 1-year vs 3-year commitment based on workload stability
3. Consider Convertible RIs for flexibility
4. Purchase RIs matching the instance family and region
