I think part of the problem might have to do with the Sub Flow in your Process Flow.
In the Sub Flow, all child tokens are created at the same time with their creationRank label set correctly. However, each child token goes through the Sub Flow one at a time. This means entries are removed from the "pulled" array of the parent token before most of the child tokens set their "item" label in the first Assign Labels activity.
So the first child token of a batch should have its item label set correctly (it will match the first entry of the array). However, after it makes it way through the rest of the Sub Flow and the last Assign Labels activity removes the first entry from the array, the rest of the entries move up one position in the array. The second child token sets its item label to the second entry in the array as expected, but that entry used to be the third entry.
Because of this, I believe each child token after the first token is not correctly setting their item label to the correct reference. I think you will want to change the first Assign Labels activity in the Sub Flow so it sets the item label of each child token to the first index in the pulled array and not even worry about the creationRank label at all. You can change the Index field from getlabel(token,"creationRank") to 1.
Please let me know if my understanding of your model is incorrect, because after making this change and running the model, an error occurs much earlier in the model run.