Hmm, I don't think a validate hook of any type parameter should take the
system state into account.
You should use it to make sure that whatever value was passed is
conceivably a fully qualified file name, but no more.
A missing file should lead to more of a "runtime" type of error, i.e.
properties that rely on a sound value will fail their sync or retrieve
actions. The Puppet transaction will deal with that while running. No
need to try and spoil it with overzealous initialization time checks.
Hope that makes sense, cheers,
Felix