Thanks for the link, I had a look at Attribute::Property and it does indeed, deep down, also use a tied interface to validate data. The public interface is quite different, A::P being polished up to use attribute notation.
My preferred direction for this is different. I like to keep the nuts and bolts within reach. I'd extend Constrained to a family of tied classes with different data structures and exception policies. Some sort of class factory to produce blessed coderefs with cloistered data from the body of the constructor seems likely.