Adam Vinsh from the Puppet OpenStack module community brought up in IRC this morning that they discovered that they could use $require in the local scope of a defined type[1].
This got me wondering how local variables are generated from parameters and specifically how this intertwines with meta parameters. I was able to follow a path in the Puppet source that seemed to validate that all parameters of a resource are added to parameter scope[2] and that parameter scope will eventually make it into local scope by virtual of traveling through ephemeral scope[3]. Combine this with the specification that meta parameters are available in parameter scope[4] and it seems that you have an implicit behavior that one should expect that all meta parameters and their values are available in local scope.
So, I guess the question is really "are all meta parameters available in class and defines as variables, and are all of them defined in the parameter scope when evaluating default value expressions, or are there some meta parameters that are handled differently than the $title meta parameter that is shown in the specification (reference number [4])" - is that interpretation of the question correct?
For background: when I wrote the specification this was unclear, and there was not enough time at that point to do all of the detective work. Now that someone is seeking confirmation of the specified behaviour we should take the time and finish this.
The specification is also unclear on the fact that the parameter scope, once all parameters have received their values is available int the scope of the created entity.