@beerwright/core
    Preparing search index...

    Function packViability

    • Fraction of a pack's cells still alive on a given day.

      Calls yeast.ts's viabilityFromManufactureDate: 100 % on the date printed on the pack, then exponential decay at 0.79 per 30 days for liquid and 0.96 per 30 days for dry. A White Labs pack, recognised by its name, decays on White Labs' own published curve instead, 0.946 per 30 days (see PUREPITCH_RETENTION_PER_30_DAYS).

      Most calculators (Mr Malty's chart, and the usual summaries of the Yeast book and White Labs' guidance) use a straight line losing about 20–21 % of the original count per month, often floored at 10 % so it never reaches zero. That's a convention, not a measurement. Real decay depends on the strain, the cell density in the pack and, more than anything, how warm the pack got in transit.

      We model the same ~21 %/month as a continuous exponential, for the reason given on VIABILITY_RETENTION_PER_30_DAYS: the curve stays positive without an arbitrary floor and the monthly loss compounds. Over the ages that matter, the two differ by less than the convention's own uncertainty:

      age linear 20 %/mo this engine (0.79^(d/30))
      1 month 80 % 79 %
      3 months 40 % 49 %
      6 months 10 % (floor) 24 %

      The gap only gets large at ages where nobody would pitch the pack without stepping it up anyway. Two different models would be worse: the same pack would show 49 % in the pitch check and 40 % in the starter calculator. So the starter calculator uses the same curve as pitchPlan.

      Dry yeast is made for shelf stability (vacuum-packed, low moisture, sold with a two-year best-before), so date decay matters much less than the cells per gram the manufacturer packed, which is where availableCells gets its number. The 0.96/30 days is a small correction. A sachet inside its best-before date is within a rounding error of its printed count.

      Parameters

      • manufacturedAt: Date
      • now: Date
      • form: YeastForm
      • name: string = ''

        The pack's name. A White Labs name selects their curve (see packRetentionPer30Days).

      Returns number