Subject: #1047 Poll result - Diagnostics fixed or flexible - CONSENSUS

From: Harald Alvestrand <[email-masked]>
Date: Mon, 13 Mar 2006 16:39:09 +0100

The poll text:

In the dialogue between Frank and Charles, I have seen two possible 
grammars for diagnostic proposed:

A) List of keywords is fixed in USEFOR

path-diagnostic =  diag-match / diag-mismatch / diag-seen /
                  diag-posted / diag-deprecated

diag-match      =  "!"                           ; an additional "!"
diag-seen       =  "!.SEEN."           diag-identity
diag-mismatch   =  "!.MISMATCH."       diag-identity
diag-posted     =  "!.POSTED"    [ "." diag-identity ]
diag-deprecated =  "!" 1*( path-nodot "." ) path-nodot

B) List of keywords is not fixed in USEFOR

path-diagnostic = diag-match / diag-other / diag-deprecated

diag-match      = "!"                     ; another "!"
diag-deprecated = "!" IPv4address         ; (see below)
diag-other      = "!." diag-keyword [ "." diag-identity ]

diag-keyword    = 1*ALPHA                 ; see USEPRO

The result:

- Syntax A:

- Syntax B:
Ruud H. G. van Tol
Russ Allbery (mild preference)
Charles Lindsey
Richard Clayton

I declare consensus for syntax B, and request that this be inserted into 
usefor-08.

---

From: "Charles Lindsey" <[email-masked]>
Date: Thu, 16 Mar 2006 12:52:18 GMT

>I declare consensus for syntax B, and request that this be inserted into 

OK, but there are still some syntactic niggles, and consequential changes
to the rest of the text. Here is the full section as it would now appear,
with the further changes that I believe are required.

3.1.6.  Path
 
   The Path header field indicates the route taken by an article since
   its injection into the Netnews system.  Each agent that processes an
   article is required to prepend one (or more) identities to this
                                                ^^^^^^^^^^
                                             <path-identity>s
   header field body.  This is primarily to enable news servers to avoid
   sending articles to sites already known to have them, in particular
   the site they came from, and additionally to permit tracing the route
   articles take in moving over the network, and for gathering
   statistics.
 
   path            =  "Path:" SP *WSP path-list tail-entry *WSP CRLF
 
   path-list       =  *( path-identity [FWS] [path-diagnostic] "!" )

[Observe that this allows [FWS] before each delimiter, but not after. If
anyone wants this to be changed, then please speak up. Also, it does not
permit [FWS] after a <path-diagnostic> ( and hence not before some "!"s).
See my fixes below.]

 
                                     ^^^^^
                                     [FWS]

                                                             ^^^^^
                                                             [FWS]

   diag-identity   =  path-identity / IPv4address / IPv6address
 
   tail-entry      =  path-nodot
                      ; recommended to be "not-for-mail"
                        ^^^^^^^^^^^^^^^^^
                            often
[to agree with existing NOTE below]

   path-identity   =  ( 1*( label "." ) toplabel ) / path-nodot
[I would much prefer that the <diag-deprecated> be included within
<path-identity> in the form of a <path-deprecated>.]

   path-nodot      =  1*( alphanum / "-" / "_" ) ; legacy names
                                                 ^^^^^^^^^^^^^^
                                                     OMIT
[there was no decision for forbid future use of <path-nodot>s (aka
<bareword>s), though USEPRO makes it clear that they are deprecated unless
there is a really good reason and the risks are understood.]

   label           =  alphanum [ *( alphanum / "-" ) alphanum ]

   toplabel        =  ( [ label *( "-" ) ] ALPHA *( "-" ) label ) /
                      ( label *( "-" ) ALPHA [ *( "-" ) label ] ) /
                      ( label 1*( "-" ) label )

   alphanum        =  ALPHA / DIGIT        ; compare RFC3696

   A <path-identity> is a name identifying a site.  It takes the form of
   a domain name having one or more components separated by dots.
                                                                ^
                 or of a name without dots but possibly including a "_"

   Each <path-identity> in the <path-list> (excluding the one in the
                                            ^^^^^^^^^^^^^^^^^^^^
                                             which excludes
   <tail-entry>) indicates, from right to left, the successive agents
   through which the article has passed.  
                                          The <path-keyword> "POSTED"
   indicates that the agent to its left injected the article.  The use
   of the <path-delimiter> "!!" indicates that the agent to its left
   verified the identity of the agent to its right before accepting the
   article (whereas the <path-delimiter> "!" implies no such claim).
   The <path-keyword> "MISMATCH" indicates that the agent to its right
   failed to be so verified.
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                          A <diag-other> allows for
   assertions, identified by a <diag-keyword> according to conventions
   described in [USEPRO], concerning the source from which the article
   was received. A <diag-match> (which effectively replaces the usual
   "!" delimiter by "!!") asserts that the source from which the article
   was received has been verified to agree with the following
   <path-identity>.

      NOTE: Historically, the <tail-entry> indicated the name of the
      sender.  If not used for this purpose, the string "not-for-mail"
      is often used instead (since at one time the whole path could be
      used as a mail address for the sender).

      NOTE: Although case-insensitive, it is intended that the <path-
                                                           <diag-
      keyword>s "POSTED" and "MISMATCH" should be in upper case, to
                ^^^^^^^^^^^^^^^^^^^^^^
                       OMIT
      distinguish them from the <path-identity>s which are traditionally
      in lower case.

   A <path-diagnostic> is an item inserted into the Path header for
   purposes other than to indicate the name of a site.  One commonly
   observed usage is to insert an IP address.  The colon (":") is
   permitted in order to allow IPv6 addresses to be inserted; note that
   this will cause interoperability problems at older sites that regard
   ":" as a <path-delimiter> and have neighbors whose names have 4 or
   fewer characters, and where all the characters are valid HEX digits.
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
      NOTE: Observe that IP addresses are not permitted as
      <path-identity>s.  Although they have occasionally been used in
      the past (usually with a diagnostic intent), their continued use
      is deprecated (though it is still acceptable in the form of the
      <diag-deprecated>).

      NOTE: An <IPv6address> is permitted within a <diag-identity>.
      Since an <IPv6address> can contain a colon (":") there is a small
      risk of interoperability problems at older sites that regard ":"
      as a delimiter (in place of the "!") if some neighbour identifies
      itself with a <path-nodot> composed of 4 or fewer characters which
      are all valid HEX digits.

-- 
Charles H. Lindsey ---------At Home, doing my own thing------------------------
Tel: +44 161 436 6131 Fax: +44 161 436 6133   Web: http://www.cs.man.ac.uk/~chl
Email: [email-masked]      Snail: 5 Clerewood Ave, CHEADLE, SK8 3JU, U.K.
PGP: 2C15F1A9      Fingerprint: 73 6D C2 51 93 A0 01 E7 65 E8 64 7E 14 A4 AB A5