<?xml version="1.0" encoding="UTF-8"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     category="info"
     docName="draft-gravit-graviteron-00"
     ipr="trust200902"
     submissionType="independent"
     xml:lang="en"
     version="3">

  <front>
    <title abbrev="Graviteron">The Graviteron: A Unit for the Weight of Independent Evidence</title>

    <seriesInfo name="Internet-Draft" value="draft-gravit-graviteron-00"/>

    <author initials="A." surname="Konviser" fullname="Alex Konviser">
      <organization>Gravit Open Network</organization>
      <address>
        <postal>
          <city>Zurich</city>
          <country>Switzerland</country>
        </postal>
        <email>ietf@gravit.space</email>
      </address>
    </author>

    <date year="2026" month="November" day="1"/>

    <keyword>weight of evidence</keyword>
    <keyword>deciban</keyword>
    <keyword>verifiable trust</keyword>

    <abstract>
      <t>
        This document defines the Graviteron, a unit that states how much
        signed, independent evidence supports or contradicts a claim. A
        Graviteron reading is the weight of evidence of Turing and Good,
        expressed in decibans: ten times the base-10 logarithm of the
        factor by which independent checks change the odds of the claim.
        The document specifies the computation from operator verdicts and
        measured operator reliability, eight properties that every
        conforming implementation must satisfy, a reading format that is
        never a bare number, and language-neutral test vectors. It does
        not define a decision rule.
      </t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro">
      <name>Introduction</name>
      <t>
        Systems that check claims about AI outputs, data or actions often
        report a confidence score whose meaning differs from one system to
        the next. Scores are added when they should not be, keys of one
        party are counted as independent voices, old checks keep full
        weight forever, and contradictions disappear into an average.
      </t>
      <t>
        The Graviteron addresses this by fixing the quantity being
        reported. It does not measure truth. It measures how far the
        available independent, signed evidence moves the odds of a claim,
        on a logarithmic scale whose zero means "no evidence either way".
        The quantity is the weight of evidence introduced by A. M. Turing
        and I. J. Good <xref target="GOOD1950"/>, measured in decibans.
      </t>
      <t>
        Two implementations conform to this document if they produce the
        same readings, within the stated tolerances, for the test vectors
        of <xref target="vectors"/>. A unit is useful only when independent
        implementations agree; the vectors exist for that purpose.
      </t>
      <t>
        This document is related to the Gravit Epistemic Verification
        Protocol <xref target="I-D.gravit-gevp"/>, which defines signed
        evidence Records and grouping by independent source. The
        Graviteron can be computed from such Records, but it is defined
        independently of any product or protocol, and the decision of
        whether a claim may be called a fact is out of scope.
      </t>
    </section>

    <section anchor="terms">
      <name>Conventions and Terminology</name>
      <t>
        The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
        NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
        "MAY", and "OPTIONAL" in this document are to be interpreted as
        described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
        when, and only when, they appear in all capitals, as shown here.
      </t>
      <dl>
        <dt>Claim:</dt>
        <dd>A statement that can be true or false, for example that a
        payment occurred or that an output was produced by a given model.</dd>
        <dt>Operator:</dt>
        <dd>An independent party that checks claims. One operator may
        hold several signing keys; they remain one operator.</dd>
        <dt>Verdict:</dt>
        <dd>The signed result of an operator for a claim: true, false, or
        null (no result).</dd>
        <dt>Sensitivity, specificity:</dt>
        <dd>The measured probability that the operator returns true for a
        true claim, and false for a false claim. They are estimated from
        data, for example with the Dawid-Skene method <xref target="DAWID1979"/>.</dd>
        <dt>Deciban (dB):</dt>
        <dd>Ten times the base-10 logarithm of a likelihood ratio or odds
        factor.</dd>
      </dl>
    </section>

    <section anchor="definition">
      <name>Definition</name>
      <t>
        The Graviteron G of a claim, given the evidence E, is:
      </t>
      <artwork><![CDATA[
   G = 10 * log10( O(claim | E) ) - 10 * log10( O(claim) )
      ]]></artwork>
      <t>
        where O denotes odds. With independent operators this equals the
        sum of the operators' contributions:
      </t>
      <artwork><![CDATA[
   G = sum over operators i of  g_i

   g_i = 10 * log10( sens_i / (1 - spec_i) )   if verdict_i = true
   g_i = 10 * log10( (1 - sens_i) / spec_i )   if verdict_i = false
      ]]></artwork>
      <t>
        Implementations MUST clamp sensitivity and specificity to the
        interval [1e-6, 1 - 1e-6] before computing g_i.
      </t>
      <section anchor="verdict">
        <name>One Verdict per Operator</name>
        <t>
          All records of one operator, under any number of keys, MUST be
          reduced to one verdict: the majority of its non-null results.
          If there are no non-null results, or the results are tied, the
          operator's verdict is null.
        </t>
      </section>
      <section anchor="decay">
        <name>Decay</name>
        <t>
          A reading MAY use a half life h. A contribution whose verdict is
          a seconds old then becomes g_i * 2^(-a / h). A renewed check has
          age 0 and full weight. Without a half life, contributions do not
          decay.
        </t>
      </section>
    </section>

    <section anchor="properties">
      <name>Required Properties</name>
      <t>A conforming implementation MUST satisfy all of the following.</t>
      <ol>
        <li>Zero point: with no counted evidence, G = 0.</li>
        <li>Sign: a confirmation by an operator better than chance gives a
        positive contribution; a contradiction gives a negative one.</li>
        <li>Additivity: contributions of independent operators add.</li>
        <li>Sybil invariance: adding keys to one operator does not change G.</li>
        <li>Dynamics: with a half life, a contribution halves after one
        half life and is restored when the check is renewed.</li>
        <li>No silent evidence: an operator with a null verdict, or without
        measured sensitivity and specificity, contributes nothing, and the
        reading MUST say so in its notes.</li>
        <li>Never a bare point: every reading carries an interval
        (<xref target="interval"/>) that narrows as independent operators
        are added.</li>
        <li>Visible contradiction: if any counted operator signed false,
        the reading MUST be flagged as contested, and the flag MUST NOT be
        removed by averaging.</li>
      </ol>
    </section>

    <section anchor="reading">
      <name>The Reading</name>
      <t>
        A Graviteron reading MUST contain: the value G in decibans; an
        interval; a verbal band; the number of independent operators that
        contributed; the contradiction flag; the contribution of each
        operator; and notes for every record that counted nothing.
      </t>
      <section anchor="bands">
        <name>Verbal Bands</name>
        <t>
          The band follows the scale of Jeffreys <xref target="JEFFREYS1961"/>
          on the absolute value of G: below 5 dB "inconclusive"; 5 to below
          10 "substantial"; 10 to below 15 "strong"; 15 to below 20 "very
          strong"; 20 and more "decisive". Except for "inconclusive", the
          band is followed by "support" when G is positive and
          "contradiction" when G is negative. A contested reading is
          prefixed by "contested: ".
        </t>
        <t>
          The bands are a communication scale. They are not a decision rule
          and MUST NOT be presented as one.
        </t>
      </section>
      <section anchor="interval">
        <name>Interval</name>
        <t>
          Each contribution c is converted to a pseudo-count
          1 - 2^(-|c| / 10). Let pos be the sum of pseudo-counts of positive
          contributions and neg that of negative ones, and let
          a = 1 + pos and b = 1 + neg. With the quantiles q_lo and q_hi of
          the Beta(a, b) distribution at (1 - L)/2 and (1 + L)/2 for the
          interval level L (default 0.9), and d(p) = 10 * log10(p / (1 - p)),
          the interval is:
        </t>
        <artwork><![CDATA[
   [ G + d(q_lo) - d(a / (a + b)),  G + d(q_hi) - d(a / (a + b)) ]
        ]]></artwork>
        <t>
          This interval is provisional: it reflects how much independent
          evidence there is, not yet the uncertainty in the operators'
          measured reliability. A future version is expected to carry the
          sample sizes of the reliability estimates into the interval.
        </t>
      </section>
    </section>

    <section anchor="vectors">
      <name>Test Vectors</name>
      <t>
        Twenty-one test vectors, with inputs (records, operator parameters,
        ages, half life, interval level) and expected readings, are
        published as JSON <xref target="VECTORS"/>. Tolerances are 1e-6 dB
        for G and for each contribution, and 1e-4 dB for the interval
        bounds. Four of them, for operators with sensitivity and
        specificity of 0.9/0.9 and 0.8/0.95:
      </t>
      <table>
        <thead>
          <tr><th>Situation</th><th>G (dB)</th><th>90 % interval</th><th>Band</th></tr>
        </thead>
        <tbody>
          <tr><td>one operator confirms</td><td>9.542425</td><td>-0.32 to 22.37</td><td>substantial support</td></tr>
          <tr><td>three operators confirm</td><td>31.126</td><td>23.54 to 43.98</td><td>decisive support</td></tr>
          <tr><td>two confirm, one signs false</td><td>12.318</td><td>4.01 to 22.50</td><td>contested: strong support</td></tr>
          <tr><td>three confirm, 60 days old, half life 30 days</td><td>7.782</td><td>-2.05 to 20.61</td><td>substantial support</td></tr>
        </tbody>
      </table>
    </section>

    <section anchor="implementation">
      <name>Implementation Status</name>
      <t>
        One reference implementation exists (Python, Apache-2.0)
        <xref target="GRAVITERON"/>; it passes the test vectors in
        continuous integration. No independent implementation exists yet.
        An open call for independent implementations is made through the
        Open Verifiable AI Consortium. This section is to be removed before
        publication as an RFC.
      </t>
    </section>

    <section anchor="security">
      <name>Security Considerations</name>
      <t>
        The Graviteron is only as sound as the independence of the
        operators and the measurement of their reliability. An attacker
        who controls several operators that appear independent inflates G;
        Sybil invariance protects only against several keys of one known
        operator. Deciding which operators are independent is out of scope
        and SHOULD follow a documented procedure, for example the grouping
        by independent source in <xref target="I-D.gravit-gevp"/>.
      </t>
      <t>
        Overstated sensitivity or specificity inflates every contribution
        of that operator. Reliability estimates SHOULD be published with
        their data and sample sizes.
      </t>
      <t>
        A high G is not a proof. Presenting a reading without its interval,
        operator count and contradiction flag invites false precision and
        is not conforming.
      </t>
    </section>

    <section anchor="iana">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>

  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner"><organization/></author>
            <date year="1997" month="March"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba"><organization/></author>
            <date year="2017" month="May"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="VECTORS" target="https://github.com/gravit-open-network-foundation/graviteron/blob/main/vectors/graviteron-unit-v0.4.json">
          <front>
            <title>Graviteron unit test vectors, version 0.4.0</title>
            <author><organization>Gravit Open Network</organization></author>
            <date year="2026" month="November"/>
          </front>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="I-D.gravit-gevp" target="https://datatracker.ietf.org/doc/draft-gravit-gevp/">
          <front>
            <title>Gravit Epistemic Verification Protocol (GEVP)</title>
            <author initials="A." surname="Konviser" fullname="Alex Konviser"><organization>Gravit Open Network</organization></author>
            <date year="2026" month="October"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-gravit-gevp-11"/>
        </reference>
        <reference anchor="GOOD1950">
          <front>
            <title>Probability and the Weighing of Evidence</title>
            <author initials="I. J." surname="Good" fullname="I. J. Good"><organization/></author>
            <date year="1950"/>
          </front>
          <refcontent>Charles Griffin, London</refcontent>
        </reference>
        <reference anchor="JEFFREYS1961">
          <front>
            <title>Theory of Probability, 3rd edition</title>
            <author initials="H." surname="Jeffreys" fullname="H. Jeffreys"><organization/></author>
            <date year="1961"/>
          </front>
          <refcontent>Oxford University Press</refcontent>
        </reference>
        <reference anchor="DAWID1979">
          <front>
            <title>Maximum Likelihood Estimation of Observer Error-Rates Using the EM Algorithm</title>
            <author initials="A. P." surname="Dawid" fullname="A. P. Dawid"><organization/></author>
            <author initials="A. M." surname="Skene" fullname="A. M. Skene"><organization/></author>
            <date year="1979"/>
          </front>
          <refcontent>Journal of the Royal Statistical Society, Series C, 28(1), 20-28</refcontent>
        </reference>
        <reference anchor="GRAVITERON" target="https://github.com/gravit-open-network-foundation/graviteron">
          <front>
            <title>Graviteron reference implementation</title>
            <author><organization>Gravit Open Network</organization></author>
            <date year="2026"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
</rfc>
