2 @section Problem Report format
3 @cindex Problem Report format
5 @cindex database similarities
8 The format of a PR is designed to reflect the nature of @sc{gnats} as a
9 database. Information is arranged into @dfn{fields}, and kept in
10 individual records (Problem Reports).
12 Problem Report fields are denoted by a keyword which begins with
13 @samp{>} and ends with @samp{:}, as in @samp{>Confidential:}. Fields
14 belong to one of three data types:
17 @cindex Problem Report data types
18 @cindex @emph{Enumerated} data types
20 One of a specific set of values, which vary according to the field. The
21 value for each keyword must be on the same line as the keyword. These
22 values are not configurable (yet).
25 For each @sc{Enumerated} keyword, the possible choices are listed in the
26 @code{send-pr} template as a comment.
28 The following fields are @sc{Enumerated} format; see the descriptions of
29 fields below for explanations of each field in detail:
33 >Confidential: >Severity: >Priority:
34 >Class: >State: >Number:
38 @cindex @emph{Text} data types
40 One single line of text which must begin and end on the same line (i.e.,
41 before a newline) as the keyword. See the descriptions of fields below
42 for explanations of each field in detail. The following fields are
47 >Submitter-Id: >Originator: >Synopsis:
48 >Category: >Release: >Responsible:
53 @cindex @emph{MultiText} data types
55 Text of any length may occur in this field. @sc{MultiText} may span
56 multiple lines and may also include blank lines. A @sc{MultiText} field
57 ends only when another keyword appears. See the descriptions of fields
58 below for explanations of each field in detail.
60 The following fields are @sc{MultiText} format:
64 >Organization: >Environment: >Description:
65 >How-To-Repeat: >Fix: >Audit-Trail:
72 A Problem Report contains two different types of fields: @dfn{Mail
73 Header} fields, which are used by the mail handler for delivery, and
74 @dfn{Problem Report} fields, which contain information relevant to the
75 Problem Report and its submitter. A Problem Report is essentially a
76 specially formatted electronic mail message.
79 @subheading Example Problem Report
82 The following is an example Problem Report. Mail headers are at the
83 top, followed by @sc{gnats} fields, which begin with @samp{>} and end
84 with @samp{:}. The @samp{Subject:} line in the mail header and the
85 @samp{>Synopsis:} field are usually duplicates of each other.
87 @cindex sample Problem Report
88 @cindex example Problem Report
89 @cindex Problem Report template
93 Message-Id: @var{message-id}
96 Reply-To: @var{address}
98 Subject: @var{subject}
100 >Number: @var{gnats-id}
101 >Category: @var{category}
102 >Synopsis: @var{synopsis}
103 >Confidential: no @emph{or} yes
104 >Severity: critical, serious, @emph{or} non-critical
105 >Priority: high, medium @emph{or} low
106 >Responsible: @var{responsible}
107 >State: open, analyzed, suspended, feedback, @emph{or} closed
108 >Class: sw-bug, doc-bug, change-request, support,
113 duplicate, @emph{or} mistaken
115 >Submitter-Id: @var{submitter-id}
116 >Arrival-Date: @var{date}
117 >Originator: @var{name}
118 >Organization: @var{organization}
119 >Release: @var{release}
129 @var{appended-messages@dots{}}
130 State-Changed-From-To: @var{from}-@var{to}
131 State-Changed-When: @var{date}
134 Responsible-Changed-From-To: @var{from}-@var{to}
135 Responsible-Changed-When: @var{date}
136 Responsible-Changed-Why:
145 * Mail header fields::
146 * Problem Report fields::
149 @c ----------------------
150 @node Mail header fields
151 @subsection Mail header fields
152 @cindex mail header fields
153 @cindex Internet standard RFC-822
155 A Problem Report may contain any mail header field described in the
156 Internet standard RFC-822. However, only the fields which identify the
157 sender and the subject are required by @code{send-pr}:
160 @cindex @code{To:} header
162 The preconfigured mail address for the Support Site where the PR is to
163 be sent, automatically supplied by @code{send-pr}.
165 @cindex @code{Subject:} header
167 A terse description of the problem. This field normally contains the
168 same information as the @samp{>Synopsis:} field.
170 @cindex @code{From:} header
172 Usually supplied automatically by the originator's mailer; should
173 contain the originator's electronic mail address.
175 @cindex @code{Reply-To:} header
177 A return address to which electronic replies can be sent; in most cases,
178 the same address as the @code{From:} field.
182 @cindex @code{Received-By:} headers
183 One of the configurable options for @sc{gnats} is whether or not to
184 retain @w{@samp{Received-By:}} headers, which often consume a lot of
185 space and are not often used. @xref{Local configuration,,Changing your
186 local configuration}.
189 @c ----------------------
190 @node Problem Report fields
191 @subsection Problem Report fields
192 @cindex GNATS database fields
195 @c FIXME - this node is loooooooooooooooong...
197 @subheading Field descriptions
199 The following fields are present whenever a PR is submitted via the
200 program @code{send-pr}. @sc{gnats} adds additional fields when the PR
201 arrives at the Support Site; explanations of these follow this list.
203 @cindex fields - list
204 @cindex GNATS fields - list
207 @cindex @code{Submitter-Id} field
208 @cindex @code{>Submitter-Id:}
209 (@sc{Text}) A unique identification code assigned by the Support Site.
210 It is used to identify all Problem Reports coming from a particular
211 site. (Submitters without a value for this field can invoke
212 @code{send-pr} with the @samp{--request-id} option to apply for one from
213 the support organization. Problem Reports from those not affiliated
214 with the support organization should use the default value of @samp{net}
218 @cindex @code{Originator} field
219 @cindex @code{>Originator:}
220 (@sc{Text}) Originator's real name. The default is the value of the
221 originator's environment variable @code{NAME}.
224 @cindex @code{>Organization:}
225 @cindex @code{Organization} field
226 (@sc{MultiText}) The originator's organization. The default value is
227 set with the variable @w{@code{DEFAULT_ORGANIZATION}} in the
229 @file{config} file (@pxref{config,,The @code{config} file}).
232 @code{send-pr} shell script.
236 @cindex @code{Confidential} field
237 @cindex @code{>Confidential:}
238 @cindex confidentiality in PRs
239 @cindex PR confidentiality
240 (@sc{Enumerated}) Use of this field depends on the originator's
241 relationship with the support organization; contractual agreements often
242 have provisions for preserving confidentiality. Conversely, a lack of a
243 contract often means that any data provided will not be considered
244 confidential. Submitters should be advised to contact the support
245 organization directly if this is an issue.
247 If the originator's relationship to the support organization provides
248 for confidentiality, then if the value of this field is @samp{yes} the
249 support organization treats the PR as confidential; any code samples
250 provided are not made publicly available (e.g., in regression test
251 suites). The default value is @samp{yes}.
254 @cindex @code{Synopsis} field
255 @cindex @code{>Synopsis:}
256 (@sc{Text}) One-line summary of the problem. @w{@code{send-pr}} copies
257 this information to the @samp{Subject:} line when you submit a Problem
261 @cindex @code{Severity} field
262 @cindex @code{>Severity:}
263 (@sc{Enumerated}) The severity of the problem. Accepted values include:
266 @cindex @emph{critical} severity problems
268 The product, component or concept is completely non-operational or some
269 essential functionality is missing. No workaround is known.
271 @cindex @emph{serious} severity problems
273 The product, component or concept is not working properly or significant
274 functionality is missing. Problems that would otherwise be considered
275 @samp{critical} are rated @samp{serious} when a workaround is known.
277 @cindex @emph{non-critical} severity problems
279 The product, component or concept is working in general, but lacks
280 features, has irritating behavior, does something wrong, or doesn't
281 match its documentation.
284 The default value is @samp{serious}.
288 @cindex @code{Priority} field
289 @cindex @code{>Priority:}
290 (@sc{Enumerated}) How soon the originator requires a solution. Accepted
294 @cindex @emph{high} priority problems
296 A solution is needed as soon as possible.
298 @cindex @emph{medium} priority problems
300 The problem should be solved in the next release.
302 @cindex @emph{low} priority problems
304 The problem should be solved in a future release.
307 The default value is @samp{medium}.
311 @cindex @code{Category} field
312 @cindex @code{>Category:}
313 (@sc{Text}) The name of the product, component or concept where
314 the problem lies. The values for this field are defined by the Support
317 @xref{categories,,The @code{categories} file}, for details.
321 @cindex @code{Class} field
322 @cindex @code{>Class:}
323 (@sc{Enumerated}) The class of a problem can be one of the following:
326 @cindex @emph{sw-bug} class
328 A general product problem. (@samp{sw} stands for ``software''.)
330 @cindex @emph{doc-bug} class
332 A problem with the documentation.
334 @cindex @emph{change-request} class
336 A request for a change in behavior, etc.
338 @cindex @emph{support} class
340 A support problem or question.
342 @cindex @emph{duplicate} class
343 @item duplicate (@var{pr-number})
344 Duplicate PR. @var{pr-number} should be the number of the original PR.
347 @cindex @emph{mistaken} class
349 No problem, user error or misunderstanding. This value is valid only at
355 The default is @samp{sw-bug}.
359 @cindex @code{Release} field
360 @cindex @code{>Release:}
361 (@sc{Text}) Release or version number of the product, component or
365 @cindex @code{Environment} field
366 @cindex @code{>Environment:}
367 (@sc{MultiText}) Description of the environment where the problem occurred:
368 machine architecture, operating system, host and target types,
369 libraries, pathnames, etc.
372 @cindex @code{Description} field
373 @cindex @code{>Description:}
374 (@sc{MultiText}) Precise description of the problem.
376 @item >How-To-Repeat:
377 @cindex @code{How-To-Repeat} field
378 @cindex @code{>How-To-Repeat:}
379 (@sc{MultiText}) Example code, input, or activities to reproduce the
380 problem. The support organization uses example code both to reproduce
381 the problem and to test whether the problem is fixed. Include all
382 preconditions, inputs, outputs, conditions after the problem, and
383 symptoms. Any additional important information should be included.
384 Include all the details that would be necessary for someone else to
385 recreate the problem reported, however obvious. Sometimes seemingly
386 arbitrary or obvious information can point the way toward a solution.
387 See also @ref{Helpful hints,,Helpful hints}.
390 @cindex @code{Fix} field
392 (@sc{MultiText}) A description of a solution to the problem, or a patch
393 which solves the problem. (This field is most often filled in at the
394 Support Site; we provide it to the submitter in case she has solved the
400 @sc{gnats} adds the following fields when the PR arrives at the Support
404 @cindex @code{Number} field
405 @cindex @code{>Number:}
407 (@sc{Enumerated}) The incremental identification number for this PR.
409 This is included in the automated reply to the submitter (if that
410 feature of @sc{gnats} is activated; @pxref{Local configuration,,Changing
411 your local configuration}). It is also included in the copy of the PR
412 that is sent to the maintainer.
415 The @samp{>Number:} field is often paired with the @samp{>Category:}
419 @var{category}/@var{number}
423 in subsequent email messages. This is for historical reasons, as well
424 as because Problem Reports are stored in subdirectories which are named
427 @cindex @code{State} field
428 @cindex @code{>State:}
430 (@sc{Enumerated}) The current state of the PR. Accepted values are:
434 The PR has been filed and the responsible person notified.
437 The responsible person has analyzed the problem.
440 The problem has been solved, and the originator has been given a patch
444 The changes have been integrated, documented, and tested, and the
445 originator has confirmed that the solution works.
448 Work on the problem has been postponed.
452 The initial state of a PR is @samp{open}. @xref{States,,States of
455 @cindex @code{Responsible} field
456 @cindex @code{>Responsible:}
458 (@sc{Text}) The person responsible for this category.
460 @sc{gnats} retrieves this information from the @file{categories} file
461 (@pxref{categories,,The @code{categories} file}).
465 @cindex @code{>Arrival-Date:}
466 @cindex @code{Arrival-Date} field
467 (@sc{Text}) The time that this PR was received by @sc{gnats}. The date
468 is provided automatically by @sc{gnats}.
471 @cindex @code{>Audit-Trail:}
472 @cindex @code{Audit-Trail} field
473 (@sc{MultiText}) Tracks related electronic mail as well as changes in
474 the @samp{>State:} and @samp{>Responsible:} fields with the sub-fields:
477 @cindex @code{State-Changed-<From>-<To>:} in @code{>Audit-Trail:}
478 @item @w{State-Changed-<From>-<To>: @var{oldstate}>-<@var{newstate}}
479 The old and new @samp{>State:} field values.
481 @cindex @code{Responsible-Changed-<From>-<To>:} in @code{>Audit-Trail:}
482 @item @w{Responsible-Changed-<From>-<To>: @var{oldresp}>-<@var{newresp}}
483 The old and new @samp{>Responsible:} field values.
485 @cindex @code{State-Changed-By:} in @code{>Audit-Trail:}
486 @cindex @code{Responsible-Changed-By:} in @code{>Audit-Trail:}
487 @item State-Changed-By: @var{name}
488 @itemx Responsible-Changed-By: @var{name}
489 The name of the maintainer who effected the change.
491 @cindex @code{State-Changed-When:} in @code{>Audit-Trail:}
492 @cindex @code{Responsible-Changed-When:} in @code{>Audit-Trail:}
493 @item State-Changed-When: @var{timestamp}
494 @itemx Responsible-Changed-When: @var{timestamp}
495 The time the change was made.
497 @cindex @code{State-Changed-Why:} in @code{>Audit-Trail:}
498 @cindex @code{Responsible-Changed-Why:} in @code{>Audit-Trail:}
499 @item State-Changed-Why: @var{reason@dots{}}
500 @itemx Responsible-Changed-Why: @var{reason@dots{}}
501 The reason for the change.
505 @cindex subsequent mail
507 @cindex appending PRs
508 @cindex saving related mail
510 The @samp{>Audit-Trail:} field also contains any mail messages received
511 by @sc{gnats} related to this PR, in the order received.
514 @cindex @code{>Unformatted:}
515 @cindex @code{Unformatted} field
516 (@sc{MultiText}) Any random text found outside the fields in the
517 original Problem Report.