<!DOCTYPE html>
<html>
  <head>
    <title>{{.Title}} Help</title>
    <link rel="shortcut icon" href="/dist/favicon.ico" />
    <script>
      window.GoldSettings = {{.GoldSettings}};
    </script>
  </head>
  <body class="body-sk">
    <gold-scaffold-sk>
      <h1>What is Gold?</h1>

      <p>
        Gold is a tool to help track and manage the output of visual tests over
        a range of commits.
      </p>

      <h2>Overview and Vocabulary</h2>

      <p>
        A <dfn>test</dfn> is a bit of code that produces a PNG image which is
        uploaded to Gold for cataloging. The images uploaded to Gold are
        uniquely identified by a hash digest of their pixel content (and
        potentially other metadata like colorspace); thus the term
        <dfn>digest</dfn> is frequently used as a synonym of image. Digests are
        "triaged" to be correct (positive) or incorrect (negative); this is
        generally done by a human inspecting the digests. A digest that has not
        been marked positive or negative is said to be "untriaged" and generally
        means that a test has started producing different output (and a human
        should check if it's correct).
      </p>

      <p>
        When a digest is uploaded to Gold, it is tagged with a number of
        key/value pairs. These keys (frequently called <dfn>params</dfn>) are
        generally used to label how a digest was produced, for example
        OS=Android or GPU=Nvidia770GTX. Params can be arbitrary and Gold will
        automatically identify and process any new params produced by a test -
        no server-side pre-configuration is necessary. There are two special
        keys, one for the "name" of the test and the other is "source_type" (aka
        corpus). Data in Gold tends to be grouped first by corpus, and then by
        test.
      </p>

      <p>
        A Gold <dfn>trace</dfn> refers to all digests seen belonging to a unique
        set of params. These traces are visualized throughout Gold as lines of
        colored dots where a color refers to a specific digest. A trace belongs
        to exactly one test in exactly one corpus. A trace (or test) is allowed
        to have multiple positive digests; in practice this happens due to
        things like nondeterminism in anti-aliasing algorithms for certain GPUs.
      </p>

      <p>
        To keep processing tractable, Gold only focuses on the last N commits
        for which it has seen data. N is generally between 200 and 500 depending
        on settings for an individual instance.
      </p>

      <h2>Pages on Gold</h2>

      <h3>By Blame (default page)</h3>

      <p>
        On the By Blame page, Gold shows a set of recent commits that Gold
        believes have first introduced on or more untriaged digests. There are
        links on this page that will lead to the Search Page showing all
        untriaged digests and the Details page showing details about individual
        digests.
      </p>

      <h3>Search</h3>

      <p>
        This is one of Gold's most powerful pages, as it allows one to search
        and filter over all the input Gold has processed. By default, it will
        show traces that have untriaged digests "at head", that is to say,
        traces which have most recently produced an unseen image. These traces
        are grouped together by digest, so if multiple traces output the same
        digest (for example, a Release and a Debug build), they will be closer
        together. Digests will automatically be compared to another digest from
        the same test; in fact, the most similar digest.
      </p>

      <p>
        It is common to triage digests on the search page. Additionally, there
        is a zoom button that can allow for a closer side-by-side view of the
        difference between a digest and another digest. When zoomed in, a common
        keyboard shortcut "u" can be used to jump to the largest difference.
      </p>

      <h3>Details</h3>

      <p>
        The details page shows information about one digest and any traces the
        produce it.
      </p>

      <!-- TODO(kjlubick) more about the other pages -->
    </gold-scaffold-sk>
  </body>
</html>
