Path is a unique identifier for the def, relative to the source unit. It should remain stable across commits as long as the def is the "same" def. Its Elasticsearch mapping is defined separately (because it is a multi_field, which the struct tag can't currently represent).

Path encodes no structural semantics. Its only meaning is to be a stable unique identifier within a given source unit. In many languages, it is convenient to use the namespace hierarchy (with some modifications) as the Path, but this may not always be the case. I.e., don't rely on Path to find parents or children or any other structural propreties of the def hierarchy). See Def.TreePath instead.