Now I tried to change it to $ gm.enter_location(goodtraits=["Healer", "Mage"], occupations=["Caster"]). After a week I finally met one mage who also was a prostitute. I think the prostitute part was the reason I met her at all.
And I never met a pure Caster no mater what I tried, even though I have 3 Caster rchars (mage, healer, battle mage).
Then I made a unique character with Mage occuption. Unique ones should have a higher priority than random ones. I went to tower and met 3 prostitutes.
Then I added Mage trait directly, and FINALLY I met that unique mage character (still zero random mages).
But wait, what if we change it like $ gm.enter_location(goodtraits=["Healer"], occupations=["Caster"])? It still should return all casters, including our unique mage.
Well, the answer is no, you will never meet her there.
I'm 100% sure that it doesn't work as intended. At very least something is wrong with random chars, and occupation field doesn't work too.