recall this documentation:

    * Usage: monoid [a,b,c,...]

    * DegreeMap => a function, default value null, the degree map, to be used
      if Join => false is given: a (linear) function from the multidegrees of
      the (future) coefficient ring to the multidegrees of the monoid ring
      (polynomial ring) made from it with the monoid created here, to be used
      in determining homogeneity and in determining degrees in tensor products.
      The default is the "identity".

That's implemented in the code for tensor(Monoid,Monoid), i.e., the flattened monoid of

       (k M) N

is

	k ( N ** M )

This means that if N is monoid[...,Join=>false,DegreeMap=>f], then in the expression

     N ** M

f is expected to be a map from the degree monoid of M to the degree monoid of
N.  But in general, M is not known in advance, so N ** M can't work, in
general!

What is the solution?

Recall what we did recently with Join => false to assure associativity.  We
arranged that the result of

	 monoid { ... } ** monoid { Join => false, ... }

has the form 

    	 monoid { Join => false, ... }

That ensures that associativity holds here:

	 monoid { ... } ** monoid { Join => false, ... } ** monoid { ... }

in that the degree monoid of the right most argument never contributes its
length to that of the result.
