RFC Errata
RFC 7950, "The YANG 1.1 Data Modeling Language", August 2016
Note: This RFC has been updated by RFC 8342, RFC 8526
Source of RFC: netmod (ops)
Errata ID: 6855
Status: Rejected
Type: Technical
Publication Format(s) : TEXT
Reported By: Alexei Sadovnikov
Date Reported: 2022-02-17
Rejected by: Rob Wilton
Date Rejected: 2022-02-22
Throughout the document, when it says:
7.5. The "container" Statement 7.5.7. XML Encoding Rules A container node is encoded as an XML element. The element's local name is the container's identifier, and its namespace is the module's XML namespace (see Section 7.1.3). The container's child nodes are encoded as subelements to the container element. If the container defines RPC or action input or output parameters, these subelements are encoded in the same order as they are defined within the "container" statement. Otherwise, the subelements are encoded in any order. 7.8. The "list" Statement 7.8.5. XML Encoding Rules The list's key nodes are encoded as subelements to the list's identifier element, in the same order as they are defined within the "key" statement. The rest of the list's child nodes are encoded as subelements to the list element, after the keys. If the list defines RPC or action input or output parameters, the subelements are encoded in the same order as they are defined within the "list" statement. Otherwise, the subelements are encoded in any order. . . . . . 7.14. The "rpc" Statement 7.14.4. NETCONF XML Encoding Rules . . . . . Input parameters are encoded as child XML elements to the rpc node's XML element, in the same order as they are defined within the "input" statement. If the RPC operation invocation succeeded and no output parameters are returned, the <rpc-reply> contains a single <ok/> element defined in [RFC6241]. If output parameters are returned, they are encoded as child elements to the <rpc-reply> element defined in [RFC6241], in the same order as they are defined within the "output" statement. 7.15. The "action" Statement 7.15.2. NETCONF XML Encoding Rules . . . . . The <action> element contains a hierarchy of nodes that identifies the node in the datastore. It MUST contain all containers and list nodes in the direct path from the top level down to the list or container containing the action. For lists, all key leafs MUST also be included. The innermost container or list contains an XML element that carries the name of the defined action. Within this element, the input parameters are encoded as child XML elements, in the same order as they are defined within the "input" statement. . . . . . If the action operation invocation succeeded and no output parameters are returned, the <rpc-reply> contains a single <ok/> element defined in [RFC6241]. If output parameters are returned, they are encoded as child elements to the <rpc-reply> element defined in [RFC6241], in the same order as they are defined within the "output" statement.
It should say:
7.5. The "container" Statement 7.5.7. XML Encoding Rules . . . . . The container's child nodes are encoded as subelements to the container element. If the container defines RPC or action input or output parameters, these subelements MUST be encoded in the same order as they are defined within the "container" statement. Otherwise, the subelements are encoded in any order. 7.8. The "list" Statement 7.8.5. XML Encoding Rules The list's key nodes MUST be encoded as subelements to the list's identifier element, in the same order as they are defined within the "key" statement. The rest of the list's child nodes are encoded as subelements to the list element, after the keys. If the list defines RPC or action input or output parameters, the subelements MUST be encoded in the same order as they are defined within the "list" statement. Otherwise, the subelements are encoded in any order. . . . . . 7.14. The "rpc" Statement 7.14.4. NETCONF XML Encoding Rules . . . . . Input parameters MUST be encoded as child XML elements to the rpc node's XML element, in the same order as they are defined within the "input" statement. If the RPC operation invocation succeeded and no output parameters are returned, the <rpc-reply> contains a single <ok/> element defined in [RFC6241]. If output parameters are returned, they MUST be encoded as child elements to the <rpc-reply> element defined in [RFC6241], in the same order as they are defined within the "output" statement. 7.15. The "action" Statement 7.15.2. NETCONF XML Encoding Rules . . . . . The <action> element contains a hierarchy of nodes that identifies the node in the datastore. It MUST contain all containers and list nodes in the direct path from the top level down to the list or container containing the action. For lists, all key leafs MUST also be included. The innermost container or list contains an XML element that carries the name of the defined action. Within this element, the input parameters MUST be encoded as child XML elements, in the same order as they are defined within the "input" statement. . . . . . If the action operation invocation succeeded and no output parameters are returned, the <rpc-reply> contains a single <ok/> element defined in [RFC6241]. If output parameters are returned, they MUST be encoded as child elements to the <rpc-reply> element defined in [RFC6241], in the same order as they are defined within the "output" statement.
Notes:
The RFC 2119 keywords are missing in description of ordering for XML encoding rules for RPC, actions and references thereto and in additional instance of list keys encoding.
Although the text of RFC suggests reading this as if "MUST" was present, without keyword it is open to interpretation if the sentences actually mean "MUST" or "SHOULD" or may be even "MAY".
In other places discussing ordering, for example 7.7.8., 7.8.5. and 7.9.5. the "MUST" is actually present, hence proposed errata would make ordering description usage of keywords consistent.
--VERIFIER NOTES--
I can see your point of view that MUST is used in other similar places, and I'm sure that in hindsight it would be nice if the language was used consistently in equivalent places.
However, I don't think that the lack of a MUST statement makes the other text any less normative, or ambiguous. In particular, there is this paragraph of RFC 8174 that updates RFC 2119:
o These words can be used as defined here, but using them is not
required. Specifically, normative text does not require the use
of these key words. They are used for clarity and consistency
when that is what's wanted, but a lot of normative text does not
use them and is still normative.