left/right or top/down are metaphors of course.

From the code's point of view, the most significant part is the with the smallest range of indexes in the vector of PartComponents.  I fell into the left/right usage, because when you write out a partition, this is the order things come out on the page.
But, I agree that it is confusing.  In the following, I change leftmost to most significant.   Do you think it is any clearer?

    For example, if the multiset is [5, 3, 1], and its most
    significant part has just been decremented to [5, 3, 0], the
    spread operation will add a new part so that the stack becomes
    [[5, 3, 0], [0, 0, 1]].  If the most significant part (for the
    same multiset) has been decremented to [2, 0, 0] the stack becomes
    [[2, 0, 0], [2, 0, 0], [1, 3, 1]].  In the psuedocode, the spread
    operation for one part is step m2.  The complete spread operation
    is a loop of steps m2 and m3.