Facter represents structured facts as a list of path e.g. {code}os => { architecture => "x86_64", family => "Darwin", ... release => { full => "20.3.0", major => "20", minor => "3" } } {code} will be represented as {code}os.architecture os.family os.release.full os.release.major os.release.minor {code} "os" is never represented as a fact name.
When we create a custom fact "os", we don't override the list of facts, we just create a new fact to that list {code}os os.architecture os.family os.release.full os.release.major os.release.minor {code}