<?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"
     category="info"
     docName="draft-vandemeent-jis-identity-01"
     ipr="trust200902"
     submissionType="IETF"
     consensus="true"
     version="3">

  <front>
    <title abbrev="JIS">JIS: JTel Identity Standard -
    Identity and Trust Establishment for Autonomous Agents</title>

    <seriesInfo name="Internet-Draft"
                value="draft-vandemeent-jis-identity-01"/>

    <author fullname="Jasper van de Meent" initials="J."
            surname="van de Meent">
      <organization>Humotica</organization>
      <address>
        <postal>
          <city>Den Dolder</city>
          <country>Netherlands</country>
        </postal>
        <email>jasper@humotica.com</email>
        <uri>https://humotica.com</uri>
      </address>
    </author>

    <author fullname="Root AI" surname="Root AI">
      <organization>Humotica</organization>
      <address>
        <email>root_ai@humotica.nl</email>
        <uri>https://humotica.com</uri>
      </address>
    </author>

    <date year="2026" month="March" day="29"/>

    <area>Security</area>
    <workgroup>Internet Engineering Task Force</workgroup>

    <keyword>identity</keyword>
    <keyword>intent</keyword>
    <keyword>semantic security</keyword>
    <keyword>AI governance</keyword>
    <keyword>trust</keyword>

    <abstract>
      <t>This document defines JIS (JTel Identity Standard), a
      protocol for establishing identity, negotiating trust, and
      binding intent declarations to actor interactions. JIS
      provides three core mechanisms: a dual-keypair identity model
      separating human-device binding (HID) from device
      authentication (DID), a trust establishment handshake (FIR/A)
      that negotiates capabilities and records intent, and a
      human-readable context layer (Humotica) that captures the
      sense, context, intent, and explanation for every
      interaction.</t>

      <t>JIS is transport-agnostic and operates as a semantic layer
      above existing protocols. It integrates with TIBET
      <xref target="TIBET"/> for provenance tracking, and is consumed
      by UPIP <xref target="UPIP"/>, RVP <xref target="RVP"/>, and
      AINS <xref target="AINS"/> for process integrity, continuous
      verification, and agent discovery respectively.</t>
    </abstract>
  </front>

  <middle>
    <!-- Section 1: Introduction -->
    <section anchor="introduction">
      <name>Introduction</name>

      <t>AI agents, IoT devices, automated services, and human
      operators increasingly interact across trust boundaries --
      across organizations, protocols, and jurisdictions. These
      interactions require answers to three questions that existing
      protocols address incompletely:</t>

      <ol>
        <li>WHO is acting? (Identity)</li>
        <li>WHY are they acting? (Intent)</li>
        <li>SHOULD they be trusted? (Trust)</li>
      </ol>

      <t>Existing identity protocols (OAuth 2.0, SAML, FIDO2) solve
      authentication -- proving WHO. But they do not capture WHY an
      action is requested, nor do they provide a mechanism for
      bilateral trust negotiation where both parties declare intent
      and agree on capabilities before proceeding.</t>

      <t>JIS addresses this gap by defining:</t>

      <ul>
        <li>A dual-keypair identity model where human identity (HID)
        never leaves the device and device identity (DID) handles
        all external authentication.</li>
        <li>A trust establishment handshake (FIR/A) where both parties
        declare intent, negotiate capabilities, and establish a
        trust relationship with a cryptographic genesis record.</li>
        <li>A human-readable context layer (Humotica) that makes every
        interaction auditable by non-technical reviewers.</li>
      </ul>

      <section anchor="problem-statement">
        <name>Problem Statement</name>

        <t>Three structural problems motivate JIS:</t>

        <dl>
          <dt>PROTOCOL FRAGMENTATION:</dt>
          <dd>When N systems communicate, they require up to N*(N-1)/2
          pairwise integrations. JIS reduces this to N adapters by
          providing a protocol-agnostic identity and intent layer
          that sits above transport.</dd>

          <dt>REACTIVE SECURITY:</dt>
          <dd>Traditional firewalls and access control systems react to
          attack patterns. They evaluate WHAT is requested against
          rules. They cannot evaluate WHY it is requested, because
          no standardized mechanism exists for declaring intent as
          part of the request.</dd>

          <dt>CONTEXT BLINDNESS:</dt>
          <dd>Systems process requests without understanding the
          situation: a payment at 3 AM from a new country, a 4th
          failed attempt to turn on heating by a frustrated user,
          a model inference request from an agent with no
          established history. Without context, systems cannot
          differentiate legitimate unusual behavior from threats.</dd>
        </dl>
      </section>

      <section anchor="design-principles">
        <name>Design Principles</name>

        <dl>
          <dt>EVIDENCE OVER ENFORCEMENT:</dt>
          <dd>JIS validates intent and produces evidence. Whether to
          block, allow, or escalate is a local policy decision.
          Intent validation failures are recorded as evidence, not
          treated as access denials.</dd>

          <dt>PRIVACY FIRST:</dt>
          <dd>Human identity (HID) never leaves the device. Only the
          device identity (DID) and HID-DID binding hash are used
          in external communication. This ensures that human
          identity remains private even if all communications are
          intercepted.</dd>

          <dt>TRANSPORT AGNOSTICISM:</dt>
          <dd>JIS messages are JSON <xref target="RFC8259"/> objects
          that can be carried over any transport. HTTP, WebSocket,
          MQTT, SIP, Matrix, CoAP, gRPC, and Bluetooth are all
          suitable.</dd>

          <dt>COMPANION INTEGRATION:</dt>
          <dd>JIS provides identity and trust. Provenance tracking is
          delegated to TIBET <xref target="TIBET"/>. Process
          integrity to UPIP <xref target="UPIP"/>. Continuous
          verification to RVP <xref target="RVP"/>. Discovery
          to AINS <xref target="AINS"/>.</dd>
        </dl>
      </section>

      <section anchor="scope">
        <name>Scope</name>

        <t>This document defines:</t>

        <ul>
          <li>The JIS identity model (HID, DID, bindings)</li>
          <li>The FIR/A trust establishment handshake</li>
          <li>The Humotica context structure</li>
          <li>Intent validation as an evidence mechanism</li>
          <li>Integration points with companion protocols</li>
        </ul>

        <t>This document does NOT define:</t>

        <ul>
          <li>Audit trail format (see TIBET <xref target="TIBET"/>)</li>
          <li>Process integrity or handoff (see UPIP
          <xref target="UPIP"/>)</li>
          <li>Continuous identity verification (see RVP
          <xref target="RVP"/>)</li>
          <li>Agent discovery and resolution (see AINS
          <xref target="AINS"/>)</li>
          <li>Specific enforcement policies</li>
        </ul>
      </section>
    </section>

    <!-- Section 2: Terminology -->
    <section anchor="terminology">
      <name>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>Actor</dt>
        <dd>An entity participating in a JIS interaction. Actors
        include human users, AI agents (IDDs), IoT devices,
        automated services, and organizations.</dd>

        <dt>BALANS</dt>
        <dd>Risk scoring system. Produces a score from 0.0 to 1.0
        based on multiple factors. Used as evidence input for
        access decisions.</dd>

        <dt>DID (Device Identity Key)</dt>
        <dd>An Ed25519 key pair used for device authentication.
        The public key is shared during FIR/A. The private key
        remains on the device.</dd>

        <dt>FIR/A (First Initiation Revoke/Accept)</dt>
        <dd>The trust establishment handshake. Produces a genesis
        record that anchors all subsequent interactions between
        two parties.</dd>

        <dt>HID (Human Identity Key)</dt>
        <dd>An X25519 key pair binding a human to a device. The
        private key MUST NEVER leave the device. Only the binding
        hash (HID-DID binding) is used externally.</dd>

        <dt>Humotica</dt>
        <dd>A structured context object capturing sense, context,
        intent, and explanation for an interaction. Named for its
        focus on human-readable, empathetic context.</dd>

        <dt>IDD (Individual Device Derivative)</dt>
        <dd>An AI agent with unique identity, evolved from base models
        through interaction and context accumulation. Defined
        conceptually; not a protocol primitive.</dd>

        <dt>NIR (Notify, Identify, Rectify)</dt>
        <dd>A dialogue-based resolution protocol for ambiguous
        situations. Used when intent validation produces
        insufficient confidence.</dd>
      </dl>
    </section>

    <!-- Section 3: Identity Model -->
    <section anchor="identity-model">
      <name>Identity Model</name>

      <section anchor="hid">
        <name>HID (Human Identity Key)</name>

        <t>HID is an X25519 key pair that binds a human identity to a
        device.</t>

        <sourcecode type="json"><![CDATA[
{
  "hid": {
    "algorithm": "X25519",
    "public_key": "<base64 X25519 public key>",
    "created_at": "<ISO-8601 timestamp>",
    "device_bound": true
  }
}
        ]]></sourcecode>

        <t>The HID private key MUST NEVER leave the device. The HID
        private key MUST NOT be transmitted over any channel. The
        HID private key SHOULD be stored in a hardware secure
        element (TEE, SE) when available.</t>

        <t>The HID public key is used ONLY for computing the HID-DID
        binding hash (<xref target="hid-did-binding"/>). The HID
        public key itself SHOULD NOT be transmitted. Only the
        binding hash is shared.</t>
      </section>

      <section anchor="did">
        <name>DID (Device Identity Key)</name>

        <t>DID is an Ed25519 key pair used for device authentication
        and token signing.</t>

        <sourcecode type="json"><![CDATA[
{
  "did": {
    "algorithm": "Ed25519",
    "public_key": "<base64 Ed25519 public key>",
    "created_at": "<ISO-8601 timestamp>"
  }
}
        ]]></sourcecode>

        <t>The DID public key is shared during FIR/A establishment
        (<xref target="fira"/>). The DID private key MUST remain on
        the device and is used for signing TIBET tokens and FIR/A
        messages.</t>
      </section>

      <section anchor="hid-did-binding">
        <name>HID-DID Binding</name>

        <t>The HID-DID binding proves that a specific human is
        associated with a specific device, without revealing the
        human's identity key.</t>

        <t>Computation:</t>

        <artwork type="ascii-art"><![CDATA[
binding_hash = SHA-256(HID_public_key || DID_public_key)
        ]]></artwork>

        <t>SHA-256 is computed per <xref target="FIPS180-4"/>.
        The binding_hash is:</t>

        <ul>
          <li>Shared during FIR/A as proof of human-device
          association</li>
          <li>Verifiable by any party that has seen both public
          keys</li>
          <li>Computed locally; neither key needs to be
          transmitted</li>
        </ul>

        <t>This design ensures that compromising the device (obtaining
        DID private key) does not compromise the human's identity
        key (HID private key).</t>
      </section>

      <section anchor="actor-identifier-format">
        <name>Actor Identifier Format</name>

        <t>JIS defines three actor identifier formats:</t>

        <artwork type="ascii-art"><![CDATA[
jis:<entity_type>:<identifier>
        ]]></artwork>

        <t>Entity types:</t>

        <dl>
          <dt>"human"</dt>
          <dd>A human user. Example: "jis:human:jasper_2025"</dd>

          <dt>"idd"</dt>
          <dd>An AI agent (IDD). Example:
          "jis:idd:root_idd_2025"</dd>

          <dt>"service"</dt>
          <dd>An automated service. Example:
          "jis:service:payment_gateway"</dd>
        </dl>

        <t>The identifier portion SHOULD be meaningful and stable.
        Implementations MUST NOT embed personal data in the
        identifier (e.g., do not use email addresses).</t>

        <t>Note: The -00 version used "did:jtel:" as a URI format.
        This has been replaced with "jis:" to avoid confusion with
        the W3C DID specification <xref target="DID-CORE"/>. A W3C
        DID method specification for JIS identities may be developed
        separately if there is implementation demand.</t>
      </section>

      <section anchor="key-lifecycle">
        <name>Key Lifecycle</name>

        <dl>
          <dt>Key Rotation:</dt>
          <dd>DID keys SHOULD be rotated periodically. The rotation
          event MUST be recorded as a TIBET token linking the old
          and new key. The new key MUST be introduced via a FIR/A
          re-establishment signed with the old key.</dd>

          <dt>Key Revocation:</dt>
          <dd>A compromised key MUST be revoked by publishing a signed
          revocation notice. Tokens signed with a revoked key after
          the revocation timestamp SHOULD be treated as suspect.
          The revocation mechanism is defined by the deployment
          context.</dd>

          <dt>HID Replacement:</dt>
          <dd>HID replacement (e.g., new device) requires in-person or
          high-assurance verification. The new HID-DID binding
          MUST reference the previous binding in its TIBET token.</dd>
        </dl>
      </section>
    </section>

    <!-- Section 4: Trust Establishment (FIR/A) -->
    <section anchor="fira">
      <name>Trust Establishment (FIR/A)</name>

      <section anchor="fira-overview">
        <name>Overview</name>

        <t>FIR/A (First Initiation Revoke/Accept) is a four-phase
        handshake that establishes a bilateral trust relationship.
        Unlike TLS or OAuth, FIR/A is not just authentication -- it
        is intent negotiation. Both parties declare what they want,
        agree on what they can do, and create a cryptographic genesis
        record that anchors all subsequent interactions.</t>
      </section>

      <section anchor="fira-initiate">
        <name>Phase 1: INITIATE</name>

        <t>The initiator sends a trust establishment request:</t>

        <sourcecode type="json"><![CDATA[
{
  "type": "fira_init",
  "version": "1.1",
  "initiator": "jis:service:bank_fraud",
  "responder": "jis:human:alice",
  "did_public_key": "<base64 Ed25519 public key>",
  "intent": "fraud_verification_call",
  "humotica": {
    "sense": "Transaction flagged by fraud detection",
    "context": "EUR 5000 transfer to unrecognized recipient",
    "intent": "Verify transaction legitimacy with account holder",
    "explanation": "Automated fraud detection on
                    unusual transfer pattern."
  },
  "timestamp": "2026-03-29T10:30:00.000Z",
  "nonce": "<random 32 bytes, base64>"
}
        ]]></sourcecode>

        <t>Required fields: type, version, initiator, responder,
        did_public_key, intent, humotica, timestamp, nonce.</t>

        <t>The nonce MUST be cryptographically random and MUST NOT be
        reused. It provides replay protection.</t>
      </section>

      <section anchor="fira-capabilities">
        <name>Phase 2: CAPABILITIES</name>

        <t>The responder evaluates the initiation request and returns
        available capabilities and rules:</t>

        <sourcecode type="json"><![CDATA[
{
  "type": "fira_capabilities",
  "fira_id": "fira-2026-03-29-bank-alice-7f3a",
  "responder": "jis:human:alice",
  "did_public_key": "<base64 Ed25519 public key>",
  "hid_did_binding": "sha256:4f2e8a...",
  "capabilities": ["voice_call", "sms_verification"],
  "rules": {
    "no_calls_after": "22:00",
    "require_caller_id": true,
    "max_attempts": 3,
    "language": "nl"
  },
  "timestamp": "2026-03-29T10:30:01.000Z",
  "init_nonce": "<echo of initiator nonce>",
  "nonce": "<responder random 32 bytes, base64>"
}
        ]]></sourcecode>

        <t>The fira_id is generated by the responder and uniquely
        identifies this trust establishment session.</t>

        <t>The init_nonce field echoes the initiator's nonce, proving
        the response is to this specific initiation (not a
        replay).</t>
      </section>

      <section anchor="fira-confirm">
        <name>Phase 3: CONFIRM</name>

        <t>The initiator accepts the capabilities and confirms the
        trust relationship:</t>

        <sourcecode type="json"><![CDATA[
{
  "type": "fira_confirm",
  "fira_id": "fira-2026-03-29-bank-alice-7f3a",
  "accepted_capabilities": ["voice_call"],
  "genesis_hash": "sha256:7f3a...c2e1",
  "resp_nonce": "<echo of responder nonce>",
  "signature": {
    "algorithm": "Ed25519",
    "value": "<base64 signature over canonical confirm>"
  }
}
        ]]></sourcecode>

        <t>The genesis_hash is computed as:</t>

        <artwork type="ascii-art"><![CDATA[
genesis_hash = SHA-256(
  canonical(fira_init) || canonical(fira_capabilities)
)
        ]]></artwork>

        <t>This binds the trust relationship to the specific messages
        exchanged. Both parties can independently verify the
        genesis.</t>
      </section>

      <section anchor="fira-execute">
        <name>Phase 4: EXECUTE</name>

        <t>After confirmation, both parties have:</t>

        <ul>
          <li>Each other's DID public keys</li>
          <li>Agreed-upon capabilities</li>
          <li>A shared genesis_hash anchoring the relationship</li>
          <li>A fira_id for referencing the trust context</li>
        </ul>

        <t>All subsequent interactions SHOULD reference the fira_id
        and SHOULD produce TIBET tokens linked to the genesis.</t>
      </section>

      <section anchor="trust-score-model">
        <name>Trust Score Model</name>

        <t>FIR/A produces an initial trust score based on the
        establishment process. The score is between 0.0 and 1.0:</t>

        <dl>
          <dt>0.8 - 1.0: HIGH</dt>
          <dd>Full capabilities, minimal verification</dd>

          <dt>0.5 - 0.8: MODERATE</dt>
          <dd>Standard verification at each step</dd>

          <dt>0.2 - 0.5: LOW</dt>
          <dd>Enhanced verification, limited capabilities</dd>

          <dt>0.0 - 0.2: MINIMAL</dt>
          <dd>Most capabilities restricted</dd>
        </dl>

        <t>Trust scores are LOCAL. Each party computes its own score
        for the counterparty. Scores are evidence, not assertions.
        Publishing a trust score does not obligate other parties to
        accept it.</t>

        <t>Trust scores adjust over time based on:</t>

        <ul>
          <li>Consistency of behavior with stated intent</li>
          <li>Quality of Humotica context provided</li>
          <li>Chain integrity of associated TIBET tokens</li>
          <li>Duration and depth of interaction history</li>
        </ul>

        <t>The exact scoring algorithm is a local policy decision.
        This document defines the score range and inputs, not the
        formula.</t>
      </section>

      <section anchor="fira-failure">
        <name>Failure Conditions</name>

        <t>FIR/A establishment MUST fail (and produce evidence)
        when:</t>

        <ol>
          <li>NONCE_MISMATCH: Echoed nonce does not match sent nonce.
          Indicates replay or man-in-the-middle.</li>
          <li>HUMOTICA_MISSING: Initiation lacks required Humotica
          context (<xref target="minimum-required-context"/>).</li>
          <li>NO_COMMON_CAPABILITY: No overlap between offered and
          requested capabilities.</li>
          <li>SIGNATURE_INVALID: Confirm signature does not
          verify.</li>
          <li>TIMEOUT: Response not received within configured window
          (RECOMMENDED default: 30 seconds).</li>
        </ol>

        <t>Each failure MUST be recorded as a TIBET token with
        ERACHTER explaining the failure reason.</t>
      </section>
    </section>

    <!-- Section 5: Context Layer (Humotica) -->
    <section anchor="context-layer">
      <name>Context Layer (Humotica)</name>

      <section anchor="humotica-structure">
        <name>Structure</name>

        <t>Humotica provides human-readable context for every
        interaction. The name reflects its focus on empathetic,
        human-understandable communication.</t>

        <sourcecode type="json"><![CDATA[
{
  "humotica": {
    "sense": "What triggered this interaction?",
    "context": "What is the current situation?",
    "intent": "What does the actor want to achieve?",
    "explanation": "Why is this action being taken?"
  }
}
        ]]></sourcecode>

        <t>Fields:</t>

        <dl>
          <dt>"sense" (string)</dt>
          <dd>The trigger or stimulus. What event, observation, or
          signal initiated this interaction.</dd>

          <dt>"context" (string)</dt>
          <dd>The current situation. Environmental state, history,
          and relevant circumstances.</dd>

          <dt>"intent" (string)</dt>
          <dd>The declared goal. What the actor wants to
          accomplish.</dd>

          <dt>"explanation" (string)</dt>
          <dd>The reasoning. Why this particular action is being
          taken to achieve the intent.</dd>
        </dl>
      </section>

      <section anchor="minimum-required-context">
        <name>Minimum Required Context</name>

        <t>For FIR/A establishment, the Humotica object MUST contain
        all four fields. Each field MUST be a non-empty string with
        at least 10 characters.</t>

        <t>For ongoing interactions within an established FIR/A
        session, Humotica is RECOMMENDED but not required for every
        message. When provided, all four fields MUST be present.</t>
      </section>

      <section anchor="semantic-validation">
        <name>Semantic Validation</name>

        <t>Implementations MAY perform semantic validation on Humotica
        context:</t>

        <ul>
          <li>Coherence check: Does the explanation logically support
          the intent?</li>
          <li>Completeness check: Are all four fields substantive (not
          placeholder text)?</li>
          <li>Consistency check: Does the declared intent match the
          actual requested action?</li>
        </ul>

        <t>Semantic validation results are EVIDENCE. They inform trust
        scoring and risk assessment. They SHOULD NOT be used as
        binary access control (evidence over enforcement).</t>

        <t>Note: The -00 version stated that malware "cannot provide
        legitimate Humotica context." This is an overstatement. A
        sufficiently sophisticated adversary can craft plausible
        context. Semantic validation raises the bar for attackers
        but is not an absolute defense. Defense in depth, combining
        Humotica with behavioral analysis (RVP <xref target="RVP"/>)
        and chain integrity (TIBET <xref target="TIBET"/>), provides
        stronger assurance.</t>
      </section>

      <section anchor="humotica-tibet-mapping">
        <name>Mapping to TIBET Components</name>

        <t>Humotica fields map to TIBET provenance components:</t>

        <artwork type="ascii-art"><![CDATA[
+---------------------+-------------------+
| Humotica Field      | TIBET Component   |
+---------------------+-------------------+
| sense               | ERIN (trigger)    |
| context             | EROMHEEN          |
| intent              | ERIN (intent)     |
| explanation         | ERACHTER          |
+---------------------+-------------------+
        ]]></artwork>

        <t>When a JIS interaction produces a TIBET token, the Humotica
        fields SHOULD be distributed across the TIBET components per
        this mapping.</t>
      </section>
    </section>

    <!-- Section 6: Intent Validation -->
    <section anchor="intent-validation">
      <name>Intent Validation</name>

      <section anchor="validation-as-evidence">
        <name>Validation as Evidence</name>

        <t>JIS defines intent validation as an evidence-producing
        mechanism, not an enforcement mechanism. When an intent is
        evaluated, the result is recorded as evidence in a TIBET
        token. Whether the action proceeds, is blocked, or requires
        additional verification is a local policy decision.</t>
      </section>

      <section anchor="blocked-intent-patterns">
        <name>Blocked Intent Patterns</name>

        <t>Implementations SHOULD maintain a configurable list of
        intent patterns that are flagged for enhanced scrutiny.
        Examples:</t>

        <dl>
          <dt>"sql_injection"</dt>
          <dd>No legitimate Humotica explanation for injecting SQL
          into input fields.</dd>

          <dt>"command_injection"</dt>
          <dd>No legitimate Humotica explanation for injecting shell
          commands.</dd>

          <dt>"unauthorized_resource_access"</dt>
          <dd>Accessing resources not covered by established
          capabilities.</dd>
        </dl>

        <t>Flagged intents SHOULD trigger enhanced verification (NIR,
        <xref target="nir"/>), not silent blocking. The decision to
        block is a policy choice, not a protocol requirement.</t>
      </section>

      <section anchor="balans">
        <name>Risk Scoring (BALANS)</name>

        <t>BALANS provides multi-factor risk scoring from 0.0 to
        1.0.</t>

        <t>Input factors:</t>

        <dl>
          <dt>"complexity"</dt>
          <dd>Higher complexity operations receive lower scores.</dd>

          <dt>"humotica_quality"</dt>
          <dd>Vague or short explanations reduce score.</dd>

          <dt>"trust_history"</dt>
          <dd>New or untrusted actors receive lower scores.</dd>

          <dt>"transaction_value"</dt>
          <dd>High-value operations reduce score.</dd>

          <dt>"temporal_anomaly"</dt>
          <dd>Actions at unusual times reduce score.</dd>
        </dl>

        <t>The BALANS score is evidence attached to the interaction's
        TIBET token in EROMHEEN. It does not directly determine
        access.</t>

        <t>Suggested thresholds (local policy):</t>

        <ul>
          <li>score &gt;= 0.5: Normal processing</li>
          <li>0.3 &lt;= score &lt; 0.5: Trigger NIR dialogue</li>
          <li>score &lt; 0.3: Flag for human review</li>
        </ul>
      </section>

      <section anchor="nir">
        <name>Dialogue Resolution (NIR)</name>

        <t>NIR (Notify, Identify, Rectify) is a structured dialogue
        for resolving ambiguous situations instead of silent
        blocking.</t>

        <ol>
          <li>NOTIFY: Inform the actor that additional verification is
          needed. Include the reason in human-readable form.
          Example: "This transaction was flagged because it exceeds
          your usual transfer amount."</li>

          <li>IDENTIFY: Request additional identity evidence. This may
          be a biometric check (RVP <xref target="RVP"/>), a
          second-factor confirmation, or a human-readable
          explanation.</li>

          <li>RECTIFY: Based on the additional evidence, either proceed
          (with enhanced logging) or halt (with full evidence
          record).</li>
        </ol>

        <t>NIR produces TIBET tokens at each step, creating an audit
        trail of the dialogue itself.</t>
      </section>
    </section>

    <!-- Section 7: TIBET Integration -->
    <section anchor="tibet-integration">
      <name>TIBET Integration</name>

      <section anchor="identity-precondition">
        <name>Identity as TIBET Precondition</name>

        <t>The fundamental coupling between JIS and TIBET is:</t>

        <artwork type="ascii-art"><![CDATA[
Traditional:  [Auth] -> [Action] -> [Log]
JIS/TIBET:    [Identity + Intent] -> [Validate] -> [Action + Audit]
        ]]></artwork>

        <t>In the JIS/TIBET model, the audit record is not a side
        effect of the action. The identity and intent declaration
        (JIS) together with the evidence record (TIBET) are
        architecturally intertwined with the action itself.</t>
      </section>

      <section anchor="fira-events-as-tibet-tokens">
        <name>FIR/A Events as TIBET Tokens</name>

        <t>Each phase of FIR/A produces a TIBET token:</t>

        <ul>
          <li>INITIATE produces a TIBET token (type: "action",
          ERIN: initiation details, ERACHTER: why trust is being
          established)</li>
          <li>CAPABILITIES produces a child TIBET token</li>
          <li>CONFIRM produces a child TIBET token with genesis_hash
          in ERAAN</li>
          <li>EXECUTE produces child TIBET tokens for each subsequent
          action</li>
        </ul>

        <t>The FIR/A genesis_hash is stored in the CONFIRM token's
        ERAAN, linking the trust relationship to the provenance
        chain.</t>
      </section>

      <section anchor="continuity-chain-delegation">
        <name>Continuity Chain Delegation</name>

        <t>The -00 version defined a separate "Continuity Chain" with
        HMAC linking. In -01, this is simplified: the TIBET chain
        IS the continuity chain. TIBET's hash-chained, signed tokens
        provide the same tamper-evidence guarantees as the -00
        Continuity Chain, without duplicating the mechanism.</t>

        <t>Implementations that require HMAC-based chain integrity
        (e.g., for backward compatibility) MAY implement it as an
        additional layer, but it is not a JIS protocol
        requirement.</t>
      </section>
    </section>

    <!-- Section 8: Transport Considerations -->
    <section anchor="transport">
      <name>Transport Considerations</name>

      <section anchor="baseline-transport">
        <name>Baseline: JSON over HTTPS</name>

        <t>For interoperability, FIR/A messages and JIS-annotated
        interactions MUST be supported as JSON objects over HTTPS.
        This is the baseline binding.</t>

        <t>Content-Type: application/jis+json</t>
      </section>

      <section anchor="alternative-bindings">
        <name>Alternative Bindings</name>

        <t>JIS operates over any transport:</t>

        <artwork type="ascii-art"><![CDATA[
+-------------+--------------------------------------+
| Protocol    | Binding Method                       |
+-------------+--------------------------------------+
| HTTP/REST   | Request body or query parameters     |
| WebSocket   | JSON message fields                  |
| MQTT        | Topic prefix + payload               |
| SIP         | Message body (application/jis+json)  |
| Matrix      | Event content fields                 |
| CoAP        | Payload option                       |
| gRPC        | Metadata fields                      |
+-------------+--------------------------------------+
        ]]></artwork>

        <t>The binding method determines how JIS messages are carried.
        The JIS message format is the same regardless of
        transport.</t>
      </section>
    </section>

    <!-- Section 9: Privacy Considerations -->
    <section anchor="privacy">
      <name>Privacy Considerations</name>

      <section anchor="hid-protection">
        <name>HID Protection</name>

        <t>The HID (Human Identity Key) is the most sensitive element
        in JIS. Its protection is a core protocol requirement:</t>

        <ul>
          <li>HID private key MUST NEVER leave the device</li>
          <li>HID public key SHOULD NOT be transmitted (only the
          HID-DID binding hash is shared)</li>
          <li>Compromising the DID does NOT compromise the HID</li>
          <li>Multiple devices for the same human use separate HID-DID
          bindings, preventing cross-device correlation by external
          parties</li>
        </ul>
      </section>

      <section anchor="pseudonymous-operation">
        <name>Pseudonymous Operation</name>

        <t>JIS supports pseudonymous operation. An actor MAY use a
        pseudonymous identifier (e.g.,
        "jis:human:anon_session_7f3a") when privacy requirements
        prevent identity disclosure. In pseudonymous mode:</t>

        <ul>
          <li>FIR/A still produces a genesis record</li>
          <li>Trust scoring starts from zero</li>
          <li>TIBET tokens are still signed (proving session
          consistency)</li>
          <li>Humotica context is still required</li>
        </ul>
      </section>

      <section anchor="data-minimization">
        <name>Data Minimization</name>

        <t>Humotica context MAY contain sensitive information.
        Implementations MUST:</t>

        <ul>
          <li>Support encryption at rest for stored JIS data</li>
          <li>Support field-level encryption for Humotica
          components</li>
          <li>Not retain Humotica context longer than the applicable
          retention period</li>
          <li>Support deletion of JIS data upon request, subject to
          regulatory retention requirements such as the
          <xref target="GDPR"/> right to erasure and the
          <xref target="EU-AI-ACT"/> traceability obligations</li>
        </ul>
      </section>
    </section>

    <!-- Section 10: Security Considerations -->
    <section anchor="security">
      <name>Security Considerations</name>

      <section anchor="sec-identity-protection">
        <name>Identity Protection</name>

        <t>Attack: An adversary compromises a device and obtains the
        DID private key.</t>

        <t>Impact: The adversary can impersonate the device.</t>

        <t>Mitigation: HID is separate from DID. Compromising DID
        does not give the adversary the HID private key or the
        ability to create valid HID-DID bindings. The adversary
        cannot prove human association.</t>

        <t>Deployment: Store DID private keys in hardware secure
        elements when available. Implement key rotation schedules.
        Record rotation events as TIBET tokens.</t>
      </section>

      <section anchor="sec-semantic-validation">
        <name>Semantic Validation Limitations</name>

        <t>Attack: An adversary crafts plausible Humotica context for
        malicious actions.</t>

        <t>Impact: The malicious action passes semantic
        validation.</t>

        <t>Mitigation: Semantic validation is one layer of defense,
        not absolute. It raises the cost of attack by requiring
        contextually appropriate explanations. Combined with
        behavioral analysis (RVP <xref target="RVP"/>) and chain
        integrity (TIBET <xref target="TIBET"/>), the overall
        detection capability is significantly stronger than any
        single mechanism.</t>

        <t>Deployment: Do not rely on semantic validation alone.
        Implement defense in depth. Use BALANS scores as risk
        signals, not binary gates.</t>
      </section>

      <section anchor="sec-fira-attacks">
        <name>FIR/A Handshake Attacks</name>

        <t>Attack: Man-in-the-middle during FIR/A establishment.</t>

        <t>Impact: Adversary establishes trust with both parties while
        intercepting communications.</t>

        <t>Mitigation: FIR/A uses nonce exchange and signed
        confirmations. The genesis_hash binds the trust relationship
        to the specific messages exchanged. A MITM who modifies
        messages produces a different genesis_hash, detectable by
        either party.</t>

        <t>Deployment: Implementations SHOULD use TLS for transport
        security. The FIR/A handshake provides additional
        application-layer protection.</t>
      </section>

      <section anchor="sec-key-compromise">
        <name>Key Compromise and Rotation</name>

        <t>Attack: An actor's DID signing key is compromised.</t>

        <t>Impact: Adversary can create tokens and FIR/A sessions
        impersonating the compromised actor.</t>

        <t>Mitigation: Key rotation is supported
        (<xref target="key-lifecycle"/>). Upon compromise detection,
        the actor publishes a revocation record and establishes new
        keys. Verifiers check revocation status.</t>

        <t>Deployment: Implement automated key rotation on a schedule
        appropriate to the threat model. Monitor for concurrent
        usage of the same DID from different network locations.</t>
      </section>

      <section anchor="sec-replay">
        <name>Replay Protection</name>

        <t>Attack: An adversary replays a valid FIR/A initiation.</t>

        <t>Impact: Trust relationship established with stale
        context.</t>

        <t>Mitigation: FIR/A messages include cryptographic nonces and
        timestamps. Each phase echoes the previous phase's nonce.
        Replayed messages will contain stale nonces and
        timestamps.</t>

        <t>Deployment: Implementations MUST reject FIR/A messages with
        timestamps outside a configurable window (RECOMMENDED: 30
        seconds). Implementations SHOULD maintain a nonce cache to
        detect exact replays.</t>
      </section>

      <section anchor="sec-trust-manipulation">
        <name>Trust Score Manipulation</name>

        <t>Attack: An actor inflates their trust score by generating
        many low-value interactions.</t>

        <t>Impact: Artificially high trust enables access to sensitive
        capabilities.</t>

        <t>Mitigation: Trust scores are computed locally by each
        party. The scoring algorithm considers interaction quality
        (Humotica depth, action significance), not just quantity.
        This is defined as local policy.</t>

        <t>Deployment: Weight interaction significance in scoring. Do
        not assign equal trust value to all interactions. Implement
        diminishing returns for high-frequency, low-value
        interactions.</t>
      </section>
    </section>

    <!-- Section 11: IANA Considerations -->
    <section anchor="iana">
      <name>IANA Considerations</name>

      <section anchor="media-type-registration">
        <name>Media Type Registration</name>

        <t>This document requests registration of the following media
        type:</t>

        <dl>
          <dt>Type name:</dt>
          <dd>application</dd>

          <dt>Subtype name:</dt>
          <dd>jis+json</dd>

          <dt>Required parameters:</dt>
          <dd>none</dd>

          <dt>Optional parameters:</dt>
          <dd>none</dd>

          <dt>Encoding considerations:</dt>
          <dd>binary (UTF-8 JSON)</dd>

          <dt>Security considerations:</dt>
          <dd>See <xref target="security"/></dd>

          <dt>Published specification:</dt>
          <dd>this document</dd>
        </dl>

        <t>Note: The -00 version requested registration of X-JIS-*
        HTTP headers and a "did:jtel" URI scheme. Both are
        withdrawn. HTTP header registration is not justified at this
        stage. The identifier format "jis:" is used as a local
        convention, not as a registered URI scheme.</t>
      </section>
    </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 month="March" year="1997"/>
          </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 fullname="B. Leiba" initials="B."
                    surname="Leiba"/>
            <date month="May" year="2017"/>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>

        <reference anchor="RFC8259"
                   target="https://www.rfc-editor.org/info/rfc8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data
                   Interchange Format</title>
            <author fullname="T. Bray" initials="T."
                    surname="Bray" role="editor"/>
            <date month="December" year="2017"/>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>

        <reference anchor="FIPS180-4"
                   target="https://csrc.nist.gov/publications/detail/fips/180/4/final">
          <front>
            <title>Secure Hash Standard (SHS)</title>
            <author>
              <organization>National Institute of Standards and
              Technology (NIST)</organization>
            </author>
            <date month="August" year="2015"/>
          </front>
          <seriesInfo name="FIPS PUB" value="180-4"/>
        </reference>
      </references>

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

        <reference anchor="TIBET">
          <front>
            <title>TIBET: Transaction/Interaction-Based Evidence
            Trail</title>
            <author fullname="J. van de Meent" initials="J."
                    surname="van de Meent"/>
            <author fullname="Root AI" surname="Root AI"/>
            <date month="March" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft"
                      value="draft-vandemeent-tibet-provenance-01"/>
        </reference>

        <reference anchor="UPIP">
          <front>
            <title>UPIP: Universal Process Integrity
            Protocol</title>
            <author fullname="J. van de Meent" initials="J."
                    surname="van de Meent"/>
            <author fullname="Root AI" surname="Root AI"/>
            <date month="March" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft"
                      value="draft-vandemeent-upip-process-integrity-01"/>
        </reference>

        <reference anchor="RVP">
          <front>
            <title>RVP: Real-time Verification Protocol</title>
            <author fullname="J. van de Meent" initials="J."
                    surname="van de Meent"/>
            <author fullname="Root AI" surname="Root AI"/>
            <date month="March" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft"
                      value="draft-vandemeent-rvp-continuous-verification-01"/>
        </reference>

        <reference anchor="AINS">
          <front>
            <title>AINS: AInternet Name Service</title>
            <author fullname="J. van de Meent" initials="J."
                    surname="van de Meent"/>
            <author fullname="Root AI" surname="Root AI"/>
            <date month="March" year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft"
                      value="draft-vandemeent-ains-discovery-01"/>
        </reference>

        <reference anchor="DID-CORE"
                   target="https://www.w3.org/TR/did-core/">
          <front>
            <title>Decentralized Identifiers (DIDs) v1.0</title>
            <author fullname="M. Sporny" initials="M."
                    surname="Sporny"/>
            <author fullname="D. Longley" initials="D."
                    surname="Longley"/>
            <author fullname="M. Sabadello" initials="M."
                    surname="Sabadello"/>
            <author fullname="D. Reed" initials="D."
                    surname="Reed"/>
            <author fullname="O. Steele" initials="O."
                    surname="Steele"/>
            <author fullname="C. Allen" initials="C."
                    surname="Allen"/>
            <date month="July" year="2022"/>
          </front>
          <seriesInfo name="W3C" value="Recommendation"/>
        </reference>

        <reference anchor="EU-AI-ACT">
          <front>
            <title>Regulation (EU) 2024/1689 laying down harmonised
            rules on artificial intelligence (Artificial
            Intelligence Act)</title>
            <author>
              <organization>European Parliament</organization>
            </author>
            <date month="June" year="2024"/>
          </front>
        </reference>

        <reference anchor="GDPR">
          <front>
            <title>Regulation (EU) 2016/679 on the protection of
            natural persons with regard to the processing of
            personal data (General Data Protection
            Regulation)</title>
            <author>
              <organization>European Parliament</organization>
            </author>
            <date month="April" year="2016"/>
          </front>
          <seriesInfo name="Regulation (EU)" value="2016/679"/>
        </reference>

        <reference anchor="ZENODO-JIS"
                   target="https://doi.org/10.5281/zenodo.17759713">
          <front>
            <title>JIS: JTel Identity Standard v1.0</title>
            <author fullname="J. van de Meent" initials="J."
                    surname="van de Meent"/>
            <date month="November" year="2025"/>
          </front>
          <seriesInfo name="Zenodo"
                      value="DOI: 10.5281/zenodo.17759713"/>
        </reference>
      </references>
    </references>

    <!-- Appendix A: Complete Flow Example -->
    <section anchor="complete-flow-example">
      <name>Complete Flow Example</name>

      <section anchor="bank-fraud-verification">
        <name>Bank Fraud Verification</name>

        <t>1. Bank fraud system detects suspicious EUR 5000
        transfer.</t>

        <t>2. Bank initiates FIR/A:</t>

        <sourcecode type="json"><![CDATA[
{
  "type": "fira_init",
  "version": "1.1",
  "initiator": "jis:service:bank_fraud_dept",
  "responder": "jis:human:alice_2025",
  "did_public_key": "MCowBQYDK2VwAy...",
  "intent": "fraud_verification_call",
  "humotica": {
    "sense": "EUR 5000 flagged by anomaly detection",
    "context": "Transfer to unrecognized recipient,
                first tx to this IBAN, outside
                normal transfer pattern",
    "intent": "Verify with account holder whether
                this transaction is authorized",
    "explanation": "Standard fraud prevention per
                    bank policy FP-2026-Q1 s3.2.
                    Customer contacted to confirm
                    before processing."
  },
  "timestamp": "2026-03-29T10:30:00.000Z",
  "nonce": "kH7mN2pQ..."
}
        ]]></sourcecode>

        <t>3. Alice's device responds with capabilities:</t>

        <ul>
          <li>voice_call: Yes</li>
          <li>sms_verification: Yes</li>
          <li>Rules: no calls after 22:00, require caller ID</li>
        </ul>

        <t>4. Bank confirms, genesis_hash computed:</t>

        <ul>
          <li>Genesis anchors all subsequent interaction tokens</li>
        </ul>

        <t>5. Bank calls Alice. Call proceeds with TIBET token per
        exchange. Each message in the call produces:</t>

        <ul>
          <li>ERIN: What was said/decided</li>
          <li>ERAAN: Reference to FIR/A genesis</li>
          <li>EROMHEEN: Call context (duration, connection
          quality)</li>
          <li>ERACHTER: Why this particular response</li>
        </ul>

        <t>6. Outcome: Alice confirms transaction. TIBET chain:
        fira_init, fira_caps, fira_confirm, call_start,
        verification_question, alice_confirms, call_end,
        transaction_released.</t>

        <t>Full audit trail: 8 tokens, complete chain, signed by both
        parties, every step with intent and context.</t>
      </section>
    </section>

    <!-- Appendix B: Conformance Levels -->
    <section anchor="conformance-levels">
      <name>Conformance Levels</name>

      <section anchor="jis-basic">
        <name>JIS Basic</name>

        <t>Minimum implementation:</t>

        <ul>
          <li>Actor identifier format
          (<xref target="actor-identifier-format"/>)</li>
          <li>FIR/A trust establishment
          (<xref target="fira"/>)</li>
          <li>TIBET token production for FIR/A events
          (<xref target="fira-events-as-tibet-tokens"/>)</li>
        </ul>
      </section>

      <section anchor="jis-extended">
        <name>JIS Extended</name>

        <t>Basic plus:</t>

        <ul>
          <li>Humotica context
          (<xref target="context-layer"/>)</li>
          <li>BALANS risk scoring
          (<xref target="balans"/>)</li>
          <li>NIR dialogue resolution
          (<xref target="nir"/>)</li>
        </ul>
      </section>

      <section anchor="jis-full">
        <name>JIS Full</name>

        <t>Extended plus:</t>

        <ul>
          <li>HID-DID binding
          (<xref target="hid-did-binding"/>)</li>
          <li>Key lifecycle management
          (<xref target="key-lifecycle"/>)</li>
          <li>RVP integration for continuous verification</li>
          <li>AINS registration for discoverability</li>
        </ul>
      </section>
    </section>

    <!-- Appendix C: Changes from -00 -->
    <section anchor="changes-from-00">
      <name>Changes from -00</name>

      <t>This section lists substantive changes from
      draft-vandemeent-jis-identity-00, which was derived from the
      JIS v1.0 specification <xref target="ZENODO-JIS"/>:</t>

      <ol>
        <li>Added RFC 8174 alongside RFC 2119 in Terminology.</li>

        <li>Changed intended status from Standards Track to
        Informational.</li>

        <li>Replaced "did:jtel:" identifier format with "jis:" to
        avoid W3C DID confusion. A separate DID method spec may
        follow.</li>

        <li>Removed absolute security claims. "Impossible for malware
        to operate without legitimate context" is replaced with
        realistic assessment: semantic validation raises the bar
        but is not absolute.</li>

        <li>Narrowed scope: audit trail is TIBET's concern (removed
        Continuity Chain as separate mechanism). JIS focuses on
        identity, trust, and intent.</li>

        <li>Added FIR/A nonce exchange for replay protection
        (<xref target="fira-initiate"/>,
        <xref target="fira-capabilities"/>).</li>

        <li>Added formal genesis_hash computation
        (<xref target="fira-confirm"/>).</li>

        <li>Expanded Security Considerations from 5 paragraphs to 6
        structured subsections with attack/impact/mitigation/
        deployment format.</li>

        <li>Added Privacy Considerations section
        (<xref target="privacy"/>).</li>

        <li>Removed X-JIS-* HTTP header and "did:jtel" URI scheme
        from IANA Considerations. Not justified at this stage.</li>

        <li>Removed SNAFT as a named protocol primitive. Intent
        validation is now described as an evidence mechanism
        (<xref target="intent-validation"/>), not a
        "firewall."</li>

        <li>Removed HICSS emergency halt. Emergency stop is a
        deployment concern, not a protocol concern.</li>

        <li>Normalized companion protocol references to
        <xref target="TIBET"/>, <xref target="UPIP"/>,
        <xref target="RVP"/>, <xref target="AINS"/>.</li>

        <li>Added Humotica minimum requirements
        (<xref target="minimum-required-context"/>).</li>

        <li>Added Key Lifecycle section
        (<xref target="key-lifecycle"/>).</li>
      </ol>
    </section>

    <!-- Acknowledgments -->
    <section anchor="acknowledgements" numbered="false">
      <name>Acknowledgements</name>

      <t>The author thanks Codex (codex.aint) for the suite-wide
      cleanup analysis that informed this revision.</t>
    </section>
  </back>
</rfc>
