CGEL gives this order:
Evaluative > general property > age > color > provenance > manufacture > type
[There's plenty of elaboration on what kinds of descriptors fit into each category. For example, artisanally handcrafted goes in the "manufacture" category, and the label "manufacture" makes sense for it, but the label "material" doesn't.]
CGEL also correctly notes that this order only applies when all descriptors are being coordinated in parallel; if that isn't the case, the innermost descriptors must appear on the right, joining the head of the phrase.
> In the absence of special factors, a modifier of size precedes one of colour: a large black sofa represents the preferred order while a black large sofa is very unnatural. But this constraint can be overridden, as in [ii]: the context here is one where it has already been established that I want a large sofa, so that now only the colour is at issue. Black is thus interpreted restrictively, picking out a subset of the large sofas, and in this context in can precede large.
> while a new cotton shirt, say, is normally preferred over a cotton new shirt, the latter is not ungrammatical. It is admissible, for example, in a context where there has been talk of new shirts, and the concern is with different kinds of new shirt.
[Returning to that earlier example, you'd always expect an artisanally handcrafted Belgian waffle and not a Belgian artisanally handcrafted waffle because "Belgian waffle" is its own idea. "Belgian" and "handcrafted" are not parallel; this is a Belgian waffle that is handcrafted, not a waffle that is handcrafted and also Belgian.]
I was surprised to learn that ESL classes emphasize descriptor order so heavily. It is a real rule of fluent English usage. But the only thing that can happen if you get it wrong is that other people notice you're foreign, so in almost all cases learning the ordering has zero value to the student. Almost all students are obviously foreign by many, many different tells, and aren't hoping to pass for native.