Group heads, blender jars, steam litres per hour and ice bin minimum, each derived from counts you supply and shown with its working and the basis of every constant.
This section states that it is the engineering reasoning behind a bar rather than a shopping list. This page is where that sentence is kept: every figure below is an expression over numbers you supply, shown with its working, and every constant it uses carries the sentence that placed it.
The derivations
Each one is shown as the expression, then the same expression with your numbers in it, then the result. A result without its working is the bare magnitude this section exists to refuse.
Decaf: a second grinder, or a swap decaf share > decafSwapThreshold → a second grinder; otherwise purge and swap 0.03 ≤ 0.05 Purge and swap on the one grinder. Below the threshold a second grinder costs more than it saves. decafSwapThreshold (planning)
Steam requirement litres per hour = peak milk drinks per hour × millilitres per drink ÷ 1000 · one wand sustains (3600 ÷ pitcherCycleSec) × pitcherFillMl ÷ 1000 36 × 180 ÷ 1000 = 6.5 L/h against 24 L/h per wand 6.5 L/h at 65 °C 24 L/h per wand pitcherCycleSec (planning) · pitcherFillMl (planning) · milkServiceTempC (planning)
Ice bin minimum bin minimum = ice kg per peak hour × consecutivePeakHours × meltWasteFactor × binSafetyFactor 12 × 3 × 1.3 × 1.2 = 56.2 56.2 kg consecutivePeakHours (planning) · meltWasteFactor (planning) · binSafetyFactor (planning)
Worked example
Illustrative inputs, not a measurement of any bar. Shown so the arithmetic is checkable before you type anything of your own.
Three fields are null on every equipment record in this engine, deliberately. Reading a number out of a prose sentence would be invisible fabrication, because a plausible figure looks exactly like a measured one.
Capacity. No capacity figure has been measured for any published record. A throughput the engine needs and does not have is reported, never guessed.
Footprint. Published as prose on the equipment records, not as structured data. Sixty records carry a sentence; none carries a millimetre field.
Connected load. Deliberately unpublished. An amperage, a phase requirement and a duct size are a qualified electrician's call, and this project never states one as fact.
Capabilities nothing published satisfies
Content debt, stated rather than papered over. A menu needing one of these produces a plan with a hole, and the engine says which hole. Writing the equipment record closes it; inventing an option would not.
manual-brewing: No pour-over, immersion or filter-cone record is published. The section covers batch and cold brew only.
juicing: No juicer record is published, though the materials layer carries fresh juices.
shaking: No shaker record is published, though several drinks are built by shaking.
cold-storage-bulk: Only service refrigeration is published, an underbar fridge and a milk fridge. Back-of-house bulk storage has no record.
frozen-storage: No freezer record is published, though frozen fruit is named as an ice substitute.
Every constant, and where it came from
Fourteen constants. None is a measurement taken in a working bar, and none claims to be: each is a heuristic for the shape of a relationship, and each names the measurement that would replace it.
peakHourShare = 0.2 share of daily covers (planning): The share of a day's volume falling in the busiest hour. Varies widely by trade type and by site. Replace it with your own hourly figures from the till.
groupCycleSec = 45 s (planning): Purge, dose, distribute, tamp, lock, extract and knock out, at a working pace rather than a competition one. Time your own team over a real peak and replace this.
headroom = 1.25 multiplier (planning): No machine is planned at full utilisation. The reserve absorbs the ticket that arrives during the one you are already making. Raise it if your peak is spikier than your average hour.
decafSwapThreshold = 0.05 share of mix (planning): Below this share a purge-and-recalibrate swap costs less than a second grinder; above it the swaps eat the peak. Set it from how long your own swap actually takes.
meltWasteFactor = 1.3 multiplier (planning): Transfer loss, bin melt, service overfill and scoop spill. Measure yours by weighing what leaves the bin against what reaches a glass over one shift.
consecutivePeakHours = 3 h (planning): The length of the sustained peak, not the single busiest hour. A bin is sized by the burst it has to cover, so this is the figure that decides it.
binSafetyFactor = 1.2 multiplier (planning): Reserve on the computed bin minimum, because a bin that is exactly large enough is empty at the end of every peak.
blendSeconds = 30 s (planning): Blend time for a standard frozen build. A drink with frozen fruit rather than ice runs longer; override it per drink once the recipes carry their own figure.
rinseSeconds = 15 s (planning): Jar rinse between drinks. Not optional and not zero: it is the step that gets skipped under pressure, and the reason a second jar is often cheaper than a second blender.
pourSeconds = 10 s (planning): Pour and hand over. Included because it occupies the jar, which is the constrained resource.
pitcherFillMl = 400 ml (planning): A typical working fill for a 600 ml pitcher. Steaming to the pitcher's brim is not a technique anyone uses; measure what your team actually pours.
pitcherCycleSec = 60 s (planning): Fill, purge, steam, pour, rinse. Time it on your own bar, at the wand you actually have.
milkServiceTempC = 65 °C (planning): The temperature the boiler requirement is expressed against. Stated as a requirement in litres per hour rather than translated into a machine class, which is a product decision this engine does not make.
interEquipmentClearanceMm = 100 mm (planning): Clearance between adjacent items so each can be serviced and cleaned behind. Check it against the access your own units need; some open upward and need none, some need far more.
There is no sourced status in this engine. The brief permits one; this ships without it, because a status that cannot be used without a retrieved reference is a status that will eventually be used without one.