Hi,
I can at least supply a sensible workaround: In your templates, instead
of relying on @factname being available, use
has_variable?("@factname") ? @factname : <default value here>
Untested, not sure if this works with the @varname syntax in templates.
Alternatively, you can do this in site.pp:
if ! $factname { $factname = <default> }
Depending on circumstance, this won't address your issue. As yet another
alternative, you can keep puppet from parsing the template at all when
the fact is not yet present with the same syntax.
HTH,
Felix