It seems I misunderstood your previous post and thought you wanted to eliminate the possibility of partial batches.
To allow them again, simply have the tokens that try to pull cured items skip to the finish of the sub flow instead of waiting until one can be pulled. Also, re-add the "Release Items" activity that sends a message to the queue, telling it to release all currently held items.

The target quantity is determined by how often the subflow is run. The queue capacity has to higher than that number, but has no bearing on the model logic otherwise. That's why are seeing the pattern in your screenshot; you are still only pulling in batches of 24.
In the attached model, batches of 26 are supposed to go to the queues, starting when there are at least 18 items of type in the stacker of which at least 12 are cured.
flexsim-new-model-328-fm3.fsm
About array labels:
Arrays are a general programming concept. You can think of them as indexed lists where array accesses the Nth entry of the array. An array label is simply a label that holds an array of values instead of a single one. In this case, I use them because it makes storing values for each product type quite easy. When an object enters/exits the rack of cures, I can increment/decrement the respective array entry by using the product type as index, pointing to the right value.
https://docs.flexsim.com/en/22.1/Reference/CodingInFlexSim/FlexScriptAPIReference/Data/Array.html
About lists:
There are some pages in the manual that deal with lists, I think they would be a good starting point to learn, if you haven't read them already.
https://docs.flexsim.com/en/22.1/ConnectingFlows/Lists/KeyConceptsLists/KeyConceptsLists.html
Some short insight on the expression fields used:
You can think of fields as table columns that hold additional information about the value on the list. Apart from simply copying the values labels, these can also be custom expressions that draw data from other points in the model or do calculations.
When writing an expression you have access to some pre-defined parameters, which you can see when you open the code editor if the field.

The "value" is a reference to whatever was pushed to the list and the "pushTime" the model time at which it was added to the list. "puller" is a reference to the object that is trying to pull something from the list. It is only available when you mark the field as "Dynamic", meaning it gets re-evaluated every time the value of the field is read (so either when actively viewing the list entries or when something is pulling from the list).
In the model I use one field to calculate whether is item is cured or not. (Alternatively, you could also set a label once it is cured and simply add that as field. It would have to dynamic as well though, so it is updated when the label value changes).

In two other fields I read the current value of the "Qty" and "Cured" array labels on the rack. As mentioned above "value" is a reference to the object that was pushed to the list - the item. So "value.Product" is as the array index, to look up the value pertaining to the item's type.

I hope this is helpful to you.