The variable nobody weighs
Same grain, same drum, same target, same thirty minutes, and the batch comes out a shade off where the last one landed. Nothing in your process changed, so the natural conclusion is that the process is unreliable.
It usually is not. What changed is the water. Grain is hygroscopic — it gives moisture up to dry air and takes it back from damp air, continuously, for as long as it is stored. The sack you opened in February and the sack you opened in August were not the same product going into the drum, even if the label was identical.
Moisture is the largest uncontrolled variable in grain roasting, and unlike most of the others it is invisible. You can see batch size. You can see colour. You cannot see that this load came in two percent wetter than the last one, and two percent is enough to move where you end up.
Where the heat goes first
Put wet grain into a hot drum and almost nothing you would call roasting happens for a while. The energy going in is being spent boiling water out of the kernels rather than raising their temperature, and evaporation is expensive — it takes a great deal of heat to turn water into steam compared with the heat it takes to warm the same water up. So the grain temperature climbs to somewhere near the boiling point of water and then stalls there, no matter how hard you push.
On a live temperature curve this is unmistakable: a clear flattening early in the roast, then a break upward when the free water is largely gone and the applied heat finally starts going into the grain instead of into steam. Everything people mean by roasting — the colour, the aroma, the flavour development — happens after that break.
Which is why wetter grain takes longer at the same setting, and why the extra time is not distributed evenly across the roast. The drying leg stretches. The development leg does not. If you are working to a clock, a wet batch arrives underdeveloped and a dry batch arrives past your target, and both were thirty minutes.
Crystal malt depends on keeping the water in
The crystal and caramel malt process is the one place in grain roasting where moisture is not an obstacle to be got rid of. It is the mechanism.
The 210 to 230°F stewing window works because the grain is held wet. Inside each damp kernel, enzymes convert starch into sugar while the husk keeps the water from escaping. You are running a small conversion inside the grain, and conversion needs water the way any mash does. The colour and the caramelised character come afterwards, when the heat rises and those sugars cook.
Take the moisture away and the mechanism has nothing to work with. Grain that dries out at 220°F does not become crystal malt slowly; it becomes a pale toasted malt that took a very long time, with none of the sweetness. This is the single most common failure in home crystal malt production, and it is why the process cares so much about starting from properly moist grain and holding it through the stew rather than letting the drum run dry and hot.