Puppet/TFM interaction

Problem:
i know what im trying to do 1) is strange and 2) works (sometimes) hoping someone has more ideas. i have a generic class with parameters exposed (filled in by smart class matchers in foreman). (this is where it gets strange and sometimes works) i can then reference variables from that class using $<class::name>::<variable> . on some hosts this is working exactly as expected/intended, on others the variable is empty (class default unless provided by tfm). i cannot explain why it is behaving this way. if i add include it starts working on the problematic host(s).
currently the class is applied from a host group but moving it to the host does not make any difference. I did not notice anything obvious in a puppet run with verbose debug between a working and non working host.

Expected outcome:
class to be included/applied from tfm and not require include

versions:
CentOS 7.9
TFM 3.3.0
– tasks
– discovery
– hooks
– puppet (4.0.1)
– remote-exec
– setup
– templates
Puppet 6.28.0