<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     ipr="trust200902"
     docName="draft-fast-severity-00"
     submissionType="independent"
     category="info"
     obsoletes=""
     updates=""
     xml:lang="en"
     tocInclude="true"
     symRefs="true"
     sortRefs="true"
     version="3">

  <front>
    <title abbrev="FAST">FAST: Framework for Autonomous Severity and Triage</title>

    <seriesInfo name="Internet-Draft" value="draft-fast-severity-00"/>

    <author fullname="Cale Anderson" initials="C." surname="Anderson">
      <organization>Obvane</organization>
      <address>
        <email>cale@obvane.com</email>
      </address>
    </author>

    <date year="2026" month="August" day="6"/>

    <area>General</area>

    <keyword>severity</keyword>
    <keyword>triage</keyword>
    <keyword>vulnerability</keyword>
    <keyword>bug bounty</keyword>
    <keyword>autonomous agents</keyword>

    <abstract>
      <t>This document specifies the Framework for Autonomous Severity
      and Triage (FAST): an empirical standard for how autonomous
      offensive security agents classify vulnerabilities, decide whether
      to submit reports, and write those reports. FAST is derived from a
      corpus of real bug bounty reports and their program-rendered triage
      outcomes rather than from theoretical scoring frameworks. It is
      designed to be applied by both offensive agents that hunt for
      vulnerabilities and by defensive agents or human triagers that
      render verdicts, so both sides of the reporting relationship
      operate under the same rulebook. This document is submitted as an
      Independent Submission and invites comment from researchers,
      triagers, bug bounty platforms, and security teams.</t>
    </abstract>
  </front>

  <middle>

    <section anchor="introduction">
      <name>Introduction</name>

      <t>Autonomous AI agents deployed for offensive security work
      consistently misclassify vulnerability severity. Agents grounded
      in theoretical scoring frameworks such as CVSS
      <xref target="CVSS"/> systematically over-report, misclassify
      medium-severity findings as critical, submit unproven leads as
      vulnerabilities, and produce reports that human triagers reject
      as informational. The result is queue noise on the triage side
      and lost payouts on the researcher side.</t>

      <t>The root cause is not the agents themselves; it is the
      standards they have been given. Theoretical frameworks describe
      abstract risk. They do not reflect the specific patterns that
      bug bounty triagers accept or reject in practice. When an agent
      uses CVSS math to decide whether a finding is critical, it may
      arrive at a technically defensible number that a program's
      triage team would nevertheless reject.</t>

      <t>FAST addresses this gap directly. Its rules are grounded in
      two sources of empirical evidence that reinforce each other:
      what hackers actually get paid for, and what security teams
      actually accept as a vulnerability worth remediating. Both
      signals derive from a corpus of real triage outcomes: reports
      that programs paid for at each severity level, reports that
      programs rejected as informational or not-applicable, and the
      full triager-side language used across those outcomes. Because
      the rules come from observed outcomes rather than abstract risk
      models, an agent that follows FAST produces classifications
      that match what triagers accept in practice.</t>

      <t>FAST is designed for both sides of the reporting
      relationship. Offensive agents apply it when classifying and
      writing. Defensive agents apply it when rendering verdicts.
      When both sides use the same rulebook, disputes drop, queue
      noise drops, and payouts happen faster.</t>

      <section anchor="the-gap">
        <name>The Gap This Fills</name>
        <t>Several standards adjacent to autonomous AI agents exist as
        of 2026, but none address the specific question this document
        does: when an autonomous agent finds a vulnerability, how
        should it classify severity, decide whether to report, and
        write the report?</t>
        <ul>
          <li>OWASP Top 10 for Agentic Applications
          <xref target="OWASP-AGENTIC-TOP10"/> covers vulnerabilities
          that exist INSIDE agents (goal hijack, tool misuse, memory
          poisoning). It does not describe how agents should classify
          vulnerabilities they DISCOVER in third-party targets.</li>
          <li>AVE (Agentic Vulnerability Enumeration) <xref target="AVE"/>
          classifies vulnerabilities in agent components such as MCP
          servers, skill files, and plugin boundaries. It does not
          address traditional web, application, or network
          vulnerabilities.</li>
          <li>AIVSS <xref target="AIVSS"/> scores risks TO agentic AI
          systems. It does not score bugs that agents DISCOVER in
          third-party targets.</li>
          <li>IETF drafts on agent identity and security requirements
          <xref target="IETF-AGENT-SEC"/> describe authentication and
          provisioning of agents, not their decision-making about
          discovered vulnerabilities.</li>
          <li>CVSS <xref target="CVSS"/> is a theoretical scoring
          framework agnostic to triager behaviour, program norms, and
          empirical payout patterns.</li>
        </ul>
      </section>

      <section anchor="applicability">
        <name>Applicability and Non-Goals</name>
        <t>FAST is applicable to:</t>
        <ul>
          <li>Autonomous or semi-autonomous agents that discover
          vulnerabilities in third-party systems and submit
          reports.</li>
          <li>Autonomous or semi-autonomous agents that triage
          submitted reports.</li>
          <li>Human researchers who wish to align their reporting with
          a shared standard.</li>
          <li>Bug bounty platforms and in-house programs adopting a
          classification baseline.</li>
        </ul>
        <t>FAST is NOT:</t>
        <ul>
          <li>A vulnerability scoring system in the CVSS sense. It
          classifies findings into ordered severity bands based on
          demonstrated access and evidence type; it does not produce
          a numeric score.</li>
          <li>A payout schedule. Programs set payouts. FAST classifies
          severity and reporting quality only.</li>
          <li>An authorisation to test. All authorisation derives from
          the program's scope and rules of engagement.</li>
          <li>A framework for classifying vulnerabilities in agents
          themselves. See <xref target="OWASP-AGENTIC-TOP10"/>,
          <xref target="AVE"/>, and <xref target="AIVSS"/> for that
          problem space.</li>
          <li>A finished, consensus-based standard. This document is
          a proposal and expects to evolve with community
          feedback.</li>
        </ul>
      </section>

      <section anchor="requirements-language">
        <name>Requirements Language</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>
      </section>
    </section>

    <section anchor="terminology">
      <name>Terminology</name>
      <dl newline="false">
        <dt>Agent:</dt>
        <dd>An autonomous or semi-autonomous software system that
        performs offensive security tasks (reconnaissance,
        vulnerability discovery, exploitation) or triage tasks
        (classification, verdict rendering) on behalf of a human
        researcher, security team, or program.</dd>

        <dt>Lead:</dt>
        <dd>An observation that MAY represent a vulnerability but has
        not been proven to be one. Leads are internal working state.
        Leads MUST NOT be reported.</dd>

        <dt>Vulnerability:</dt>
        <dd>A confirmed, exploitable issue with demonstrated impact,
        evidenced by a reproducible request/response chain, command
        output, or equivalent artefact. A vulnerability is what a
        report describes.</dd>

        <dt>Report:</dt>
        <dd>A written submission describing a confirmed vulnerability,
        its reproduction steps, and its impact, in the format
        prescribed by <xref target="report-format"/>.</dd>

        <dt>Report Gate:</dt>
        <dd>The set of six binary criteria specified in
        <xref target="report-gate"/> that a finding MUST satisfy
        before it is submitted as a report.</dd>

        <dt>Positive Oracle:</dt>
        <dd>The subset of the derivation corpus (see
        <xref target="methodology"/>) consisting of reports that a
        program paid for at a given severity level. Used to define
        what constitutes a vulnerability at each level.</dd>

        <dt>Negative Oracle:</dt>
        <dd>The subset of the derivation corpus consisting of reports
        that a program rejected (marked informational,
        not-applicable, or otherwise closed without payment on the
        basis that the submission did not constitute a
        vulnerability). Used to define what is NOT a
        vulnerability.</dd>

        <dt>Chain Escalation:</dt>
        <dd>The pattern by which a base finding of one class combines
        with proven access of another type to produce a
        higher-severity vulnerability.</dd>

        <dt>Triager:</dt>
        <dd>The human or agent responsible for reviewing a submitted
        report and rendering a verdict.</dd>

        <dt>Program:</dt>
        <dd>The entity operating a bug bounty program, vulnerability
        disclosure program, or internal red-team engagement whose
        triagers render verdicts on reports.</dd>

        <dt>Blast Radius:</dt>
        <dd>A quantitative or qualitatively-unbounded statement of
        how many users, records, systems, or accounts are affected
        by a vulnerability.</dd>
      </dl>
    </section>

    <section anchor="methodology">
      <name>Derivation Methodology</name>
      <t>The rules in this document are not derived from committee
      consensus or theoretical risk modelling. They are derived from a
      corpus of real vulnerability reports and the outcomes those
      reports received from program triage teams. This section
      describes the corpus, the extraction pipeline, and how the
      observations became rules. The methodology is transparent by
      design so that anyone with a comparable corpus can reproduce or
      challenge the derivation.</t>

      <section anchor="source-data">
        <name>Source Data</name>
        <t>The corpus consists of the full submitted-report history of
        an active security researcher across a diverse portfolio of
        bug bounty and vulnerability disclosure programs, spanning
        multiple years. The corpus includes reports at every outcome
        state:</t>
        <ul>
          <li>Reports paid at each severity level.</li>
          <li>Reports marked informational or not-applicable by the
          program.</li>
          <li>Reports resolved without payment on programs that do
          not offer bounties (typically vulnerability disclosure
          programs).</li>
          <li>Reports marked duplicate (excluded from analysis as
          they carry no severity signal beyond an earlier submission
          having existed).</li>
        </ul>
        <t>For each report, the corpus contains:</t>
        <ul>
          <li>The submitted vulnerability description.</li>
          <li>The full timeline of triage activity, including
          severity change events, bounty-award actions, resolution
          actions, retest requests, and free-text comments from
          triagers and reporters.</li>
          <li>The program-assigned severity at each point in time, so
          that a final severity distinct from the submitted severity
          can be observed.</li>
        </ul>
      </section>

      <section anchor="two-oracle">
        <name>Two-Oracle Design</name>
        <t>FAST is derived from two oracles built from the corpus.</t>
        <t>The positive oracle consists of reports that a program
        accepted as a vulnerability at a given severity level. In
        this document, a program "accepting" a report means either
        paying a bounty or, on a non-paying program, marking it
        resolved with an assigned severity. Reports in the positive
        oracle define what a vulnerability at each severity level
        looks like in practice.</t>
        <t>The negative oracle consists of reports the program
        rejected as not constituting a vulnerability. This includes
        reports marked informational, reports marked not-applicable,
        and reports otherwise closed without a vulnerability verdict.
        Reports in the negative oracle define what is NOT a
        vulnerability, and the boundary between positive and negative
        oracle defines the report gate specified in
        <xref target="report-gate"/>.</t>
        <t>Duplicates carry no severity signal (they only indicate
        that another reporter submitted the same finding earlier)
        and are excluded from both oracles.</t>
      </section>

      <section anchor="extraction">
        <name>Feature Extraction Pipeline</name>
        <t>For every report in the corpus, a deterministic extraction
        pipeline produces a structured record. The extraction is
        rule-based and does not depend on interpretive
        machine-learning judgement. The features extracted include:</t>
        <ul>
          <li>Vulnerability class (for example: remote code execution,
          SQL injection, server-side request forgery, account
          takeover, insecure direct object reference, PII disclosure,
          credential leak, misconfiguration, cross-site scripting, and
          related categories).</li>
          <li>Access type achieved by the exploit (for example:
          execute commands, read sensitive data, write data belonging
          to others, impersonate a user, achieve lateral
          movement).</li>
          <li>Data sensitivity accessed (for example: customer PII,
          internal employee data, credentials or secrets, source
          code, financial data).</li>
          <li>Scale of impact (single user, bounded set, all users,
          entire infrastructure, or no demonstrated access).</li>
          <li>Authentication requirement (unauthenticated,
          self-signup, victim-interaction required, existing account
          required).</li>
          <li>Interaction requirement (zero-click, one-click,
          multi-step).</li>
          <li>Proof type demonstrated (HTTP request/response
          artefact, reverse shell output, data-bearing screenshot,
          video PoC, chained PoC, or tool output only).</li>
          <li>Chain depth (single finding, two-step chain,
          three-or-more-step chain).</li>
          <li>Structural features of the written report (section
          ordering, section names present, presence of numeric or
          qualitatively unbounded blast-radius statements, use of
          language patterns identified as anti-patterns).</li>
          <li>Triager-side events extracted from the activity
          timeline (severity-change events, bounty-award actions,
          resolution actions, free-text triager comments with their
          acceptance, rejection, upgrade, and downgrade language
          patterns).</li>
        </ul>
        <t>The extraction is written such that any comparable corpus
        can be processed the same way. It emits a structured record
        per report; the records collectively form the raw evidence
        base from which FAST is derived.</t>
      </section>

      <section anchor="derivation">
        <name>Empirical Rule Derivation</name>
        <t>Rules are derived from the extracted records by four
        analyses.</t>

        <t>Severity boundary analysis operates on the positive oracle.
        For each adjacent pair of severity levels (critical vs high,
        high vs medium, medium vs low), the analysis computes the
        differential distribution of every extracted feature. Features
        that appear disproportionately at the higher level define what
        distinguishes the higher level from the lower one. The severity
        tree in <xref target="decision-tree"/> is constructed to route
        findings to the level whose distinguishing features they
        exhibit.</t>

        <t>Report-gate derivation operates on the boundary between the
        positive and negative oracles. The features whose presence
        correlates with payment (rather than rejection) become required
        elements of the report gate. The features whose absence
        correlates with rejection define the anti-patterns.</t>

        <t>Chain-escalation analysis identifies records in the positive
        oracle where a base finding of one class was combined with
        proven access of a different type. The severity that the
        program actually awarded these combined findings drives the
        escalation table in <xref target="chain-escalation"/>. Base
        findings without proven chained access map to the severity
        that the base finding alone commanded, or to "not reportable"
        if the base finding is a lead.</t>

        <t>Triager-language analysis operates on the free-text comments
        from the triager side of every activity timeline. Phrases
        corresponding to acceptance, rejection, upgrade, downgrade, and
        retest requests are catalogued. The observed frequency of
        upgrade language relative to downgrade and rejection language
        informs the rule in <xref target="decision-tree"/> that an
        agent MUST choose the lower level when uncertain: programs
        empirically upgrade well-evidenced reports far less often than
        they downgrade or close weakly-evidenced ones.</t>

        <t>Writing-style extraction operates on the subset of the
        positive oracle consisting of reports paid at high or critical
        severity. It identifies section-ordering, section-naming,
        prose-tone, and proof-formatting patterns common to reports
        that reliably cleared triage. The report format in
        <xref target="report-format"/> is constructed from those
        patterns.</t>
      </section>

      <section anchor="observed-signals">
        <name>Observed Corpus-Level Signals</name>
        <t>The following ratios and frequencies are drawn from the
        derivation corpus. They are anonymised, are not published as
        universal constants, and are provided as the empirical basis
        for specific rules in this document. Implementers applying
        FAST to their own corpus should expect the same directions of
        skew, though the magnitudes will vary.</t>

        <t>Severity-boundary signals:</t>
        <ul>
          <li>Remote code execution: roughly 2x more likely to be
          classified critical than high (about a +30 percentage-point
          skew toward critical). Basis for the decision tree placing
          RCE at the top of critical.</li>
          <li>IDOR: roughly 2x more likely to be classified high than
          critical (about a +22 percentage-point skew toward high).
          Basis for placing bounded-scope IDOR at high in the
          decision tree.</li>
          <li>Account takeover: about a +21 percentage-point skew
          toward paid over rejected. Basis for treating confirmed ATO
          as always reportable.</li>
          <li>Reflected cross-site scripting: about 4x more likely to
          be marked informational than paid. Basis for the medium
          baseline and the HIGH-only-when-chained-to-ATO
          exception.</li>
        </ul>

        <t>Report-gate signals:</t>
        <ul>
          <li>Approximately a third of rejected reports lack any
          reproducible HTTP request/response artefact. Missing proof
          is the strongest single correlate of rejection. Basis for
          gate condition 1 ("REQUEST to RESPONSE proving the
          issue").</li>
        </ul>

        <t>Structural signals (positive oracle, high and critical
        only):</t>
        <ul>
          <li>Impact section: present in roughly 99% of paid reports.</li>
          <li>Summary + Steps-to-Reproduce sections: present in
          roughly 87% of paid reports.</li>
          <li>Dominant section ordering: Summary -&gt; Steps to
          Reproduce -&gt; Impact in roughly half of paid reports,
          with a Supporting Material variant accounting for another
          quarter.</li>
          <li>Anti-pattern words ("potential", "may allow",
          "possibly"): present in only a small minority (roughly 5%)
          of paid reports. Basis for the prohibited-language rule in
          <xref target="prohibited-language"/>.</li>
        </ul>

        <t>Triager-language signals:</t>
        <ul>
          <li>Explicit upgrade phrases in triager comments appear
          substantially less often than explicit downgrade or
          rejection phrases across the corpus. Basis for the "when
          uncertain, pick the lower level" rule in
          <xref target="decision-tree"/>.</li>
        </ul>
      </section>

      <section anchor="judgment-points">
        <name>Human Judgment Points</name>
        <t>Not every rule in FAST can be resolved from data alone. A
        small number of decisions require human judgement, and each
        such decision is documented so that a reader can distinguish
        empirically-derived rules from opinionated defaults. The
        judgement points in this version of FAST are:</t>
        <ul>
          <li>Whether reports resolved without payment on
          vulnerability disclosure programs (which do not offer
          bounties) should be treated as positive-oracle inputs. This
          document treats them as positive-oracle inputs on the basis
          that a program-assigned severity is a triager verdict
          regardless of whether payment occurred.</li>
          <li>Whether a numerically-stated blast radius is required
          for high and critical, or whether qualitatively-unbounded
          language such as "any authenticated user" is acceptable.
          This document accepts either.</li>
          <li>Whether the primary classification driver is the
          vulnerability class or the achieved access type. This
          document treats them as combined: both matter, and neither
          alone is sufficient.</li>
          <li>Whether reflected cross-site scripting is medium by
          default or should be treated as never-reportable in most
          programs. This document treats it as medium by default,
          upgrading to high only when chained to account takeover
          with a working proof of concept.</li>
        </ul>
        <t>Amendments to these judgement points require evidence from
        a comparable corpus that materially disagrees with the
        current resolution.</t>
      </section>

      <section anchor="reproducibility">
        <name>Reproducibility</name>
        <t>The extraction pipeline is deterministic and scriptable.
        Nothing in the derivation of FAST depends on hidden state,
        private tooling, or non-public data. Any researcher, security
        team, or program that possesses a corpus of reports with the
        same shape (submitted text, triage outcome, severity
        assignment, and activity timeline) can apply the same pipeline
        to their own corpus. The output of that process is a
        per-record feature set from which the same four analyses
        (severity boundary, report-gate, chain-escalation,
        triager-language) and the same writing-style extraction can be
        performed.</t>
        <t>Contributors to FAST are not required to disclose
        confidential vulnerability reports. Aggregated feature
        frequencies and outcome-boundary statistics are sufficient to
        confirm or challenge the rules herein.</t>
      </section>

      <section anchor="bias">
        <name>Bias and Limitations</name>
        <t>FAST is derived from a single researcher's corpus. That
        corpus is biased by target selection, testing style, and the
        specific programs the researcher engages with. Programs in
        industries not well represented in the corpus, or with
        idiosyncratic scoring norms, may diverge from the rules in
        this document. FAST is a strong default, not a universal
        law.</t>
        <t>FAST is not a statistical proof. It is an empirical
        framework whose rules trace back to observed outcomes. Where
        the data is thin, the rules err toward the more conservative
        interpretation (see <xref target="decision-tree"/>).</t>
        <t>FAST is opinionated. Reasonable practitioners may disagree
        with specific rules. The Call for Comments in
        <xref target="call-for-comments"/> is the mechanism by which
        such disagreement is expected to reshape future versions.</t>
      </section>
    </section>

    <section anchor="prime-directives">
      <name>Prime Directives</name>
      <t>FAST rests on four prime directives that follow from the
      derivation methodology.</t>

      <section anchor="lead-vs-vuln">
        <name>Lead vs Vulnerability</name>
        <t>The distinction between a lead and a vulnerability is the
        single most important concept in FAST. In the derivation
        corpus, the majority of reports that programs marked
        informational or not-applicable were leads submitted before
        they had converted to vulnerabilities.</t>
        <t>A finding is a lead if any of the following is true:</t>
        <ul>
          <li>The exploit has not been executed against the target and
          has not returned a response demonstrating impact.</li>
          <li>The evidence consists only of tool output (scanner
          alerts, fingerprinting, static analysis findings).</li>
          <li>The reasoning relies on speculation ("if X existed,
          then Y would be possible").</li>
          <li>The observation shows that a feature exists (an
          endpoint, a token, a configuration) but does not demonstrate
          what an attacker can DO with it.</li>
        </ul>
        <t>An agent's correct behaviour on finding a lead is to
        continue investigating until the lead converts to a
        vulnerability (proof of impact) or is exhausted. Leads MUST
        NOT be reported.</t>
      </section>

      <section anchor="payout-truth">
        <name>Real Outcomes as Truth</name>
        <t>Every rule in FAST is grounded in two sources of empirical
        evidence:</t>
        <ul>
          <li>What hackers actually get paid for. If a class of
          finding consistently receives payment at critical in the
          derivation corpus, that class is critical.</li>
          <li>What security teams actually accept as a vulnerability.
          If security teams consistently accept, prioritise, and
          remediate a class of finding, it belongs in the reportable
          ladder. If they consistently close it as informational, out
          of scope, or intended behaviour, it does not.</li>
        </ul>
        <t>Both signals derive from the same underlying decisions --
        a program paying is a security team accepting -- but stating
        them explicitly matters because FAST governs both sides of
        the reporting relationship. Offensive agents optimise for
        the payout signal. Defensive agents optimise for the
        acceptance signal. Both converge on the same severity when
        the standard is applied correctly.</t>
        <t>This grounding is empirical, not theoretical.</t>
      </section>

      <section anchor="access-classifier">
        <name>Access as Classifier</name>
        <t>The primary driver of severity is the ACCESS the exploit
        lets the attacker achieve, combined with the vulnerability
        class:</t>
        <ul>
          <li>Execute commands on target infrastructure &#8594;
          Critical.</li>
          <li>Read customer PII, credentials, financial data, or
          employee data at scale &#8594; Critical.</li>
          <li>Impersonate any user (account takeover) &#8594; Critical
          or High depending on the interaction requirement.</li>
          <li>Read a bounded set of sensitive data &#8594; High.</li>
          <li>Write data belonging to other users &#8594; High or
          Medium depending on data sensitivity.</li>
          <li>Modify non-sensitive data or bypass a non-sensitive
          control &#8594; Medium.</li>
          <li>Trigger noticeable side effects with no data or
          authentication impact &#8594; Low.</li>
          <li>Demonstrate that something exists without demonstrated
          access &#8594; Not reportable.</li>
        </ul>
      </section>

      <section anchor="both-sides">
        <name>Both Sides, Same Rules</name>
        <t>FAST governs both offensive agents that produce reports and
        defensive agents that render verdicts. Before every
        classification and every submission, an agent MUST ask: "If I
        were the other side reading this, would I agree?" A NO answer
        indicates that either the evidence is missing (offensive side)
        or the criteria are being misapplied (defensive side).</t>
      </section>
    </section>

    <section anchor="report-gate">
      <name>The Report Gate</name>
      <t>Before an agent submits any report, it MUST answer YES to all
      six of the following gate conditions. If any answer is NO, the
      finding MUST NOT be submitted.</t>
      <ol>
        <li>Can I show REQUEST to RESPONSE proving the issue?</li>
        <li>Does this give an attacker access to something they should
        not have?</li>
        <li>Would a triager reproduce this in under two minutes?</li>
        <li>Is the impact clear without extra explanation?</li>
        <li>Have I stated the blast radius (numeric or unbounded
        qualitative)?</li>
        <li>Is this a vulnerability, not still a lead?</li>
      </ol>
      <t>An agent that finds any answer to be NO MUST either continue
      investigating (if the missing element can plausibly be proven)
      or discard the finding as a dead lead. The agent MUST NOT submit
      hoping that the triager will accept a partial report.</t>
    </section>

    <section anchor="decision-tree">
      <name>The Decision Tree</name>
      <t>An agent classifying a confirmed vulnerability MUST walk the
      following decision tree from top to bottom, stopping at the
      first level whose predicate is YES. Levels MUST NOT be
      skipped.</t>

      <ol>
        <li>
          <t>Does the exploit run arbitrary commands on the target's
          infrastructure?</t>
          <t>YES: CRITICAL.</t>
          <t>Examples: remote code execution, command injection,
          template injection, deserialisation leading to shell.</t>
        </li>
        <li>
          <t>Does the exploit read customer PII, credentials,
          financial data, or employee data at scale (multi-user or
          mass-source)?</t>
          <t>YES: CRITICAL.</t>
        </li>
        <li>
          <t>Does the exploit permit account takeover of any user via
          a zero-click path, or accept forged authentication via a
          weak signing key, or grant any-account access via SAML/OAuth
          misconfiguration?</t>
          <t>YES: CRITICAL.</t>
        </li>
        <li>
          <t>Does the exploit permit one-click account takeover with a
          working PoC, reach an internal service and observe its
          response body via SSRF, extract bounded data via SQL
          injection, use a leaked credential to confirm non-mass data
          access, or exploit an IDOR on sensitive bounded
          resources?</t>
          <t>YES: HIGH.</t>
        </li>
        <li>
          <t>Is there confirmed stored cross-site scripting, reflected
          cross-site scripting (baseline; upgrade only when chained to
          account takeover with a working PoC), IDOR on non-sensitive
          resources, credential leak without demonstrated access yet,
          missing authentication on non-sensitive endpoints, or write
          access to non-sensitive records?</t>
          <t>YES: MEDIUM.</t>
        </li>
        <li>
          <t>Is the finding verbose error output leaking stack traces,
          version disclosure, missing security headers on
          non-sensitive pages, or an open redirect without chain?</t>
          <t>YES: LOW.</t>
        </li>
        <li>
          <t>Is this tool output only, CORS without victim PoC,
          "endpoint exists", OIDC discovery, subdomain takeover
          without working PoC, or any lead?</t>
          <t>Not reportable.</t>
        </li>
      </ol>

      <t>When the correct level is ambiguous between two adjacent
      levels, the agent MUST choose the LOWER level. In the derivation
      corpus, programs upgrade well-evidenced reports substantially
      less often than they downgrade or close weakly-evidenced
      ones.</t>
    </section>

    <section anchor="chain-escalation">
      <name>Chain Escalation</name>
      <t>Findings compound. The severity of a chained exploit is
      defined by the FINAL demonstrated impact, not by the initial
      finding. The escalation patterns below are drawn directly from
      the positive oracle.</t>

      <table>
        <name>Common chain-escalation patterns</name>
        <thead>
          <tr><th>Base finding</th><th>Chained proof</th><th>Result</th></tr>
        </thead>
        <tbody>
          <tr><td>Credential leak alone</td><td>(no chain)</td><td>Medium</td></tr>
          <tr><td>Credential leak</td><td>+ authenticated request returning customer PII</td><td>Critical</td></tr>
          <tr><td>Credential leak</td><td>+ authenticated access to non-sensitive data</td><td>High</td></tr>
          <tr><td>SSRF (callback only)</td><td>(no data returned)</td><td>Medium</td></tr>
          <tr><td>SSRF</td><td>+ cloud metadata credentials retrieved</td><td>Critical</td></tr>
          <tr><td>SSRF</td><td>+ internal service response body observed</td><td>High</td></tr>
          <tr><td>Weak JWT secret</td><td>(no forge)</td><td>Medium</td></tr>
          <tr><td>Weak JWT secret</td><td>+ forged token accepted, account access</td><td>Critical</td></tr>
          <tr><td>Token in JS file</td><td>(no use)</td><td>Lead, not reportable</td></tr>
          <tr><td>Token in JS file</td><td>+ used to read production data</td><td>Critical</td></tr>
          <tr><td>IDOR (mutable endpoint)</td><td>(no cross-user proof)</td><td>Lead, not reportable</td></tr>
          <tr><td>IDOR</td><td>+ read/write records of other users, sensitive data</td><td>Critical</td></tr>
          <tr><td>IDOR</td><td>+ read/write records of other users, non-sensitive data</td><td>High</td></tr>
        </tbody>
      </table>

      <t>An agent MUST report the highest severity it can PROVE. It
      MUST NOT report the highest severity it can hypothesize.</t>
    </section>

    <section anchor="report-format">
      <name>Report Format</name>
      <t>The report structure below is required. It is derived from
      the section structure used in the majority of reports that
      cleared triage and received payment at high or critical severity
      in the derivation corpus.</t>

      <section anchor="title-format">
        <name>Title</name>
        <t>Format: "{Impact} on {Target} via {Root Cause}".</t>
        <t>The title MUST convey what the attacker can do, where, and
        how. It MUST NOT use hedging language such as "potential",
        "may allow", or "possibly". It MUST NOT consist only of a CVE
        identifier; the title must describe the demonstrated impact
        against the specific target.</t>
      </section>

      <section anchor="sections">
        <name>Sections and Order</name>
        <t>The following section order is REQUIRED:</t>
        <artwork type="ascii-art"><![CDATA[
## Summary
## Steps to Reproduce
## Impact
## (optional) Remediation
]]></artwork>
        <t>An accepted variant places a "Supporting Material /
        References" section between Steps and Impact for
        attachments.</t>
        <t>Agents SHOULD NOT invent additional sections. Content that
        does not fit one of the sections above either belongs inline
        within an existing section or does not belong in the
        report.</t>
      </section>

      <section anchor="summary">
        <name>Summary Section</name>
        <t>One to three sentences. States the vulnerability, the
        target, and the outcome. No preamble, no autobiography, no
        CVSS calculation.</t>
      </section>

      <section anchor="steps">
        <name>Steps to Reproduce Section</name>
        <t>A numbered list of concrete actions. It MUST include:</t>
        <ul>
          <li>Account setup or preconditions required.</li>
          <li>Each HTTP request as a fenced code block including
          request line, Host header, and critical headers
          (authentication tokens, content type).</li>
          <li>The observed response (inline text, redacted where
          necessary, or a data-bearing screenshot when the response
          body proves impact).</li>
          <li>Any chained request(s) required by a multi-step
          exploit.</li>
        </ul>
        <t>The steps MUST be complete enough that a triager can
        reproduce the exploit in under two minutes.</t>
      </section>

      <section anchor="impact">
        <name>Impact Section</name>
        <t>One paragraph. States the concrete consequence and the
        blast radius. The blast radius MUST be stated for reports
        classified High or Critical, either:</t>
        <ul>
          <li>Numerically, where possible: a concrete count of
          affected users, records, documents, or accounts.</li>
          <li>Qualitatively unbounded, where scope is truly open:
          "any authenticated user", "all customers on the
          platform".</li>
        </ul>
        <t>The Impact section MUST preemptively justify the claimed
        severity per the FAST decision tree. This is the primary
        downgrade defence: a triager should not have to infer the
        reporter's reasoning.</t>
      </section>

      <section anchor="remediation">
        <name>Remediation Section (Optional)</name>
        <t>Included when the fix is obvious, at most one or two
        sentences. Not a full advisory. Skipped when the remediation
        is not obvious.</t>
      </section>

      <section anchor="one-vuln">
        <name>One Vulnerability per Report</name>
        <t>Same root cause across multiple endpoints constitutes one
        report, enumerated internally as POC 1, POC 2, and so on.
        Different root causes require separate reports.</t>
      </section>

      <section anchor="prohibited-language">
        <name>Prohibited Language</name>
        <t>Reports MUST NOT contain:</t>
        <ul>
          <li>"potential", "might be vulnerable", "could be
          vulnerable", "possibly".</li>
          <li>Speculation about follow-on impact not proven ("if this
          were chained with X, an attacker could Y").</li>
          <li>Tool output presented as sole evidence.</li>
          <li>CVSS calculations used as the classifier for severity
          band. CVSS scores a vulnerability's technical characteristics;
          FAST decides the severity band for reporting. Keep them
          separate.</li>
        </ul>
      </section>
    </section>

    <section anchor="dual-audience">
      <name>Dual-Audience Application</name>
      <t>FAST is dual-audience. The classification criteria and report
      requirements apply to both offensive agents producing reports
      and defensive agents or human triagers rendering verdicts.</t>

      <t>An offensive agent applying FAST produces reports that
      satisfy the report gate and follow the required format. A
      defensive agent applying FAST evaluates submitted reports
      against the same criteria and renders consistent verdicts.</t>

      <t>When both sides apply the same standard:</t>
      <ul>
        <li>Reports arrive triaged in the correct classification.</li>
        <li>Verdicts match the reporter's classification, minimising
        dispute.</li>
        <li>Queue noise drops because reporters self-filter leads
        before submission.</li>
        <li>Time-to-payout compresses because reproducibility is
        enforced upfront.</li>
      </ul>

      <t>Defensive-side application:</t>
      <ul>
        <li>A report failing the report gate MAY be closed as
        informational with a citation to the specific gate condition
        failed.</li>
        <li>A report where classification is disputed MAY be resolved
        by walking the decision tree publicly in the comments.</li>
        <li>Severity upgrades are appropriate when the reporter
        provides additional evidence that satisfies a higher
        decision-tree level.</li>
      </ul>
    </section>

    <section anchor="post-submission">
      <name>Post-Submission Behaviour</name>
      <t>An agent submitting reports SHOULD follow these
      post-submission rules:</t>
      <ul>
        <li>Respond to triager requests with evidence, not
        emotion.</li>
        <li>If a report is downgraded, provide new evidence
        supporting the higher classification, or accept the verdict.
        Do not argue without new evidence.</li>
        <li>If additional impact is discovered after submission, add
        it in a comment on the same report. This constitutes
        legitimate escalation and MAY result in a severity upgrade;
        it is NOT report-splitting.</li>
        <li>Respect triage queues. Do not badger.</li>
        <li>When asked to retest a fix, test honestly and comment on
        whether the fix holds.</li>
      </ul>
    </section>

    <section anchor="scope-judgment">
      <name>Scope Judgment</name>
      <t>Programs publish scope policies. Agents MUST read the
      program policy for scope before conducting research.</t>

      <t>An exception exists for cases where an out-of-scope asset
      demonstrates a systemic in-scope issue. Example: an OAuth
      misconfiguration on an out-of-scope subdomain that shares its
      identity provider configuration with in-scope applications. In
      such cases the report SHOULD:</t>
      <ul>
        <li>Frame the report around the systemic in-scope issue.</li>
        <li>Explicitly identify which asset was tested against and
        why the in-scope asset is affected.</li>
        <li>Refrain from exploiting the out-of-scope asset for data
        access or destructive testing.</li>
      </ul>
      <t>If the program declines such a report on scope grounds, the
      reporter MUST accept the verdict.</t>
    </section>

    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>FAST governs the behaviour of autonomous offensive security
      agents. Poor implementation or misapplication of FAST may
      result in:</t>
      <ul>
        <li>Under-reporting of legitimate vulnerabilities if an agent
        classifies a finding as a lead when it is in fact a
        vulnerability.</li>
        <li>Over-reporting if an agent bypasses the report gate.</li>
        <li>Ethical violations if an agent exceeds the "minimum data
        needed to prove impact" rule and accumulates customer
        data.</li>
        <li>Legal exposure if an agent tests targets not authorised
        by the program's scope policy.</li>
      </ul>

      <t>Implementations SHOULD enforce operational boundaries:</t>
      <ul>
        <li>No destructive testing.</li>
        <li>No persistent denial of service.</li>
        <li>Access only the minimum data required to prove impact.</li>
        <li>No retention of customer data as "evidence".</li>
        <li>No testing of assets outside program scope except as
        permitted by <xref target="scope-judgment"/>.</li>
      </ul>

      <t>FAST does not authorise any testing. All authorisation
      derives from the program's own scope and rules of engagement.
      An agent applying FAST outside authorised scope may commit
      computer misuse or equivalent offences under applicable law.</t>
    </section>

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

    <section anchor="call-for-comments">
      <name>Call for Comments</name>
      <t>This document is submitted as an Independent Submission and
      is explicitly a proposal, not a finished standard. It is
      expected to evolve with community feedback.</t>

      <t>The authors invite comment from:</t>
      <ul>
        <li>Individual researchers whose report history may confirm
        or contradict the classification rules herein.</li>
        <li>Bug bounty triagers whose queue experience may reveal
        gaps or disagreements with the decision tree.</li>
        <li>Bug bounty platforms considering FAST as a classification
        baseline for AI-generated submissions.</li>
        <li>In-house security teams (AppSec, PSIRT, VDP operators)
        whose classification norms may inform amendments.</li>
        <li>Red teamers whose internal reporting practices may
        benefit from a shared standard.</li>
        <li>Anyone building or operating autonomous offensive
        security agents that require severity and reporting
        standards.</li>
      </ul>

      <t>Comment is welcomed via the FAST repository issue tracker
      (once published) and via the IETF Internet-Draft process.</t>

      <t>Substantive feedback SHOULD be grounded in evidence: the
      specific rule disagreed with, the outcome observed in the
      commenter's data, and the proposed amendment. Contributors do
      NOT need to disclose confidential vulnerability reports.
      Aggregated feature frequencies and outcome-boundary statistics
      are sufficient.</t>

      <t>The extraction pipeline described in
      <xref target="methodology"/> is deterministic and reproducible
      on any comparable corpus.</t>
    </section>

    <section anchor="change-log">
      <name>Change Log</name>
      <ul>
        <li>draft-fast-severity-00: Initial submission.</li>
      </ul>
    </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 fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date year="1997" month="March"/>
          </front>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="BCP" value="14"/>
        </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 fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date year="2017" month="May"/>
          </front>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="BCP" value="14"/>
        </reference>
      </references>

      <references>
        <name>Informative References</name>

        <reference anchor="OWASP-AGENTIC-TOP10" target="https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/">
          <front>
            <title>OWASP Top 10 for Agentic Applications 2026</title>
            <author>
              <organization>OWASP GenAI Security Project</organization>
            </author>
            <date year="2025" month="December"/>
          </front>
        </reference>

        <reference anchor="AVE" target="https://github.com/bawbel/ave">
          <front>
            <title>AVE: Agentic Vulnerability Enumeration</title>
            <author>
              <organization>bawbel</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>

        <reference anchor="AIVSS" target="https://aivss.owasp.org/">
          <front>
            <title>AIVSS Scoring System for OWASP Agentic AI Core Security Risks v0.8</title>
            <author>
              <organization>OWASP AIVSS Project</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>

        <reference anchor="CVSS" target="https://www.first.org/cvss/">
          <front>
            <title>Common Vulnerability Scoring System version 3.1</title>
            <author>
              <organization>FIRST</organization>
            </author>
            <date year="2019"/>
          </front>
        </reference>

        <reference anchor="IETF-AGENT-SEC" target="https://datatracker.ietf.org/doc/html/draft-ni-a2a-ai-agent-security-requirements-01">
          <front>
            <title>Security Requirements for AI Agents</title>
            <author>
              <organization>IETF Network Working Group</organization>
            </author>
            <date year="2026" month="February"/>
          </front>
        </reference>
      </references>
    </references>

    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>FAST is built from the vulnerability research of Cale
      Anderson. Thanks to the triagers and program teams whose
      verdicts, over years of engagement, comprise the empirical
      corpus this standard is derived from.</t>
    </section>
  </back>

</rfc>
