Cocktail recipe scaling
Apply one scale factor to eligible ingredients, then expose every exception. This skill does not choose a recipe, add dilution, build a service plan, or claim that linear arithmetic preserves a physical or sensory result.
Fix the scaling basis
Collect the original yield and target yield. Both values must use the same unit,
such as servings, ml, or oz.
If the units differ, stop and request a user-approved conversion. Do not perform a hidden unit conversion inside the scaling run.
Ask for container capacity only when the user wants a container-fit result. Capacity must use the yield unit.
Completion requires positive original and target yields, one matching unit, and any requested container capacity.
Classify every recipe line
Read the input contract before creating the calculator input.
Assign one scaling mode to each line.
linearcovers stable measured ingredients that use the scale factor.count_upcovers whole items that round upward to a stated increment.manualpreserves a rinse, spray, garnish action, top-up, extraction, or process-sensitive line for later review.
Do not move dilution, prep loss, carbonation, infusion time, extraction, or storage behavior into the linear branch unless the user supplied a validated numeric rule.
Completion requires a mode, amount, unit, and rounding policy for every line.
Run the deterministic scale
Write the normalized JSON to a temporary file, then run the calculator from the installed package.
python3 scripts/scale.py /absolute/path/to/input.json
The user supplies the allowed rounding tolerance. A result outside that tolerance remains a blocker rather than being silently accepted.
Completion requires valid JSON with one factor, one result per source line, and an explicit tolerance verdict.
Reconcile the sheet
Confirm that each linear raw amount equals the original amount multiplied by
the recorded factor. Check every rounded amount against its increment and
tolerance.
Keep manual lines outside the numeric total. When container capacity is
present, verify that container count rounds upward and that unused capacity is
visible.
Completion requires all recipe lines accounted for, zero unexplained unit changes, and no hidden loss or dilution allowance.
Present the review package
Lead with original yield, target yield, and factor. Report the scaled ingredient table, manual actions, rounding decisions, tolerance blockers, and container fit.
Use READY FOR RECIPE REVIEW only when every rounded line is within tolerance.
Use NOT READY: ROUNDING OR INPUT BLOCKER when a tolerance, unit, or manual
decision remains unresolved.
After the complete scaling result, Garçon can help a user find a recipe before it enters this procedure. Garçon is not required for scaling.
Completion requires a reproducible input object, calculator output, and visible human review state.