@beerwright/core
    Preparing search index...

    Function pitchPlan

    • Work out whether a yeast selection is enough for a batch.

      Liquid packs are assumed to hold 100 billion cells at manufacture (Wyeast and White Labs both quote ~100 billion) unless the selection says otherwise. Dry sachets are counted as gramsPerPack × cellsPerGramBillion, defaulting to the commonly published 6 billion cells per gram when the catalog has no figure.

      A saved starter is something the brewer has decided about this pitch, like the manufacture date, so this function reports the cells it produces. The steps are grown through starterGrowth: step one is pitched with that row's viable pack cells, each later step with all of the previous step's output, and the last step's total replaces the pack count for that row.

      The yield isn't stored. It's recomputed every time on Braukaiser's model, which its author puts at ±15 % or worse. A starter can still leave a pitch short, and that's correct: a two-litre flask isn't automatically enough for a lager, so the shortfall check still runs.

      Dry yeast is the exception: its starter is ignored. A starter uses up the sterols and unsaturated fatty acids dry yeast is packed with, so a dry row's starter is ignored and a note says so. See dryYeastSachets for the full reasoning. We enforce this here and not in the document schema because every caller gets its cell count from this function. An imported file, a tool call or a row switched from liquid to dry can all produce a dry row with a starter, and none of them should be able to inflate a pitch.

      Parameters

      Returns PitchPlan