This is great I was able to break down your knowledge pattern, ARM, and UDF to determine my mistakes. I am listing the problems I discovered. Hopefully this will help others trying to learn Knowledge pattern avoid the same pitfalls.
1) One thing I did not realize when creating the UDF you could have multiple internal components. My original UDF consisted of 1 internal component (Hole) and 2 Inputs of components (Point and Face). This lead to a UDF creation error. To fix this I added the tangent plane of my hole feature to my internal components. This does not change the number of input components.
2) In the Userfeature Definition, under Inputs tab, I intitially changed my inputs from "point.1" to "point" and "...face.1" to "Surface". IN the knowledge pattern, you have to reference these inputs and using the string "point" was causing an error. I tested this by changing the string to a less generic string "POS" and it works. I've since changed all my strings in my UDF, arm, and knowledge pattern to less generic words to avoid this problem.
3) Creating the catalog was also a challenge if you don't know the requirements. I originally created the catalog within the PKT workbench using the tool "Save in Catalog". This saves all the knowledge templates you currently have loaded in that model into a new or existing catalog. The problem with this method is that the new component created in the catalog does not have the 4 required keywords, "name", "logical name", "usage", and "type". In short I found it easier to create the catalog component from scratch then trying to delete and recreated the necessary keywords.
The knowledge pattern code itself is not that tricky. I found towards the end that most of the errors I had when executing the knowledge pattern was not in the code but rather the root cause was in the UDF and catalog. Just make sure you don't have any typos.
Thanks everyone for your help!