Could you please write up (here or in the reference manual) a summary of how move generation works, and how the various ludemes that combine moves work? I'm very unclear on the details, and when one of the many constructs is better than the other. For example, here are some of my points of confusion:

(or A B) -- in player chosen moves, this is obvious, but what about non-decision effects? Are all applied, or is one picked randomly, or is it undefined behaviour?

(and A B) -- for non-decision effects, it seems it applies A then B, but what about player moves?

It seems that (or (move Slide) (move Step...)) behaves the same as (and (move Slide) (move Step...)) for decision moves in my experiments. If I combine decision and non-decision moves at the "top" level, the non-decision moves seem to be ignored.

What happens to state between the A and B moves in (and A B), and when should I use (and A B) to sequence effects versus (A (then B))?

Am I right in thinking that (then) has the same effect as (append) and (and) -- they all just concatenate moves but expressed in different ways?

(move Slide (then (set Score ...))

results in the same as this:

(append (move Slide) (then (set Score ...)))

and maybe even this:

(and (move Slide) (set Score ...))

And what about the (do next:)?

(do (move Slide) next:(set Score))

(or A B) -- in player chosen moves, this is obvious, but what about non-decision effects? Are all applied, or is one picked randomly, or is it undefined behaviour?

(and A B) -- for non-decision effects, it seems it applies A then B, but what about player moves?

It seems that (or (move Slide) (move Step...)) behaves the same as (and (move Slide) (move Step...)) for decision moves in my experiments. If I combine decision and non-decision moves at the "top" level, the non-decision moves seem to be ignored.

What happens to state between the A and B moves in (and A B), and when should I use (and A B) to sequence effects versus (A (then B))?

Am I right in thinking that (then) has the same effect as (append) and (and) -- they all just concatenate moves but expressed in different ways?

(move Slide (then (set Score ...))

results in the same as this:

(append (move Slide) (then (set Score ...)))

and maybe even this:

(and (move Slide) (set Score ...))

And what about the (do next:)?

(do (move Slide) next:(set Score))