HAPPY NEW YEAR!
I just wanted to say that I have exploited the separation between the arg separation and the :Field designation.
In early version of a class, the arg specification mapped directly to fields. Then, the methods used the fields to build SQL statements. In a later version, I used the argument specification to build SQL statement fields eagerly. In still later versions, I used the argument specifications to prepare statement handler fields eagerly.
So, while it is more common to map the arg specs to fields, I wouldn't say that breaking that convention is uncommon.
One of the strength of Object-InsideOut is that it is flexible. It doesn't enforce too many rigid coding convention that prevent you from doing what you want to do. If a class builder enforces too many coding conventions, it becomes difficult to integrate the module with existing legacy code. For example, prefacing getter methods with "get_" is an OK convention. However, I didn't use that convention in my current code base. If I want to replace an old conventional hash-base class with an inside out class, I may not want to have to change the names of the getter methods. When trying to attain market share, you want to support current conventions and keep inward migration cost low. Once you have market share, then you introduce your own specific conventions to make outward migration cost high.