Looking at the KiCad FAQ and KLC, I see that some confusion has crept in. Both documents have a misunderstanding about atomic parts They both refer to “atomic parts” but get the concept wrong. Someone (maybe Wayne), coined the term “fully defined part” , and then he or someone else decided that is the same thing as “atomic part”, but that is wrong. At best it is compromise between generic and atomic parts.
It is true that an atomic part is “fully defined” but it is important that an atomic part is also self-contained, unlike “fully defined part”. An atomic part has a 1:1 relation between symbol and footprint, fully defined parts are only many:1
Why is that important? Because of version control. In production it might be necessary to change the footprint properties for a specific component, and you don’t want to propagate those change to any other.
Therefore we have 3 types of part : generic, fully defined (but probably a shared footprint), and atomic (self contained). The KLC (and official libs) might have a goal of full defined parts, but that is not the same as atomic parts.