A pcb-rnd config file, (or document for short) has a single root node whose name must be li:pcb-rnd-conf-v1 - this is the signature of the document. It is a flat list of one or more config root/ subtrees. TODO: is this really a list or a hash?
Each config root is a partial description of the config tree (which is the logical configuration of all possible settings). Config roots have a policy and a priority attached. This is done in the name of the config root, which must be of the form of policy-priority, e.g. "overwrite-300" or "append-125". The priority part (with the dash) can be omitted (and then the per role default priority is used), e.g. "overwrite" or "append" are valid config root names.
Under the config root, a tree of sections (hashes) and setting values (text nodes) are built. These structures and values are in 1:1 correspondence with the config tree. Excess (unknown) keys are considered a warning (except in the plugin/ and utils/ subtrees). Missing keys or missing subtrees is normal because a config root can be partial.