Is this a bug or feature?

\define printf(x) This is $x$

<<printf "$(currentTiddler)$">>

$(currentTiddler)$

You get

This is New Tiddler

$(currentTiddler)$

One expects to the $(currentTiddler)$ does not work!

Macros first substitute macro parameters, then variables. So yes, it is expected to work.

Edit: the tricks posted here rely on this.