<?xml version='1.0' encoding='UTF-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" category="exp" docName="draft-ovidi-lip-4d-00" submissionType="IETF" consensus="false" version="3">
  <front>
    <title abbrev="LIP-4D">LIP-4D: An Intent Context and Authorization Dialogue Protocol for Autonomous Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-ovidi-lip-4d-00"/>
    <author fullname="Angelo Ovidi" initials="A." surname="Ovidi">
      <address>
        <postal>
          <country>United Kingdom</country>
        </postal>
        <email>me@aovidi.com</email>
      </address>
    </author>
    <date year="2026" month="July" day="30"/>
    <abstract>
      <t>This document specifies LIP-4D, an experimental, transport-independent JSON protocol for expressing and evaluating the intent of autonomous software agents. A LIP-4D exchange binds an authenticated agent to a requested action, purpose, execution context, rationale claims, evidence, time constraints, and an evolution history. A policy enforcement component can challenge the agent for additional evidence and, after evaluation, issue a short-lived intent-bound authorization grant or deny the request.</t>
      <t>LIP-4D does not replace workload identity, cryptographic authentication, OAuth, or other authorization frameworks. It supplies a structured intent and evidence layer that can be used with those systems. The protocol deliberately excludes private model chain-of-thought and instead carries concise, reviewable claims and verifiable evidence.</t>
    </abstract>
  </front>
  <middle>
    <section>
      <name>Introduction</name>
      <t>Autonomous agents frequently invoke tools, APIs, models, and other agents.  Existing credentials normally identify a workload or convey a set of permissions, but they do not consistently express why a particular action is requested now, under which constraints it is acceptable, what evidence supports it, or how the request evolved from earlier steps.</t>
      <t>LIP-4D defines a signed intent envelope and a challenge-response authorization dialogue.  The name "4D" refers to four groups of authorization context:</t>
      <ul>
        <li>
          <t>Chronos: time, ordering, validity, and replay boundaries.</t>
        </li>
        <li>
          <t>Logos: a concise rationale, policy-relevant claims, and confidence metadata.</t>
        </li>
        <li>
          <t>Topos: operational context, trust domain, delegation, and resource scope.</t>
        </li>
        <li>
          <t>Physis: revision, mutation, retry, and decay of an intent over time.</t>
        </li>
      </ul>
      <t>An asserted intent is not proof that an actor is trustworthy.  A receiver MUST authenticate the sender and evaluate the intent, evidence, and local policy before issuing a grant.  LIP-4D is therefore an intent-bound authorization protocol, not an authentication mechanism based solely on natural-language intention.</t>
      <t>This document specifies version 0.3 of the protocol and is intended for experimentation and interoperability testing.</t>
    </section>
    <section>
      <name>Conventions and Definitions</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>
      <t>Agent: A software workload that selects or performs actions, potentially using a machine-learning model.</t>
      <t>Guardian: The policy decision and enforcement component that evaluates LIP-4D messages and issues challenges, grants, denials, or revocations.</t>
      <t>Resource: A tool, API, model, data object, or agent that is the target of an action.</t>
      <t>Intent: A structured statement of the action requested by an Agent, its purpose, constraints, and the four-dimensional context used for authorization.</t>
      <t>Evidence: A verifiable claim, attestation, approval, test result, or other object used by a Guardian to evaluate an Intent.</t>
      <t>Grant: A short-lived authorization decision bound to a specific Intent digest, Agent key, audience, and set of constraints.</t>
      <t>Private reasoning: Internal model deliberation, hidden chain-of-thought, prompts, or intermediate inference traces that are not required for protocol interoperability.</t>
    </section>
    <section>
      <name>Design Goals and Non-Goals</name>
      <t>LIP-4D has the following goals:</t>
      <ul>
        <li>
          <t>bind a requested action to purpose, context, evidence, and time;</t>
        </li>
        <li>
          <t>support a deterministic challenge-response policy dialogue;</t>
        </li>
        <li>
          <t>issue grants that are short-lived, audience-restricted, and non-portable;</t>
        </li>
        <li>
          <t>retain an auditable explanation of the authorization decision;</t>
        </li>
        <li>
          <t>interoperate with existing workload identity and authorization systems; and</t>
        </li>
        <li>
          <t>avoid requiring disclosure of private model reasoning.</t>
        </li>
      </ul>
      <t>LIP-4D does not define a workload identity system, credential provisioning system, policy language, evidence format, or universal trust score.  It does not authorize an action merely because a rationale sounds plausible.</t>
    </section>
    <section>
      <name>Protocol Architecture</name>
      <t>The protocol has three logical roles:</t>
      <ul>
        <li>
          <t>The Agent creates and signs an `intent` message.</t>
        </li>
        <li>
          <t>The Guardian validates the message and either issues a `challenge`, `grant`, or `denial`.</t>
        </li>
        <li>
          <t>After receiving a `grant`, the Agent invokes the Resource while presenting the grant and the accepted Intent digest.  The Guardian or Resource validates that the invocation remains within the grant constraints.</t>
        </li>
      </ul>
      <t>A Guardian MAY request one or more rounds of additional evidence.  The normal state sequence is:</t>
      <sourcecode>
Agent                         Guardian                       Resource
  | intent                       |                              |
  |-----------------------------&gt;|                              |
  | challenge                    |                              |
  |&lt;-----------------------------|                              |
  | attestation                  |                              |
  |-----------------------------&gt;|                              |
  | grant or denial              |                              |
  |&lt;-----------------------------|                              |
  | invocation + grant + digest  |                              |
  |------------------------------------------------------------&gt;|
  |                              | validation / introspection   |
  |                              |&lt;----------------------------&gt;|
</sourcecode>
      <t>A deployment MAY combine the Guardian and Resource.  Authentication and secure transport can be provided by mechanisms such as mutual TLS, HTTP Message Signatures, WIMSE credentials, OAuth client authentication, or another locally approved mechanism.</t>
    </section>
    <section>
      <name>Message Envelope</name>
      <t>Every LIP-4D message is a JSON object.  Unless a message-type section states otherwise, the following members apply. The JSON data model is defined by <xref target="RFC8259"/>.</t>
      <t>`lip_version`: REQUIRED.  The string `0.3` for this specification.</t>
      <t>`message_type`: REQUIRED.  One of `intent`, `challenge`, `attestation`, `grant`, `denial`, `revocation`, or `invocation`.</t>
      <t>`message_id`: REQUIRED.  A globally unique URI.  A UUID URN is RECOMMENDED. URI syntax is defined by <xref target="RFC3986"/>.</t>
      <t>`in_reply_to`: REQUIRED for all messages except an initial `intent`.  It identifies the preceding message.</t>
      <t>`issuer`: REQUIRED.  A URI identifying the authenticated sender.</t>
      <t>`audience`: REQUIRED.  A URI identifying the intended receiver or protected resource.</t>
      <t>`issued_at` and `expires_at`: REQUIRED RFC 3339 timestamps.  The validity period SHOULD be measured in seconds or minutes.  A receiver MUST reject an expired message. Timestamp syntax follows <xref target="RFC3339"/>.</t>
      <t>`nonce`: OPTIONAL in an initial message and REQUIRED when responding to a challenge that supplied a nonce.  The nonce MUST be unpredictable and encoded using the base64url alphabet without padding. Base64url encoding is defined by <xref target="RFC4648"/>.</t>
      <t>`intent`: REQUIRED in `intent`, `attestation`, and `invocation` messages.  It contains the requested action, resource, purpose, parameters, and constraints.</t>
      <t>`dimensions`: REQUIRED whenever `intent` is present.  It contains the Chronos, Logos, Topos, and Physis objects defined below.</t>
      <t>`evidence`: OPTIONAL array of evidence descriptors.  Evidence values SHOULD be references or compact attestations rather than unbounded data.</t>
      <t>`requirements`: REQUIRED in a `challenge`.  It identifies required evidence, constraints, or approvals.</t>
      <t>`authorization`: REQUIRED in a `grant`, `denial`, or `revocation`.</t>
      <t>`proof`: REQUIRED.  A detached JWS proof as specified in this document.</t>
      <t>Unknown members MUST be ignored unless local policy rejects extensions.  A sender MUST NOT reuse a member name defined by this document with a different meaning.</t>
    </section>
    <section>
      <name>The Intent Object</name>
      <t>The `intent` object contains:</t>
      <t>`action`: REQUIRED.  A case-sensitive operation identifier.  Globally reusable identifiers SHOULD use a URI or a reverse-domain name.</t>
      <t>`resource`: REQUIRED.  The URI of the requested Resource.</t>
      <t>`purpose`: REQUIRED.  A concise, policy-relevant purpose code or sentence.  It MUST NOT contain private chain-of-thought.</t>
      <t>`parameters`: OPTIONAL object containing operation parameters that are material to authorization.  Secrets MUST NOT be included.</t>
      <t>`constraints`: OPTIONAL object containing requested limits such as maximum uses, data classifications, monetary limits, rate limits, geographic restrictions, or a human-approval requirement.</t>
      <t>A Guardian MUST evaluate the action and resource independently of the free-text purpose.  A natural-language purpose is an assertion, not authority.</t>
    </section>
    <section>
      <name>The Four Dimensions</name>
      <section>
        <name>Chronos</name>
        <t>The `chronos` object describes time and ordering.  It MUST contain `not_before`, `not_after`, and `sequence`.  It MAY contain `prior_message_ids`, `max_clock_skew_seconds`, and a deadline.</t>
        <t>A receiver MUST reject an Intent outside its validity interval.  A receiver SHOULD maintain a replay cache for at least the validity interval plus permitted clock skew.</t>
      </section>
      <section>
        <name>Logos</name>
        <t>The `logos` object describes the policy-relevant rationale without exposing private reasoning.  It MUST contain `rationale` and MAY contain:</t>
        <ul>
          <li>
            <t>`claims`: short statements that can be checked against evidence or policy;</t>
          </li>
          <li>
            <t>`confidence`: a number from 0 through 1 representing the sender's self-reported confidence; and</t>
          </li>
          <li>
            <t>`policy_hints`: non-authoritative labels that may help route evaluation.</t>
          </li>
        </ul>
        <t>A Guardian MUST NOT treat `confidence` as a trust score.  A Guardian MUST NOT require hidden chain-of-thought, raw prompts, model weights, or private deliberation as a condition of interoperability.  Evidence SHOULD support material claims.</t>
      </section>
      <section>
        <name>Topos</name>
        <t>The `topos` object describes operational and delegation context.  It MUST contain `trust_domain` and MAY contain `tenant`, `environment`, `network_zone`, `subject`, `delegation_chain`, and `data_classification`.</t>
        <t>Context values can be privacy-sensitive.  Senders SHOULD disclose only values necessary for the decision.</t>
      </section>
      <section>
        <name>Physis</name>
        <t>The `physis` object describes the lifecycle of an Intent.  It MUST contain `intent_id` and `revision`.  It MAY contain `parent_intent_id`, `mutation_reason`, `retry_count`, and a `decay` policy.</t>
        <t>When an Agent materially changes an action, resource, purpose, parameter, constraint, or dimension, it MUST increment `revision` and obtain a new grant.  A grant for an earlier revision MUST NOT authorize a later revision.</t>
      </section>
    </section>
    <section>
      <name>Evidence</name>
      <t>Each evidence descriptor contains:</t>
      <ul>
        <li>
          <t>`type`: REQUIRED URI or namespaced identifier;</t>
        </li>
        <li>
          <t>`format`: REQUIRED media type or token format;</t>
        </li>
        <li>
          <t>exactly one of `value` or `uri`;</t>
        </li>
        <li>
          <t>`digest`: RECOMMENDED when `uri` is used; and</t>
        </li>
        <li>
          <t>`expires_at`: OPTIONAL expiry time.</t>
        </li>
      </ul>
      <t>A Guardian MUST validate evidence according to the rules of its format and issuer.  Merely including an evidence descriptor does not make the evidence valid.  Evidence obtained from untrusted content, including model-generated text or retrieved documents, MUST be treated as untrusted until independently validated.</t>
    </section>
    <section>
      <name>Message Types and Processing</name>
      <section>
        <name>Intent</name>
        <t>An Agent sends an `intent` message to request authorization.  The message MUST contain the full Intent and dimensions.  The Guardian MUST authenticate the issuer, validate the proof, check time and replay constraints, and evaluate local policy.</t>
        <t>The Guardian responds with a `challenge`, `grant`, or `denial`.</t>
      </section>
      <section>
        <name>Challenge</name>
        <t>A `challenge` identifies missing evidence or stricter constraints.  It MUST include a fresh `nonce` and a `requirements` object.  The requirements can include accepted evidence types, required approval, maximum risk, or a narrowed action scope.</t>
        <t>A challenge MUST NOT request private chain-of-thought.  It MAY request a concise explanation, verifiable claim, test result, human approval, remote attestation, or other evidence.</t>
      </section>
      <section>
        <name>Attestation</name>
        <t>An `attestation` responds to a challenge.  It MUST copy the challenge nonce and include `in_reply_to`.  It MUST include the current Intent and dimensions, including any revision made to satisfy the challenge.</t>
        <t>A Guardian MUST verify that evidence is bound to the current Intent, issuer, audience, and nonce where the evidence format permits that binding.</t>
      </section>
      <section>
        <name>Grant</name>
        <t>A `grant` authorizes a specific Intent.  Its `authorization` object MUST contain:</t>
        <ul>
          <li>
            <t>`status` with value `granted`;</t>
          </li>
          <li>
            <t>`grant_id`, a globally unique URI;</t>
          </li>
          <li>
            <t>`intent_digest`, computed as defined below;</t>
          </li>
          <li>
            <t>`expires_at`;</t>
          </li>
          <li>
            <t>`audience`;</t>
          </li>
          <li>
            <t>`constraints`, including any limits imposed by the Guardian; and</t>
          </li>
          <li>
            <t>`confirmation`, identifying the Agent key or credential to which the grant is bound.</t>
          </li>
        </ul>
        <t>A grant MAY carry an OAuth access token, capability token, or an opaque reference in `authorization.credential`.  The security and presentation rules of that credential format continue to apply.</t>
      </section>
      <section>
        <name>Denial</name>
        <t>A `denial` MUST set `authorization.status` to `denied` and SHOULD include machine-readable `reason_codes`.  It MUST NOT reveal sensitive policy internals that would materially assist an attacker.</t>
      </section>
      <section>
        <name>Revocation</name>
        <t>A `revocation` invalidates a grant before expiry.  It MUST identify the `grant_id`, `intent_digest`, effective time, and reason code.  Deployments requiring immediate revocation MUST provide a push, introspection, or equivalent status mechanism; delivery of a standalone message cannot by itself guarantee immediate enforcement.</t>
      </section>
      <section>
        <name>Invocation</name>
        <t>An `invocation` binds a resource call to an accepted Intent.  It MUST contain the final `intent`, `dimensions`, `authorization.grant_id`, and `authorization.intent_digest`.  It MUST present the grant credential using the method required by that credential format.</t>
        <t>The Resource or Guardian MUST verify the grant signature or introspection result, audience, expiry, confirmation key, constraints, and Intent digest before performing the action.</t>
      </section>
    </section>
    <section>
      <name>Intent Digest</name>
      <t>The Intent digest binds a grant to the final authorization input.  The digest input is a JSON object containing exactly these members copied from the accepted message:</t>
      <sourcecode type="json">
{
  "issuer": "https://agent.example",
  "audience": "https://api.example",
  "intent": {},
  "dimensions": {}
}
</sourcecode>
      <t>The object is canonicalized using the JSON Canonicalization Scheme (JCS).  SHA-256 is applied to the resulting octets.  The digest value is encoded as `sha-256:` followed by unpadded base64url. JCS is specified by <xref target="RFC8785"/>.</t>
      <t>A receiver MUST compare digest values using an implementation that does not leak useful timing information.</t>
    </section>
    <section>
      <name>Message Proof</name>
      <t>Every message MUST carry a detached JSON Web Signature (JWS) in `proof`.  The JWS payload is the JCS canonical representation of the complete message after removing the `proof` member. JWS is specified by <xref target="RFC7515"/>.</t>
      <t>The `proof` object contains:</t>
      <sourcecode type="json">
{
  "type": "jws-detached",
  "jws": "BASE64URL(PROTECTED)..BASE64URL(SIGNATURE)"
}
</sourcecode>
      <t>The protected header MUST contain `alg`, `kid`, and `typ`.  The `typ` value MUST be `application/lip+json`.  The `alg` value `none` MUST NOT be used.  Algorithm acceptance and key resolution are deployment policy.  Implementations SHOULD prefer algorithms that provide at least 128 bits of security.</t>
      <t>The proof authenticates the message but does not by itself authorize the action.  The key identified by `kid` MUST be validated as belonging to the authenticated issuer using the deployment's workload identity or credential system.</t>
    </section>
    <section>
      <name>HTTP Binding</name>
      <t>A LIP-4D HTTP endpoint is configured out of band in this version.  The Agent sends an HTTPS POST request with `Content-Type: application/lip+json` and an `Accept` header that includes the same media type. HTTP semantics are defined by <xref target="RFC9110"/>.</t>
      <t>TLS 1.3 SHOULD be used.  Implementations MUST validate the server identity and MUST NOT silently continue after certificate validation failure. TLS 1.3 is specified by <xref target="RFC8446"/>.</t>
      <t>Recommended HTTP status mappings are:</t>
      <ul>
        <li>
          <t>`200` for a `grant`, `denial`, or successful protocol response;</t>
        </li>
        <li>
          <t>`202` for a `challenge` requiring a later response;</t>
        </li>
        <li>
          <t>`400` for malformed JSON or a schema failure;</t>
        </li>
        <li>
          <t>`401` for failed sender or message authentication;</t>
        </li>
        <li>
          <t>`403` for a policy denial;</t>
        </li>
        <li>
          <t>`409` for replay, state mismatch, or stale revision;</t>
        </li>
        <li>
          <t>`422` for a syntactically valid but semantically invalid message; and</t>
        </li>
        <li>
          <t>`429` for rate limiting.</t>
        </li>
      </ul>
      <t>The body of any protocol-level response SHOULD be a signed LIP-4D message.  HTTP authentication, OAuth, mutual TLS, or HTTP Message Signatures MAY additionally protect the transport request.</t>
    </section>
    <section>
      <name>Integration with Existing Authorization Systems</name>
      <t>LIP-4D is designed to complement established systems.</t>
      <ul>
        <li>
          <t>A WIMSE or SPIFFE-style workload identity can authenticate the Agent and resolve the signing key.</t>
        </li>
        <li>
          <t>OAuth can issue and present the grant credential.  The LIP-4D object can be conveyed as authorization context, including through Rich Authorization Requests where appropriate. OAuth 2.0 is defined by <xref target="RFC6749"/>; Rich Authorization Requests <xref target="RFC9396"/> and Resource Indicators <xref target="RFC8707"/> provide related authorization-context mechanisms.</t>
        </li>
        <li>
          <t>Sender-constrained OAuth tokens, such as mutual-TLS-bound or DPoP-bound tokens, can implement the confirmation binding. Relevant mechanisms include mutual TLS <xref target="RFC8705"/> and DPoP <xref target="RFC9449"/>.</t>
        </li>
        <li>
          <t>Token introspection can provide grant status and revocation checks for opaque credentials. OAuth token introspection is specified by <xref target="RFC7662"/>.</t>
        </li>
      </ul>
      <t>A deployment SHOULD reuse an existing authorization framework rather than inventing a new bearer token.  LIP-4D adds the intent, evidence, challenge, and audit semantics.</t>
    </section>
    <section>
      <name>Example Intent</name>
      <t>The following example omits a real signature.</t>
      <sourcecode type="json">
{
  "lip_version": "0.3",
  "message_type": "intent",
  "message_id": "urn:uuid:018f4c90-7df1-7b4a-92fb-88ab9c730001",
  "issuer": "spiffe://example.org/agent/profile-assistant",
  "audience": "https://api.example.org/profile",
  "issued_at": "2026-07-30T16:00:00Z",
  "expires_at": "2026-07-30T16:02:00Z",
  "intent": {
    "action": "org.example.profile.read",
    "resource": "https://api.example.org/users/123/profile",
    "purpose": "Display the user's requested profile",
    "parameters": {
      "fields": [
        "display_name",
        "avatar"
      ]
    },
    "constraints": {
      "max_uses": 1,
      "data_classification": [
        "public-profile"
      ]
    }
  },
  "dimensions": {
    "chronos": {
      "not_before": "2026-07-30T16:00:00Z",
      "not_after": "2026-07-30T16:02:00Z",
      "sequence": 1
    },
    "logos": {
      "rationale": "The authenticated user opened the profile view.",
      "claims": [
        "session-authenticated",
        "fields-low-risk"
      ],
      "confidence": 0.92
    },
    "topos": {
      "trust_domain": "example.org",
      "tenant": "tenant-42",
      "environment": "production",
      "subject": "urn:example:user:123"
    },
    "physis": {
      "intent_id": "urn:uuid:018f4c90-7df1-7b4a-92fb-88ab9c730000",
      "revision": 1,
      "retry_count": 0
    }
  },
  "evidence": [
    {
      "type": "urn:example:evidence:user-session",
      "format": "application/jwt",
      "value": "eyJ..."
    }
  ],
  "proof": {
    "type": "jws-detached",
    "jws": "eyJhbGciOiJFZERTQSJ9..c2ln"
  }
}
</sourcecode>
    </section>
    <section>
      <name>Versioning and Extensibility</name>
      <t>The `lip_version` value identifies the protocol version.  A receiver that does not support the major semantic version MUST reject the message.  This document uses the exact value `0.3`; future documents can define compatible version negotiation.</t>
      <t>Extensions SHOULD use URI or reverse-domain names for new message fields, action identifiers, evidence types, and reason codes.  Extensions MUST NOT weaken signature, replay, audience, or expiry requirements.</t>
    </section>
    <section>
      <name>Security Considerations</name>
      <section>
        <name>Intent Is Not Authentication</name>
        <t>An attacker can state a benign purpose.  Guardians MUST authenticate issuers and validate evidence.  Policy MUST be based on enforceable constraints and trusted signals, not persuasive prose.</t>
      </section>
      <section>
        <name>Replay and Freshness</name>
        <t>Short validity intervals, unique message IDs, nonces, sequence values, and replay caches are required.  A message accepted once MUST NOT be accepted again when the action is non-idempotent unless the grant explicitly permits multiple uses.</t>
      </section>
      <section>
        <name>Confused Deputy and Audience Substitution</name>
        <t>Every message and grant is audience-bound.  A Resource MUST reject a grant issued for another audience.  Intermediaries MUST NOT rewrite the resource, audience, or Intent after signature verification.</t>
      </section>
      <section>
        <name>Intent Mutation</name>
        <t>A grant is valid only for the exact Intent digest and revision.  Material changes require a new decision.  Implementations MUST compare the final digest at invocation time.</t>
      </section>
      <section>
        <name>Evidence and Prompt Injection</name>
        <t>Agent-produced text, retrieved documents, tool descriptions, and model output can contain adversarial instructions.  Evidence validators MUST separate data from control instructions and MUST NOT allow untrusted text to alter verification policy.</t>
      </section>
      <section>
        <name>Credential and Grant Theft</name>
        <t>Grants SHOULD be sender-constrained and short-lived.  Bearer credentials SHOULD be avoided for high-risk actions.  Logs MUST redact credential values while retaining grant IDs and Intent digests.</t>
      </section>
      <section>
        <name>Policy Oracle Risk</name>
        <t>Challenges and denial reasons can reveal policy.  Guardians SHOULD use bounded reason codes and avoid disclosing thresholds or internal rules that enable systematic probing.</t>
      </section>
      <section>
        <name>Algorithm and Downgrade Attacks</name>
        <t>The JWS `alg` header MUST be verified against an explicit allow-list.  `none` is forbidden.  A receiver MUST NOT accept an older or unknown LIP version merely because another layer authenticated the connection.</t>
      </section>
      <section>
        <name>Human Approval</name>
        <t>Where policy requires human approval, the approval evidence MUST be bound to the action, resource, constraints, subject, and expiry.  A generic approval or prior conversation is insufficient.</t>
      </section>
    </section>
    <section>
      <name>Privacy Considerations</name>
      <t>Intent context can expose user identities, locations, business purpose, relationships, and behavioral history.  Senders and Guardians MUST minimize collection and retention.  Free-text rationale SHOULD be concise and SHOULD avoid personal data when a code or claim is sufficient.</t>
      <t>Private chain-of-thought, raw prompts, and unrelated conversation history MUST NOT be required or logged as protocol evidence.  Confidence values and rationale text can reveal model behavior and SHOULD be disclosed only when necessary.</t>
      <t>Cross-domain deployments SHOULD use pairwise or scoped identifiers where possible.  Audit logs SHOULD retain digests and decision metadata rather than full evidence values unless a legal or operational requirement justifies retention.</t>
    </section>
    <section>
      <name>IANA Considerations</name>
      <t>IANA is requested to register the media type `application/lip+json` in the "Media Types" registry with the following information:</t>
      <t>Type name: application</t>
      <t>Subtype name: lip+json</t>
      <t>Required parameters: none</t>
      <t>Optional parameters: none</t>
      <t>Encoding considerations: binary; the representation is UTF-8 JSON</t>
      <t>Security considerations: See the Security Considerations section of this document.</t>
      <t>Interoperability considerations: Implementations must support the message envelope and version rules in this document.  The representation uses JSON and JCS canonicalization for signatures and digests.</t>
      <t>Published specification: this document</t>
      <t>Applications that use this media type: autonomous agents, policy decision points, authorization servers, API gateways, and protected resources</t>
      <t>Fragment identifier considerations: none</t>
      <t>Additional information:</t>
      <ul>
        <li>
          <t>Deprecated alias names for this type: none</t>
        </li>
        <li>
          <t>Magic number(s): none</t>
        </li>
        <li>
          <t>File extension(s): `.lip.json`</t>
        </li>
        <li>
          <t>Macintosh file type code(s): none</t>
        </li>
      </ul>
      <t>Person and email address to contact for further information: Angelo Ovidi, me@aovidi.com</t>
      <t>Intended usage: COMMON</t>
      <t>Restrictions on usage: none</t>
      <t>Author: Angelo Ovidi</t>
      <t>Change controller: IETF</t>
    </section>
  </middle>
  <back>
    <references>
      <name>Normative References</name>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3986.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7515.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8785.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9110.xml"/>
    </references>
    <references>
      <name>Informative References</name>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6749.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7662.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8705.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8707.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9396.xml"/>
      <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9449.xml"/>
    </references>
    <section numbered="false">
      <name>Acknowledgments</name>
      <t>The initial LIP-4D concept and version 0.2 repository were created by Angelo Ovidi. This version restructures that work as an interoperable intent-bound authorization protocol and aligns it with established Internet security mechanisms.</t>
    </section>
    <section numbered="false" removeInRFC="true">
      <name>Change Log</name>
      <t>draft-ovidi-lip-4d-00: Initial Internet-Draft version.</t>
    </section>
  </back>
</rfc>
