<?xml version='1.0' encoding='utf-8'?>

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" docName="draft-ailex-vap-legal-ai-provenance-03" category="exp" ipr="trust200902" symRefs="true" sortRefs="false" tocInclude="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <!-- Generated by id2xml 1.5.2 on 2026-03-02T05:19:04Z -->
	<front>
    <title abbrev="VAP-LAP">Verifiable AI Provenance (VAP) Framework and Legal AI Profile (LAP)</title>
    <seriesInfo name="Internet-Draft" value="draft-ailex-vap-legal-ai-provenance-03"/>
    <author initials="S." surname="Yamakawa" fullname="Shintaro Yamakawa" role="editor">
      <organization>AILEX LLC / VeritasChain Standards Organization</organization>
      <address>
        <postal>
          <street>1-10-8 Dogenzaka, Shibuya-ku</street>
          <region>Tokyo</region>
          <code>150-0043</code>
          <country>Japan</country>
        </postal>
        <email>info@ailex.co.jp</email>
        <uri>https://ailex.co.jp</uri>
      </address>
    </author>
    <date year="2026" month="March" day="2"/>
    <abstract>
      <t>
   This document specifies the Verifiable AI Provenance (VAP) Framework,
   a cross-domain upper framework for cryptographically verifiable
   decision audit trails in high-risk AI systems, along with the Legal
   AI Profile (LAP), a domain-specific instantiation for legal AI and
   LegalTech systems.</t>
      <t>
   VAP defines common infrastructure including hash chain integrity,
   digital signatures, unified conformance levels (Bronze/Silver/Gold),
   external anchoring via RFC 3161 Time-Stamp Protocol and compatible
   transparency services (including IETF SCITT), a Completeness
   Invariant pattern guaranteeing no selective logging, standardized
   Evidence Pack format for regulatory submission, and privacy-
   preserving verification protocols.</t>
      <t>
   LAP extends VAP for the judicial AI domain, addressing unique
   requirements including attorney oversight verification (Human
   Override Coverage), three-pipeline completeness invariants for legal
   consultation, document generation, and fact-checking, tiered content
   retention with legal hold protocols for judicial discovery
   compliance, graduated override enforcement mechanisms, and privacy-
   preserving fields designed to maintain attorney-client privilege
   while enabling third-party auditability.</t>
    </abstract>
  </front>
  <middle>
    <section anchor="sect-1">
      <name>Introduction</name>
      <t>
   The deployment of AI systems in high-risk domains -- including
   finance, healthcare, transportation, and the administration of
   justice -- creates a structural accountability gap.  AI decisions
   that affect fundamental rights and societal infrastructure lack
   standardized, cryptographically verifiable audit trails that
   independent third parties can inspect.</t>
      <t>
   Current approaches rely on trust-based governance: AI providers
   assert that their systems are safe and well-logged, but no
   independent party can cryptographically verify these claims.  The
   Verifiable AI Provenance (VAP) Framework addresses this gap by
   defining a "Verify, Don't Trust" architecture for AI decision
   provenance.</t>
      <t>
   This document defines two complementary specifications:</t>
      <ol spacing="normal" type="1"><li>
          <t>VAP Framework (Part I): A cross-domain upper framework defining
       common infrastructure for verifiable AI provenance applicable to
       any high-risk AI domain.</t>
        </li>
        <li>
          <t>Legal AI Profile (LAP) (Part II): A domain-specific profile for
       legal AI systems, addressing requirements arising from
       professional regulation of attorneys and high-risk AI system
       governance.</t>
        </li>
      </ol>
      <section anchor="sect-1.1">
        <name>Scope</name>
        <t>
   VAP targets AI systems where "system failure could cause significant and irreversible harm to human life, societal infrastructure, or democratic institutions."  This intentionally strict scope
   distinguishes VAP from general-purpose logging frameworks.</t>
        <t>
   LAP specifically addresses legal AI systems that provide AI-powered
   legal consultation, document generation, and fact-checking services
   to licensed attorneys.</t>
      </section>
      <section anchor="sect-1.2">
        <name>Design Philosophy</name>
        <dl newline="false" spacing="normal" indent="46">
          <dt>The core principle is "Verify, Don't Trust."</dt>
          <dd>
            <t>
	Rather than relying on
            </t>
            <t>
	AI providers' claims about the safety and integrity of their systems,
   VAP enables independent, cryptographic verification of every AI
   decision's provenance, completeness, and human oversight.
            </t>
          </dd>
        </dl>
        <t>
   NOTE: This Internet-Draft is the authoritative specification for the
   VAP Framework and LAP Profile.  Where differences exist between this
   document and other published descriptions of the VAP Framework (e.g.,
   companion white papers or implementation guides), this Internet-Draft
   takes precedence.</t>
      </section>
    </section>
    <section anchor="sect-2">
      <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>
      <section anchor="sect-2.1">
        <name>Terminology</name>
        <dl newline="false" spacing="normal" indent="3">
          <dt>VAP</dt>
          <dd>
            <t>
	Verifiable AI Provenance Framework - the cross-domain upper
            </t>
            <t>
	framework defined in this document.
            </t>
          </dd>
          <dt>Profile</dt>
          <dd>
            <t>
	A domain-specific instantiation of VAP (e.g., VCP for
            </t>
            <t>
	finance, CAP for content, LAP for legal).
            </t>
          </dd>
          <dt>LAP</dt>
          <dd>
            <t>
	Legal AI Profile - the judicial AI domain profile defined in
            </t>
            <t>
	this document.
            </t>
          </dd>
          <dt>Provenance</dt>
          <dd>
            <t>
	Cryptographically verifiable record of data origin,
            </t>
            <t>
	derivation, and history.
            </t>
          </dd>
          <dt>Completeness Invariant</dt>
          <dd>
            <t>
	A mathematical guarantee that every attempt
            </t>
            <t>
	event has exactly one corresponding outcome event.
            </t>
          </dd>
          <dt>Evidence Pack</dt>
          <dd>
            <t>
	A self-contained, signed package of provenance events
            </t>
            <t>
	suitable for regulatory submission and third-party audit.
            </t>
          </dd>
          <dt>External Anchor</dt>
          <dd>
            <t>
	Registration of a Merkle root hash with an external
            </t>
            <t>
	trusted timestamping service such as <xref target="RFC3161"/> or a compatible
      transparency log such as IETF SCITT <xref target="I-D.ietf-scitt-architecture"/>.
            </t>
          </dd>
          <dt>Human Override</dt>
          <dd>
            <t>
	An event recording a human professional's review,
            </t>
            <t>
	approval, modification, or rejection of an AI-generated output.
            </t>
          </dd>
          <dt>Override Coverage</dt>
          <dd>
            <t>
	The ratio of AI outputs reviewed by a human
            </t>
            <t>
	professional to total AI outputs, expressed as a percentage.
            </t>
          </dd>
          <dt>Causal Link</dt>
          <dd>
            <t>
	A reference from an outcome event to its originating
            </t>
            <t>
	attempt event, establishing referential integrity within a
      pipeline.
            </t>
          </dd>
          <dt>Content Retention Tier</dt>
          <dd>
            <t>
	One of three levels of content preservation
            </t>
            <t>
	(Full Content, Recoverable Hash, Hash-Only) defining the
      availability of original event content at a given point in the
      retention lifecycle.
            </t>
          </dd>
          <dt>Legal Hold</dt>
          <dd>
            <t>
	A directive freezing the current retention tier for
            </t>
            <t>
	events within scope, preventing content deletion or tier
      transition during litigation, investigation, or regulatory
      inquiry.
            </t>
          </dd>
          <dt>Override Enforcement Level</dt>
          <dd>
            <t>
	One of four graduated control levels
            </t>
            <t>
	(Metric Only, Warn, Gate, Strict) governing how the system
      responds when AI outputs lack corresponding HUMAN_OVERRIDE events.
            </t>
          </dd>
          <dt>Hash Input</dt>
          <dd>
            <t>
	The canonical byte sequence over which EventHash is
            </t>
            <t>
	computed, defined as the JCS-canonicalized event with the
      security.event_hash, security.signature, and security.sign_algo
      fields removed.  See <xref target="sect-4.2"/>.
            </t>
          </dd>
          <dt>Secure Multi-Agent Collaboration</dt>
          <dd>
            <t>
	An architecture in which
            </t>
            <t>
	multiple AI agents coordinate through authenticated and
      integrity-protected communication channels, enabling
      distributed reasoning, delegation, and collective decision-
      making under verifiable security guarantees.
            </t>
          </dd>
          <dt>AI Agent Collaboration Provenance</dt>
          <dd>
            <t>
	A provenance record capturing
            </t>
            <t>
	the interactions, delegations, and outputs produced during
      secure multi-agent collaboration sessions, enabling post-hoc
      verification of each agent's contribution to a collective
      outcome.
            </t>
          </dd>
          <dt>Provenance Profile</dt>
          <dd>
            <t>
	A domain-specific instantiation of the VAP
            </t>
            <t>
	Framework that defines event types, data model extensions,
      conformance mappings, and regulatory alignment for a
      particular high-risk AI domain.  (See also: Profile.)
            </t>
          </dd>
          <dt>Domain-Specific Provenance Constraints</dt>
          <dd>
            <t>
	Requirements imposed by
            </t>
            <t>
	a provenance profile that restrict, extend, or refine the
      VAP common event structure and completeness invariant for a
      particular regulatory or professional context.
            </t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="sect-3">
      <name>VAP Framework Architecture</name>
      <section anchor="sect-3.1">
        <name>Layer Model</name>
        <t>
   VAP is organized into four core layers, a common infrastructure
   layer, and a domain profile layer:</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt>Integrity Layer</dt>
          <dd>
            <t>
	Hash chain, digital signatures, timestamps (REQUIRED
            </t>
            <t>
	for all levels).
            </t>
          </dd>
          <dt>Provenance Layer</dt>
          <dd>
            <t>
	Actor, input, context, action, and outcome
            </t>
            <t>
	recording (REQUIRED).
            </t>
          </dd>
          <dt>Accountability Layer</dt>
          <dd>
            <t>
	Operator identification, approval chain,
            </t>
            <t>
	delegation records (REQUIRED for operator_id; RECOMMENDED for
      approval chain).
            </t>
          </dd>
          <dt>Traceability Layer</dt>
          <dd>
            <t>
	Trace IDs, causal links, cross-profile references
            </t>
            <t>
	(REQUIRED for trace_id; OPTIONAL for cross-references).
            </t>
          </dd>
          <dt>Common Infrastructure</dt>
          <dd>
            <t>
	Conformance levels, external anchoring,
            </t>
            <t>
	completeness invariant, evidence packs, privacy-preserving
      verification, retention framework (availability depends on
      conformance level).
            </t>
          </dd>
          <dt>Domain Profile Layer</dt>
          <dd>
            <t>
	Domain-specific event types, data model
            </t>
            <t>
	extensions, regulatory mappings (defined per profile).
            </t>
          </dd>
        </dl>
      </section>
      <section anchor="sect-3.2">
        <name>Domain Profiles</name>
        <t>
   VAP supports multiple domain profiles.  Each profile MUST define:</t>
        <ol spacing="normal" type="1"><li>
            <t>Event Types: Domain-specific event type taxonomy.</t>
          </li>
          <li>
            <t>Data Model Extensions: Additional fields beyond the VAP common
       event structure.</t>
          </li>
          <li>
            <t>Conformance Mapping: Mapping to VAP Bronze/Silver/Gold levels.</t>
          </li>
          <li>
            <t>Regulatory Alignment: Mapping to applicable regulations
       (informative).</t>
          </li>
          <li>
            <t>Completeness Invariant Application: How the completeness
       invariant applies to domain-specific event flows.</t>
          </li>
        </ol>
        <t>
   Registered profiles include VCP (Finance), CAP (Content/Creative AI),
   and LAP (Legal AI, defined in Part II of this document).  Additional
   profiles for automotive (DVP), medical (MAP), and public
   administration (PAP) domains are under development.</t>
      </section>
    </section>
    <section anchor="sect-4">
      <name>Cryptographic Foundation</name>
      <section anchor="sect-4.1">
        <name>Algorithm Requirements</name>
        <t>
   All VAP-conformant implementations MUST support the primary
   algorithms listed below.  Implementations SHOULD support at least one
   alternative algorithm in each category for migration purposes.  Post-
   quantum algorithms are listed for future migration readiness and are
   currently OPTIONAL.<!--
   draft-03-fix.txt(441): Warning: Unexpected title: expected 'Figure ...', found
   'Table 1: Required Cryptographic Algorithms'.  This looks like a figure that
   has been entered as a texttable.  The generated XML will need adjustment.
   -->
        </t>
        <figure anchor="le-required-cryptographic-algorithms">
          <name>Required Cryptographic Algorithms</name>
          <artwork><![CDATA[
 +============+================+===================+==============+
 | Category   | Primary (MTI)  | Alternative       | Post-Quantum |
 |            |                |                   | (Future MTI) |
 +============+================+===================+==============+
 | Hash       | SHA-256        | SHA-384, SHA-512  | SHA3-256     |
 +------------+----------------+-------------------+--------------+
 | Signature  | Ed25519        | ECDSA P-256       | ML-DSA-65    |
 |            | ([RFC8032])    | ([RFC6979])       | ([FIPS204])  |
 +------------+----------------+-------------------+--------------+
 | Encryption | AES-256-GCM    | ChaCha20-Poly1305 | N/A (see KEM |
 |            |                |                   | row)         |
 +------------+----------------+-------------------+--------------+
 | KEM        | N/A (classical | N/A               | ML-KEM-1024  |
 |            | key exchange)  |                   | ([FIPS203])  |
 +------------+----------------+-------------------+--------------+
]]></artwork>
        </figure>
        <t>
   Note: The Post-Quantum signature algorithm ML-DSA-65 (formerly known
   as CRYSTALS-Dilithium, renamed upon FIPS 204 standardization in
   August 2024) provides security equivalent to AES-192.  This parameter
   set was selected as a balance between signature size (3,309 bytes)
   and security margin for legal audit trails requiring multi-decade
   retention.  ML-DSA-44 (AES-128 equivalent) was considered
   insufficient for the intended retention periods; ML-DSA-87 (AES-256
   equivalent) imposes significantly larger signatures (4,627 bytes)
   with marginal practical benefit for this use case.</t>
        <t>
   Note: ML-KEM-1024 (formerly known as CRYSTALS-Kyber, renamed upon
   FIPS 203 standardization in August 2024) is a key encapsulation
   mechanism (KEM), not an encryption algorithm.  It is listed
   separately from symmetric encryption because KEM and symmetric
   encryption serve different roles: KEM establishes shared secrets for
   key agreement, while AES-256-GCM provides authenticated encryption of
   content.</t>
        <t>
   Implementations MUST include algorithm identifiers in all
   cryptographic fields.  The following table defines the canonical
   algorithm identifiers used in field values and wire-format prefixes:<!--
   draft-03-fix.txt(506): Warning: Unexpected title: expected 'Figure ...', found
   'Table 2: Canonical Algorithm Identifiers'.  This looks like a figure that
   has been entered as a texttable.  The generated XML will need adjustment.
   -->
        </t>
        <figure anchor="le-canonical-algorithm-identifiers">
          <name>Canonical Algorithm Identifiers</name>
          <artwork><![CDATA[
+===========+========================+==================+===========+
| Algorithm | Field Value (hash_algo | Wire Prefix      | Reference |
|           | / sign_algo)           | (in encoded      |           |
|           |                        | strings)         |           |
+===========+========================+==================+===========+
| SHA-256   | "sha-256"              | "sha-256:"       | NIST FIPS |
|           |                        |                  | 180-4     |
+-----------+------------------------+------------------+-----------+
| SHA-384   | "sha-384"              | "sha-384:"       | NIST FIPS |
|           |                        |                  | 180-4     |
+-----------+------------------------+------------------+-----------+
| SHA-512   | "sha-512"              | "sha-512:"       | NIST FIPS |
|           |                        |                  | 180-4     |
+-----------+------------------------+------------------+-----------+
| SHA3-256  | "sha3-256"             | "sha3-256:"      | NIST FIPS |
|           |                        |                  | 202       |
+-----------+------------------------+------------------+-----------+
| Ed25519   | "ed25519"              | "ed25519:"       | [RFC8032] |
+-----------+------------------------+------------------+-----------+
| ECDSA     | "ecdsa-p256"           | "ecdsa-p256:"    | [RFC6979] |
| P-256     |                        |                  |           |
+-----------+------------------------+------------------+-----------+
| ML-DSA-65 | "ml-dsa-65"            | "ml-dsa-65:"     | [FIPS204] |
+-----------+------------------------+------------------+-----------+
]]></artwork>
        </figure>
        <t>
   All algorithm identifiers MUST be lowercase ASCII strings with
   hyphens as separators.  The field value and wire prefix use the same
   string (the wire prefix appends a colon as delimiter).
   Implementations MUST perform case-insensitive comparison when
   validating algorithm identifiers but MUST produce lowercase output.
   These identifiers enable crypto agility and algorithm migration as
   specified in <xref target="sect-4.4"/>.</t>
      </section>
      <section anchor="sect-4.2">
        <name>Hash Chain Specification</name>
        <t>
   Events MUST be linked in a hash chain where each event's hash
   includes the hash of the preceding event.</t>
        <t>
   The Hash Input is computed by removing the following fields from the
   event before canonicalization:</t>
        <ul spacing="normal">
          <li>
            <t>security.event_hash</t>
          </li>
          <li>
            <t>security.signature</t>
          </li>
        </ul>
        <t>
   The remaining fields (including security.hash_algo,
   security.sign_algo, and security.signer_id) are retained in the hash
   input.  This explicit exclusion list prevents circular references
   (event_hash cannot be included in its own computation) and ensures
   that implementations agree on the hash input.</t>
        <dl newline="true" spacing="normal" indent="2">
          <dt>The computation proceeds as follows:</dt>
          <dd>
            <t>
	HashInput[n] = Event[n] with {security.event_hash,
                                   security.signature} removed
            </t>
            <t>
	EventHash[n] = HashAlgo(JCS-Canonicalize(HashInput[n]))
            </t>
            <dl newline="true" spacing="normal" indent="2">
              <dt>where:</dt>
              <dd>
	Event[n].header.prev_hash = EventHash[n-1]
       Event[0].header.prev_hash = null  (genesis event)
       HashAlgo is the algorithm specified in security.hash_algo
       JCS-Canonicalize follows RFC 8785
	</dd>
            </dl>
          </dd>
        </dl>
        <t>
   Canonicalization MUST follow <xref target="RFC8785"/> (JSON Canonicalization
   Scheme).</t>
        <t>
   Chain integrity verification MUST confirm:</t>
        <ol spacing="normal" type="1"><li>
            <t>Each event's EventHash matches the recomputed hash over the Hash
       Input.</t>
          </li>
          <li>
            <t>Each event's prev_hash matches the preceding event's EventHash.</t>
          </li>
          <li>
            <t>The genesis event has a null prev_hash.</t>
          </li>
          <li>
            <t>The hash_algo specified in each event is a supported algorithm.</t>
          </li>
        </ol>
      </section>
      <section anchor="sect-4.3">
        <name>Digital Signature Requirements</name>
        <t>
   Every event MUST be signed.  The signature MUST be computed over the
   EventHash bytes (not over the raw event):</t>
        <artwork><![CDATA[
  Signature = SignAlgo.Sign(PrivateKey, EventHash_bytes)

The signature MUST be encoded as follows:

  security.signature = sign_algo_id ":" Base64url(Signature_bytes)
]]></artwork>
        <t>
   where sign_algo_id is the canonical algorithm identifier from Table 2
   matching the security.sign_algo field (e.g., "ed25519", "ecdsa-p256"), and Base64url encoding follows <xref target="RFC4648"/> <xref target="sect-5"/> (URL-safe
   alphabet, no padding).</t>
        <t>
   The primary mandatory-to-implement (MTI) signature algorithm is
   Ed25519 <xref target="RFC8032"/>.  Implementations MUST support Ed25519 and SHOULD
   support at least one additional algorithm from Table 1 for migration
   purposes.</t>
      </section>
      <section anchor="sect-4.4">
        <name>Algorithm Migration</name>
        <t>
   VAP is designed for crypto agility per BCP 201 <xref target="RFC7696"/>.  Algorithm
   migration proceeds as follows:</t>
        <ol spacing="normal" type="1"><li>
            <t>A new algorithm is added to the supported set via a specification
       update.</t>
          </li>
          <li>
            <t>Implementations begin producing events with the new algorithm
       alongside the existing algorithm (dual-signing period,
       RECOMMENDED minimum 6 months).</t>
          </li>
          <li>
            <t>Once all verifiers support the new algorithm, the old algorithm
       is deprecated.</t>
          </li>
          <li>
            <t>After a deprecation notice period (RECOMMENDED minimum 12
       months), implementations MAY stop producing events with the old
       algorithm.</t>
          </li>
        </ol>
        <t>
   During migration, the hash chain MAY contain events signed with
   different algorithms.  Verifiers MUST support all algorithms that
   appear in the chain being verified.</t>
        <section anchor="sect-4.4.1">
          <name>Post-Quantum Readiness</name>
          <t>
   Audit trails with multi-decade retention periods (up to 10 years at
   Gold level) face exposure to "harvest now, decrypt later" attacks.
   NIST has announced timelines for deprecating RSA and ECC algorithms
   (targeted deprecation by 2030, disallowance by 2035).</t>
          <t>
   Implementations with Gold-level retention requirements SHOULD prepare
   for post-quantum transition by:</t>
          <ul spacing="normal">
            <li>
              <t>Tracking ML-DSA (FIPS 204) readiness in their cryptographic
      libraries.</t>
            </li>
            <li>
              <t>Planning for hybrid classical+PQ signing approaches during the
      transition period, per the guidance in <xref target="RFC9794"/>.</t>
            </li>
            <li>
              <t>Ensuring that signed Evidence Packs can be re-signed with post-
      quantum algorithms when available, while preserving the original
      classical signature chain for historical verification.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="sect-5">
      <name>Common Event Structure</name>
      <t>
   All VAP-conformant events MUST include the following fields:</t>
      <artwork><![CDATA[
{
  "vap_version": "1.3",
  "profile": {
    "id": "string (VCP|CAP|LAP|DVP|MAP|PAP)",
    "version": "semver string"
  },
  "header": {
    "event_id": "UUIDv7 (RFC 9562)",
    "chain_id": "UUIDv7",
    "prev_hash": "sha-256:<64 lowercase hex chars> | null",
    "timestamp": "RFC 3339 datetime with timezone",
    "event_type": "string (profile-specific)",
    "causal_link": {
      "target_event_id": "UUIDv7 | null",
      "link_type": "string (OUTCOME_OF|OVERRIDE_OF|HOLD_ON|
                            RECOVERY_OF|TIER_CHANGE_OF|null)"
    }
  },
  "provenance": {
    "actor": {
      "actor_id": "string",
      "actor_hash": "sha-256:<64 lowercase hex chars>",
      "role": "string"
    },
    "input": { },
    "context": { },
    "action": { },
    "outcome": { }
  },
  "accountability": {
    "operator_id": "string",
    "last_approval_by": "string",
    "approval_timestamp": "RFC 3339"
  },
  "domain_payload": { },
  "security": {
    "event_hash": "sha-256:<64 lowercase hex chars>",
    "hash_algo": "sha-256",
    "signature": "ed25519:base64url...",
    "sign_algo": "ed25519",
    "signer_id": "string"
  }
}
]]></artwork>
      <t>
   Event identifiers MUST use UUIDv7 (<xref target="RFC9562"/>) to ensure time-ordered
   sortability.  JSON canonicalization MUST follow <xref target="RFC8785"/>.</t>
      <t>
   The profile.id field MUST be 1-4 uppercase ASCII characters matching
   a registered profile identifier (see <xref target="sect-21.2"/>).  Note that
   profile identifiers use uppercase (e.g., "LAP") while algorithm
   identifiers use lowercase (e.g., "sha-256") per Table 2; this
   distinction is intentional and reflects their different registries.</t>
      <t>
   Timestamps MUST conform to <xref target="RFC3339"/> (a profile of ISO 8601) and MUST
   include a timezone offset or "Z" for UTC.  Implementations SHOULD use
   UTC for all timestamps.</t>
      <t>
   The header.causal_link field provides a standardized location for
   referential integrity across all profiles.  Outcome events MUST set
   target_event_id to the originating attempt event's identifier and
   link_type to "OUTCOME_OF".  HUMAN_OVERRIDE events MUST set
   target_event_id to the target output event and link_type to
   "OVERRIDE_OF".  Events with no causal link MUST set both fields to
   null.</t>
      <t>
   Hash values MUST be encoded as lowercase hexadecimal strings,
   prefixed with the canonical algorithm identifier (from Table 2)
   followed by a colon (e.g., "sha-256:a1b2c3...").  The hexadecimal
   string MUST be the exact length corresponding to the hash output (64
   characters for sha-256, 96 for sha-384, 128 for sha-512).</t>
      <t>
   All text fields MUST be encoded as UTF-8 (<xref target="RFC3629"/>).</t>
      <section anchor="sect-5.1">
        <name>Numeric Value Encoding</name>
        <t>
   Fields representing monetary amounts, cryptographic values, or high-
   precision measurements SHOULD be encoded as JSON strings rather than
   JSON numbers.  This recommendation is motivated by:</t>
        <ul spacing="normal">
          <li>
            <t>IEEE 754 double-precision floating-point, the only numeric type in
      JSON (per <xref target="RFC8259"/>, <xref target="sect-6"/>), cannot exactly represent all
      decimal values.  Financial and legal contexts require exact
      decimal representation.</t>
          </li>
          <li>
            <t>JSON parsers across programming languages exhibit inconsistent
      behavior for large integers (exceeding 2^53) and high-precision
      decimals, leading to silent data corruption.</t>
          </li>
          <li>
            <t>Canonicalization stability: <xref target="RFC8785"/> defines specific rules for
      numeric serialization, but string encoding avoids parser-dependent
      numeric reformatting entirely, ensuring consistent hash
      computation across implementations.</t>
          </li>
        </ul>
        <t>
   Fields where exact precision is not critical (e.g., event_count,
   token_count) MAY use JSON numbers.  Implementations MUST document
   which fields use string encoding.  Implementations that use JSON
   numbers for counters MUST ensure that any numeric-to-string
   conversion performed during canonicalization is deterministic and
   documented, to avoid signature verification ambiguity across
   languages and libraries.</t>
      </section>
    </section>
    <section anchor="sect-6">
      <name>Conformance Levels</name>
      <t>
   VAP defines three conformance levels applicable to all domain
   profiles.  Each level inherits all requirements of lower levels (Gold
   is a superset of Silver, which is a superset of Bronze).</t>
      <section anchor="sect-6.1">
        <name>Bronze Level</name>
        <t>
   Target: SMEs, early adopters.  Core capabilities:</t>
        <ul spacing="normal">
          <li>
            <t>Event logging for all AI decision points (REQUIRED)</t>
          </li>
          <li>
            <t>Hash chain linking all events using a supported hash algorithm
      (REQUIRED)</t>
          </li>
          <li>
            <t>Digital signature on every event using a supported signature
      algorithm (REQUIRED)</t>
          </li>
          <li>
            <t><xref target="RFC3339"/> timestamps with timezone (REQUIRED)</t>
          </li>
          <li>
            <t>UUIDv7 event identifiers (REQUIRED)</t>
          </li>
          <li>
            <t>Minimum 6-month retention (REQUIRED)</t>
          </li>
          <li>
            <t>Event structure validation against the Common Event Structure
      (<xref target="sect-5"/>) with at minimum all REQUIRED fields present and
      correctly typed (REQUIRED)</t>
          </li>
        </ul>
        <t>
   Note: Formal JSON Schema definitions for validation are provided in
   Appendix "Appendix B.  Validation Requirements".  Bronze
   implementations MUST validate the presence and type of all REQUIRED
   fields defined in <xref target="sect-5"/>.</t>
      </section>
      <section anchor="sect-6.2">
        <name>Silver Level</name>
        <t>
   Target: Enterprise, regulated industries.  Additional requirements
   beyond Bronze:</t>
        <ul spacing="normal">
          <li>
            <t>Daily external anchoring to a trusted timestamping service
      conforming to <xref target="RFC3161"/> (with <xref target="RFC5816"/> ESSCertIDv2 support) or an
      equivalent transparency log (REQUIRED)</t>
          </li>
          <li>
            <t>Completeness Invariant verification (REQUIRED)</t>
          </li>
          <li>
            <t>Evidence Pack generation capability (REQUIRED)</t>
          </li>
          <li>
            <t>Sensitive data hashing for privacy preservation (REQUIRED)</t>
          </li>
          <li>
            <t>Minimum 2-year retention (REQUIRED)</t>
          </li>
          <li>
            <t>Merkle tree construction per <xref target="sect-7.3"/> (REQUIRED)</t>
          </li>
          <li>
            <t>Third-party verification endpoint conforming to <xref target="sect-12"/>
      (REQUIRED)</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-6.3">
        <name>Gold Level</name>
        <t>
   Target: Highly regulated industries.  Additional requirements beyond
   Silver:</t>
        <ul spacing="normal">
          <li>
            <t>Hourly external anchoring (REQUIRED)</t>
          </li>
          <li>
            <t>HSM for signing key storage, <xref target="FIPS140-3"/> Level 2 or above
      (REQUIRED).  Note: FIPS 140-2 validated modules MAY be used during
      the transition period ending September 2026, after which FIPS
      140-3 is REQUIRED.</t>
          </li>
          <li>
            <t>Integration with a transparency log service such as IETF SCITT
      <xref target="I-D.ietf-scitt-architecture"/> or equivalent (REQUIRED)</t>
          </li>
          <li>
            <t>Real-time audit API conforming to <xref target="sect-12"/> (REQUIRED)</t>
          </li>
          <li>
            <t>Minimum 5-year retention (REQUIRED)</t>
          </li>
          <li>
            <t>24-hour incident response and evidence preservation (REQUIRED)</t>
          </li>
          <li>
            <t>Geographic redundancy, minimum 2 regions (REQUIRED)</t>
          </li>
          <li>
            <t>Annual third-party audit (REQUIRED)</t>
          </li>
          <li>
            <t>Crypto-shredding support (REQUIRED)</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="sect-7">
      <name>External Anchoring</name>
      <t>
   External anchoring proves that events existed at a specific point in
   time, preventing backdating, forward-dating, and log forking.</t>
      <section anchor="sect-7.1">
        <name>Anchoring Service Types</name>
        <t>
   VAP defines an abstract anchoring interface that can be realized by
   multiple service types.  The baseline anchoring service is <xref target="RFC3161"/>
   Time-Stamp Authority (TSA), with <xref target="RFC5816"/> support for ESSCertIDv2
   (enabling SHA-256 certificate identification instead of SHA-1).
   Additional service types include transparency logs and public
   blockchains.</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt>RFC 3161 TSA (Baseline)</dt>
          <dd>
            <t>
	Traditional enterprise timestamping via
            </t>
            <t>
	X.509 PKI (<xref target="RFC3161"/>).  This is the normative baseline.  Trust
      model: CA trust hierarchy.  Implementations MUST support <xref target="RFC5816"/>
      for SHA-256-based certificate identification.
            </t>
          </dd>
          <dt>Transparency Log (e.g., IETF SCITT)</dt>
          <dd>
            <t>
	Append-only transparency logs
            </t>
            <t>
	providing public verifiability.  IETF SCITT (<xref target="I-D.ietf-scitt-architecture"/>) is one
      such service; implementations MAY use any transparency log
      providing equivalent append-only and inclusion-proof guarantees.
      Registration via SCRAPI (<xref target="I-D.ietf-scitt-scrapi"/>) is RECOMMENDED for SCITT
      integration.  Trust model: public append-only log with
      cryptographic inclusion proofs.
            </t>
          </dd>
          <dt>Blockchain</dt>
          <dd>
            <t>
	Bitcoin or Ethereum anchoring for maximum
            </t>
            <t>
	decentralization.  Trust model: PoW/PoS consensus.  This option is
      non-normative and provided for environments requiring
      decentralized trust.
            </t>
          </dd>
        </dl>
        <t>
   Gold Level implementations MUST use at least one transparency log
   service (such as SCITT) or equivalent, in addition to or instead of
   RFC 3161 TSA.  Implementations SHOULD use multiple independent
   anchoring services for critical deployments.</t>
      </section>
      <section anchor="sect-7.2">
        <name>Anchor Record Format</name>
        <artwork><![CDATA[
{
  "anchor_id": "UUIDv7",
  "anchor_type": "RFC3161 | TRANSPARENCY_LOG | BLOCKCHAIN",
  "merkle_root": "sha-256:<64 lowercase hex chars>",
  "event_count": 1000,
  "first_event_id": "UUIDv7",
  "last_event_id": "UUIDv7",
  "first_event_timestamp": "RFC 3339",
  "last_event_timestamp": "RFC 3339",
  "anchor_timestamp": "RFC 3339",
  "anchor_proof": { },
  "service_endpoint": "https://tsa.example.com"
}
]]></artwork>
        <t>
   The anchor_proof field is an object whose structure depends on the
   anchor_type:</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt>RFC3161</dt>
          <dd>
            <t>
	anchor_proof MUST contain: "tst_token" (Base64url-encoded
            </t>
            <t>
	RFC 3161 TimeStampToken per <xref target="RFC4648"/> <xref target="sect-5"/>), "hash_algo"
      (algorithm used in TSA request), and "tsa_cert_hash" (SHA-256 hash
      of the TSA certificate).  Verification: parse the TimeStampToken,
      confirm the imprint matches the merkle_root, and validate the TSA
      signature chain.
            </t>
          </dd>
          <dt>TRANSPARENCY_LOG</dt>
          <dd>
            <t>
	anchor_proof MUST contain: "inclusion_proof" (array
            </t>
            <t>
	of Base64url-encoded sibling hashes from leaf to root),
      "tree_size" (integer, total leaves at time of inclusion),
      "leaf_index" (integer, position of this entry), and "log_id"
      (identifier of the transparency log).  Verification follows the
      Merkle audit path algorithm defined in <xref target="RFC9162"/> Section 2.1.3.
            </t>
          </dd>
          <dt>BLOCKCHAIN</dt>
          <dd>
            <t>
	anchor_proof MUST contain: "tx_id" (transaction
            </t>
            <t>
	identifier as hex string), "block_height" (integer), "chain"
      (e.g., "bitcoin", "ethereum"), and "confirmations" (integer,
      number of confirmations at recording time).  This anchor type is
      non-normative.
            </t>
          </dd>
        </dl>
      </section>
      <section anchor="sect-7.3">
        <name>Merkle Tree Construction</name>
        <t>
   Events MUST be batched into a binary Merkle hash tree for efficient
   anchoring and selective disclosure.  The tree construction follows
   <xref target="RFC9162"/> (Certificate Transparency Version 2.0) <xref target="sect-2"/>, which
   obsoletes <xref target="RFC6962"/>:</t>
        <artwork><![CDATA[
  MTH({})       = SHA-256()    (empty hash for zero inputs)
  MTH({d(0)})   = SHA-256(0x00 || d(0))
  MTH(D[n])     = SHA-256(0x01 || MTH(D[0:k]) || MTH(D[k:n]))
]]></artwork>
        <ul empty="true" spacing="normal">
          <li>
            <dl newline="true" spacing="normal" indent="2">
              <dt>where:</dt>
              <dd>
	D[n] is the list of n event hashes
       k is the largest power of 2 less than n
       0x00 is the leaf node prefix
       0x01 is the interior node prefix
       || denotes concatenation
	</dd>
            </dl>
          </li>
        </ul>
        <t>
   This construction uses domain separation prefixes (0x00 for leaves,
   0x01 for interior nodes) to prevent second-preimage attacks, and
   handles non-power-of-two leaf counts without duplicating leaves,
   consistent with <xref target="RFC9162"/>.</t>
        <t>
   The resulting Merkle root is submitted to the external anchoring
   service.  Merkle inclusion proofs enable selective disclosure: a
   verifier can confirm that a specific event is included in an anchored
   batch without accessing other events in the batch.</t>
      </section>
    </section>
    <section anchor="sect-8">
      <name>Completeness Invariant</name>
      <t>
   The Completeness Invariant is a mathematical guarantee that every
   "attempt" event has exactly one corresponding "outcome" event.  This
   prevents selective logging -- the omission of inconvenient records.</t>
      <dl newline="true" spacing="normal" indent="2">
        <dt>General form:</dt>
        <dd>
	For each pipeline P:
       Count(P_ATTEMPT) = Count(P_SUCCESS)
                        + Count(P_DENY)
                        + Count(P_ERROR)
	</dd>
      </dl>
      <t>
   The invariant enforces three properties:</t>
      <dl newline="false" spacing="normal" indent="3">
        <dt>Completeness</dt>
        <dd>
          <t>
	Every ATTEMPT has an outcome.  Violation indicates
          </t>
          <t>
	missing events.
          </t>
        </dd>
        <dt>Uniqueness</dt>
        <dd>
          <t>
	Each ATTEMPT has exactly one outcome.  Violation
          </t>
          <t>
	indicates duplicate records.
          </t>
        </dd>
        <dt>Referential Integrity</dt>
        <dd>
          <t>
	Every outcome contains a causal link (via
          </t>
          <t>
	header.causal_link.target_event_id) to its originating ATTEMPT.
      Violation indicates orphan events.
          </t>
        </dd>
      </dl>
      <t>
   Domain profiles MUST specify which event types constitute attempts
   and outcomes for the invariant.  Each outcome event MUST set
   header.causal_link.target_event_id to the originating attempt event's
   event_id and header.causal_link.link_type to "OUTCOME_OF".</t>
      <t>
   Verification SHOULD account for a configurable grace period for in-
   flight operations.  The grace period MUST NOT exceed 300 seconds
   (RECOMMENDED default: 60 seconds).  If an ATTEMPT event has no
   corresponding outcome event after the grace period has elapsed, a
   verification implementation SHOULD treat this as a completeness
   violation.  Implementations MAY emit a synthetic TIMEOUT_ERROR
   outcome event when the grace period expires, to maintain the
   invariant.</t>
    </section>
    <section anchor="sect-9">
      <name>Evidence Pack Specification</name>
      <t>
   An Evidence Pack is a self-contained, signed package of provenance
   events suitable for regulatory submission and third-party audit.</t>
      <section anchor="sect-9.1">
        <name>Pack Structure</name>
        <t>
   An Evidence Pack MUST contain:</t>
        <ul spacing="normal">
          <li>
            <t>manifest.json: Pack metadata and integrity information</t>
          </li>
          <li>
            <t>events/: Event batches (max 10,000 events per file)</t>
          </li>
          <li>
            <t>anchors/: External anchor records</t>
          </li>
          <li>
            <t>merkle/: Merkle tree structure and selective disclosure proofs</t>
          </li>
          <li>
            <t>keys/: Public keys for signature verification</t>
          </li>
          <li>
            <t>signatures/: Pack-level signature</t>
          </li>
        </ul>
        <t>
   The Evidence Pack SHOULD be packaged as a ZIP archive with the media
   type application/vap-evidence-pack+zip (see <xref target="sect-21.1"/>).  The
   manifest MUST use the media type application/vap-manifest+json.</t>
      </section>
      <section anchor="sect-9.2">
        <name>Pack Manifest</name>
        <t>
   The manifest MUST include the following fields:</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt>pack_id (REQUIRED)</dt>
          <dd>
            <t>
	UUIDv7 uniquely identifying this Evidence Pack.
            </t>
            <t/>
          </dd>
          <dt>vap_version (REQUIRED)</dt>
          <dd>
            <t>
	VAP framework version (e.g., "1.3").
            </t>
            <t/>
          </dd>
          <dt>profile (REQUIRED)</dt>
          <dd>
            <t>
	Object containing profile id and version.
            </t>
            <t/>
          </dd>
          <dt>conformance_level (REQUIRED)</dt>
          <dd>
            <t>
	"Bronze", "Silver", or "Gold".
            </t>
            <t/>
          </dd>
          <dt>generated_at (REQUIRED)</dt>
          <dd>
            <t><xref target="RFC3339"/> timestamp of pack generation.
            </t>
            <t/>
          </dd>
          <dt>time_range (REQUIRED)</dt>
          <dd>
            <t>
	Object with start and end <xref target="RFC3339"/>
            </t>
            <t>
	timestamps.
            </t>
          </dd>
          <dt>statistics (REQUIRED)</dt>
          <dd>
            <t>
	Object containing total_events and
            </t>
            <t>
	events_by_type breakdown.
            </t>
          </dd>
          <dt>completeness_verification (REQUIRED for Silver+)</dt>
          <dd>
            <t>
	Object containing
            </t>
            <t>
	invariant_type, invariant_valid boolean, grace_period_seconds, and
      per-pipeline results.
            </t>
          </dd>
          <dt>integrity (REQUIRED)</dt>
          <dd>
            <t>
	Object containing checksums (SHA-256 per file),
            </t>
            <t>
	merkle_root, and pack_hash.
            </t>
          </dd>
          <dt>external_anchors (REQUIRED for Silver+)</dt>
          <dd>
            <t>
	Array of anchor records
            </t>
            <t>
	referencing this pack's time range.
            </t>
          </dd>
          <dt>retention_status (REQUIRED for Silver+ in LAP)</dt>
          <dd>
            <t>
	Object containing
            </t>
            <t>
	events_at_tier1, events_at_tier2, events_at_tier3 counts, and
      active_legal_holds count and identifiers.  See <xref target="sect-18"/>.
            </t>
          </dd>
          <dt>enforcement_metrics (REQUIRED for Silver+ in LAP)</dt>
          <dd>
            <t>
	Object containing
            </t>
            <t>
	enforcement_level, warnings_issued, gates_blocked,
      gates_overridden, and rapid_approvals count and percentage.  See
      <xref target="sect-16"/>.
            </t>
          </dd>
        </dl>
        <t>
   The manifest MAY include additional profile-specific fields as
   defined by the domain profile specification.</t>
      </section>
    </section>
    <section anchor="sect-10">
      <name>Privacy-Preserving Verification</name>
      <t>
   VAP enables verification of system integrity without disclosure of
   sensitive data.  This is achieved through:</t>
      <ol spacing="normal" type="1"><li>
          <t>Hash-based attestation: Sensitive fields are stored as
       cryptographic hashes, enabling existence verification without
       content disclosure.</t>
        </li>
        <li>
          <t>Selective disclosure via Merkle proofs: Individual events can be
       proven to exist within an Evidence Pack without revealing other
       events.</t>
        </li>
        <li>
          <t>Per-tenant salting: Hash salts are unique per tenant to prevent
       cross-tenant correlation attacks.</t>
        </li>
      </ol>
      <t>
   This mechanism is particularly critical for LAP, where attorney-
   client privilege prevents disclosure of consultation content while
   still requiring verifiable audit trails.</t>
      <section anchor="sect-10.1">
        <name>Salt Management Requirements</name>
        <t>
   Per-tenant salts MUST meet the following requirements:</t>
        <ul spacing="normal">
          <li>
            <t>Minimum entropy: 256 bits (32 bytes), generated using a
      cryptographically secure random number generator.</t>
          </li>
          <li>
            <t>Uniqueness: Each tenant MUST have a distinct salt.
      Implementations MUST NOT share salts across tenants.</t>
          </li>
          <li>
            <t>Storage: Salts MUST be stored separately from the hashed data and
      protected with access controls equivalent to signing keys.</t>
          </li>
          <li>
            <t>Rotation: Salts SHOULD be rotated at least annually.  Upon
      rotation, previously hashed values are NOT re-hashed; the
      provenance chain records the salt epoch in effect at each event's
      timestamp.</t>
          </li>
        </ul>
        <t>
   For fields with low input entropy (such as bar registration numbers,
   which occupy a bounded numeric space), plain SHA-256(salt || value)
   is vulnerable to dictionary attack if the salt is compromised.  For
   such fields, implementations MUST use HMAC-SHA-256 with the tenant
   salt as key:</t>
        <artwork><![CDATA[
  BarNumberHash = "sha-256:" || hex(HMAC-SHA-256(tenant_salt,
                                                bar_number_bytes))

In the event of salt compromise, the implementation MUST:
]]></artwork>
        <ol spacing="normal" type="1"><li>
            <t>Generate a new salt immediately.</t>
          </li>
          <li>
            <t>Record a SALT_ROTATION event in the provenance chain.</t>
          </li>
          <li>
            <t>Assess and document the exposure window (events between last
       rotation and compromise discovery).</t>
          </li>
          <li>
            <t>Notify affected tenants per applicable data breach notification
       requirements.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="sect-11">
      <name>Retention Framework</name>
      <!--
   draft-03-fix.txt(1195): Warning: Unexpected title: expected 'Figure ...', found
   'Table 3: Retention Requirements by Conformance Level'.  This looks like a
   figure that has been entered as a texttable.  The generated XML will need
   adjustment.
   -->
      <figure anchor="le-retention-requirements-by-conformance-level">
        <name>Retention Requirements by Conformance Level</name>
        <artwork><![CDATA[
+========+========+================+================+===============+
| Level  | Events | Anchor Records | Evidence       | Keys          |
|        |        |                | Packs          |               |
+========+========+================+================+===============+
| Bronze | 6      | N/A            | On-demand      | 1 year after  |
|        | months |                |                | last use      |
+--------+--------+----------------+----------------+---------------+
| Silver | 2      | 5 years        | 2 years        | 3 years after |
|        | years  |                |                | last use      |
+--------+--------+----------------+----------------+---------------+
| Gold   | 5      | 10 years       | 5 years        | 7 years after |
|        | years  |                |                | last use      |
+--------+--------+----------------+----------------+---------------+
]]></artwork>
      </figure>
      <t>
   Retention periods MUST be extended upon: regulatory investigation
   notification, legal hold orders, security or safety incidents, and
   third-party audit requests.</t>
      <t>
   Domain profiles MAY specify extended retention periods beyond the VAP
   baseline where domain-specific regulations require longer retention
   (see <xref target="sect-18"/> for LAP extensions).</t>
      <section anchor="sect-11.1">
        <name>Privacy Regulation Interaction</name>
        <t>
   For privacy regulation compliance (e.g., <xref target="GDPR"/> "right to be forgotten"), implementations at Silver level and above SHOULD support
   crypto-shredding: encrypting personal data with per-user keys and
   deleting those keys to render the data cryptographically
   unrecoverable while preserving hash chain integrity.</t>
        <t>
   VAP audit trails are designed to minimize tension with data
   protection regulations:</t>
        <ul spacing="normal">
          <li>
            <t>Audit entries use hash-based references to personal data rather
      than storing personal data directly in the provenance chain.  This
      reduces the personal data footprint within the immutable hash
      chain.</t>
          </li>
          <li>
            <t>Audit trails constitute a separate processing purpose with an
      independent legal basis.  Under <xref target="GDPR"/> Article 6(1)(c) (legal
      obligation) or Article 6(1)(f) (legitimate interests in
      maintaining system integrity and accountability), provenance data
      may be retained independently of the subject's consent.</t>
          </li>
          <li>
            <t><xref target="GDPR"/> Article 17(3) provides exceptions to the right of erasure
      for legal claims (subparagraph (e)) and legal obligations
      (subparagraph (b)).  Audit trail records documenting AI system
      compliance may fall within these exceptions, subject to
      jurisdiction-specific determination.</t>
          </li>
        </ul>
        <t>
   NOTE: The applicability of specific GDPR exceptions to VAP audit
   trails is a legal determination outside the scope of this
   specification.  Implementations SHOULD consult legal counsel
   regarding data protection compliance in their deployment
   jurisdictions.</t>
      </section>
      <section anchor="sect-11.2">
        <name>Content Retention Tiers</name>
        <t>
   Implementations face a tension between privacy-preserving
   verification (which favors early deletion of sensitive content) and
   legal discovery obligations (which may require content disclosure).
   To address this, VAP defines three content retention tiers that
   domain profiles MAY adopt:</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt>Tier 1 - Full Content Retention</dt>
          <dd>
            <t>
	All event content (inputs, outputs,
            </t>
            <t>
	documents) is retained in encrypted form alongside provenance
      hashes.  Duration: configurable per tenant.  Encryption MUST use
      AES-256-GCM or ChaCha20-Poly1305 with per-tenant keys.
            </t>
          </dd>
          <dt>Tier 2 - Recoverable Hash Retention</dt>
          <dd>
            <t>
	Original content is deleted but
            </t>
            <t>
	a content recovery key is escrowed with a designated custodian.
      The escrowed key enables re-association of content from encrypted
      backups if a legal hold or disclosure order is triggered.
      Duration: from end of Tier 1 to the applicable retention period
      endpoint.  See <xref target="sect-11.3"/> for custodian requirements.
            </t>
          </dd>
          <dt>Tier 3 - Hash-Only Retention</dt>
          <dd>
            <t>
	Only provenance hashes remain.  Content
            </t>
            <t>
	is cryptographically unrecoverable (crypto-shredding complete).
      Duration: remainder of the retention period.
            </t>
          </dd>
        </dl>
        <t>
   Transition from Tier 1 to Tier 2 MUST NOT occur while any Legal Hold
   is active for the affected events.  Transition from Tier 2 to Tier 3
   MUST NOT occur while any Legal Hold is active.</t>
        <t>
   Implementations MUST log all tier transitions as
   RETENTION_TIER_CHANGE events in the provenance chain.</t>
      </section>
      <section anchor="sect-11.3">
        <name>Escrow Custodian Requirements</name>
        <t>
   Tier 2 escrow custodians MUST satisfy the following:</t>
        <ul spacing="normal">
          <li>
            <t>The custodian MUST be organizationally independent from the VAP
      implementation operator (i.e., the entity that generates and signs
      provenance events).</t>
          </li>
          <li>
            <t>Key escrow operations (deposit, retrieval, destruction) MUST each
      generate a provenance event in the custodian's own audit log.</t>
          </li>
          <li>
            <t>Escrow keys MUST be encrypted at rest using the custodian's own
      key management infrastructure.</t>
          </li>
          <li>
            <t>Key granularity: implementations SHOULD use per-case or per-tenant
      escrow keys rather than a single global key, to limit the blast
      radius of any single key compromise.</t>
          </li>
          <li>
            <t>Recovery execution MUST require dual authorization: one from the
      requesting party (e.g., the tenant attorney) and one from the
      custodian.</t>
          </li>
        </ul>
        <t>
   A CONTENT_RECOVERY_EXECUTED event MUST be logged upon successful
   recovery, including: hold_id, recovered_event_range, recovered_by
   (actor hash), custodian_id, and court_order_reference_hash (if
   applicable).</t>
      </section>
      <section anchor="sect-11.4">
        <name>Legal Hold Protocol</name>
        <t>
   A Legal Hold freezes the current retention tier for all events within
   scope, preventing content deletion or tier transition.</t>
        <t>
   Legal Hold triggers:</t>
        <ol spacing="normal" type="1"><li>
            <t>Court Order: Judicial order for evidence preservation.</t>
          </li>
          <li>
            <t>Regulatory Investigation: Government regulatory action.</t>
          </li>
          <li>
            <t>Litigation Hold: Reasonably anticipated litigation.</t>
          </li>
          <li>
            <t>Professional Body Inquiry: Investigation by a professional
       regulatory body (e.g., bar association).</t>
          </li>
          <li>
            <t>Disciplinary Proceedings: Professional disciplinary matters.</t>
          </li>
        </ol>
        <t>
   When a Legal Hold is activated:</t>
        <ol spacing="normal" type="1"><li>
            <t>All events within scope MUST be frozen at their current retention
       tier (Tier 1 or Tier 2).</t>
          </li>
          <li>
            <t>A LEGAL_HOLD_ACTIVATED event MUST be recorded in the provenance
       chain, including: hold_id (UUIDv7), hold_trigger (enumerated
       trigger type), scope (event time range or case identifiers),
       activated_by (actor identity hash), and activation_timestamp
       (<xref target="RFC3339"/>).</t>
          </li>
          <li>
            <t>Tier transitions for in-scope events MUST be blocked until a
       corresponding LEGAL_HOLD_RELEASED event is recorded.</t>
          </li>
          <li>
            <t>The Legal Hold itself MUST be included in Evidence Packs
       generated during the hold period.</t>
          </li>
        </ol>
        <t>
   Legal Hold activation MUST be available at Bronze level.  Automated
   Legal Hold detection (e.g., triggered by court filing notifications
   or regulatory inquiry receipt) is RECOMMENDED at Gold level.</t>
      </section>
      <section anchor="sect-11.5">
        <name>Judicial Disclosure Response</name>
        <t>
   When a court or regulatory body orders full content disclosure for
   specific events, the response depends on the current retention tier:</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt>Events at Tier 1</dt>
          <dd>
            <t>
	Content is available in encrypted form and can be
            </t>
            <t>
	disclosed subject to appropriate access controls and professional
      review.
            </t>
          </dd>
          <dt>Events at Tier 2</dt>
          <dd>
            <t>
	Content recovery key is retrieved from escrow per
            </t>
            <t><xref target="sect-11.3"/>.  Content is reconstructed from encrypted backups.  A
      CONTENT_RECOVERY_EXECUTED event MUST be logged in the provenance
      chain.
            </t>
          </dd>
          <dt>Events at Tier 3</dt>
          <dd>
            <t>
	Content is cryptographically unrecoverable.  The
            </t>
            <t>
	implementation MUST provide:
            </t>
            <ol spacing="normal" type="1"><li>
                <t>Hash chain integrity proof demonstrating unbroken provenance.</t>
              </li>
              <li>
                <t>Tier transition log showing when and why content was deleted.</t>
              </li>
              <li>
                <t>Certification that no Legal Hold was active at the time of
          deletion.</t>
              </li>
              <li>
                <t>Statistical metadata (token counts, timestamps, event types)
          that remains available.</t>
              </li>
            </ol>
          </dd>
        </dl>
        <t>
   This three-tier approach enables implementations to demonstrate to
   judicial authorities that content deletion followed a documented,
   auditable process rather than constituting potential evidence
   spoliation.</t>
        <t>
   NOTE: The adequacy of hash-only evidence for specific judicial
   proceedings is a jurisdiction-specific legal determination outside
   the scope of this specification.  This framework provides the maximum
   available technical evidence in each retention tier.</t>
      </section>
    </section>
    <section anchor="sect-12">
      <name>Third-Party Verification Protocol</name>
      <t>
   Verification is available at three access levels:</t>
      <t>
   Public  Access to Merkle roots only.  Verifies anchor existence.</t>
      <dl newline="false" spacing="normal" indent="3">
        <dt>Auditor</dt>
        <dd>
          <t>
	Access to Evidence Packs.  Full chain and completeness
          </t>
          <t>
	verification.
          </t>
        </dd>
        <dt>Regulator</dt>
        <dd>
          <t>
	Real-time API access (Gold level).  Live monitoring
          </t>
          <t>
	capability.
          </t>
        </dd>
      </dl>
      <t>
   Verification steps:</t>
      <ol spacing="normal" type="1"><li>
          <t>Anchor Verification: Confirm Merkle root in external timestamping
       service or transparency log.</t>
        </li>
        <li>
          <t>Chain Verification: Validate hash chain integrity from genesis to
       latest event.</t>
        </li>
        <li>
          <t>Signature Verification: Authenticate all events with public keys.</t>
        </li>
        <li>
          <t>Completeness Verification: Check invariant for the time period.</t>
        </li>
        <li>
          <t>Selective Query (optional): Verify specific events via Merkle
       proofs.</t>
        </li>
      </ol>
      <section anchor="sect-12.1">
        <name>Minimum Verification API</name>
        <t>
   Silver and Gold level implementations that expose a third-party
   verification endpoint MUST support at minimum the following HTTP
   endpoints.  All responses MUST use Content-Type application/json and
   MUST include appropriate authentication (e.g., Bearer token, mutual
   TLS).</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt>GET /vap/v1/anchors?from={RFC3339}&amp;to={RFC3339}</dt>
          <dd>
            <t>
	Returns anchor
            </t>
            <t>
	records for the specified time range.  Response: JSON array of
      Anchor Record objects per <xref target="sect-7.2"/>.  REQUIRED for Silver+.
            </t>
          </dd>
          <dt>GET /vap/v1/chain/verify?from={RFC3339}&amp;to={RFC3339}</dt>
          <dd>
            <t>
	Performs and
            </t>
            <t>
	returns chain integrity verification results for the specified
      time range.  Response: JSON object with fields: chain_valid
      (boolean), events_verified (integer), first_event_id,
      last_event_id, errors (array of {event_id, error_type, detail}).
      REQUIRED for Silver+.
            </t>
          </dd>
          <dt>GET /vap/v1/completeness?from={RFC3339}&amp;to={RFC3339}</dt>
          <dd>
            <t>
	Returns
            </t>
            <t>
	completeness invariant verification for the time range.  Response:
      JSON object with fields: invariant_valid (boolean),
      grace_period_seconds (integer), pipelines (array of {pipeline_id,
      attempts, outcomes, valid}).  REQUIRED for Silver+.
            </t>
          </dd>
          <dt>GET /vap/v1/events/{event_id}/proof</dt>
          <dd>
            <t>
	Returns Merkle inclusion proof
            </t>
            <t>
	for a specific event.  Response: JSON object with fields:
      event_id, anchor_id, merkle_root, inclusion_proof (array of
      Base64url sibling hashes), leaf_index, tree_size.  REQUIRED for
      Silver+.
            </t>
          </dd>
          <dt>GET /vap/v1/events/stream (WebSocket or SSE)</dt>
          <dd>
            <t>
	Real-time event stream
            </t>
            <t>
	for live monitoring.  REQUIRED for Gold only.
            </t>
          </dd>
        </dl>
        <t>
   Error responses MUST use standard HTTP status codes (400 for
   malformed requests, 401/403 for authentication/authorization
   failures, 404 for unknown resources, 500 for server errors) with a
   JSON body containing "error" (string code) and "detail" (human-
   readable description).</t>
      </section>
    </section>
    <section anchor="sect-13">
      <name>Legal AI Profile (LAP) Overview</name>
      <t>
   The Legal AI Profile (LAP) is a VAP domain profile for judicial AI
   and LegalTech systems.  LAP addresses unique challenges in the legal
   domain:</t>
      <dl newline="false" spacing="normal" indent="3">
        <dt>Unauthorized Practice of Law Risk</dt>
        <dd>
          <t>
	Proving that AI does not
          </t>
          <t>
	independently practice law, through HUMAN_OVERRIDE events
      documenting attorney oversight.
          </t>
        </dd>
        <dt>Hallucination</dt>
        <dd>
          <t>
	Recording fact-check provenance through
          </t>
          <t>
	LEGAL_FACTCHECK events with citation chain verification.
          </t>
        </dd>
        <dt>Selective Logging</dt>
        <dd>
          <t>
	Preventing omission of inconvenient AI outputs
          </t>
          <t>
	through three-pipeline Completeness Invariant.
          </t>
        </dd>
        <dt>Attorney-Client Privilege</dt>
        <dd>
          <t>
	Maintaining confidentiality through
          </t>
          <t>
	privacy-preserving fields (prompt hashes instead of raw content)
      and tiered content retention with legal hold support.
          </t>
        </dd>
        <dt>Accountability Ambiguity</dt>
        <dd>
          <t>
	Recording "who, when, and on what basis"
          </t>
          <t>
	through the Accountability Layer and graduated override
      enforcement.
          </t>
        </dd>
      </dl>
      <section anchor="sect-13.1">
        <name>Profile Registration</name>
        <!--
   draft-03-fix.txt(1532): Warning: Unexpected title: expected 'Figure ...', found
   'Table 4: LAP Profile Registration'.  This looks like a figure that has been
   entered as a texttable.  The generated XML will need adjustment.
   -->
        <figure anchor="le-lap-profile-registration">
          <name>LAP Profile Registration</name>
          <artwork><![CDATA[
           +==================+==========================+
           | Field            | Value                    |
           +==================+==========================+
           | Profile ID       | LAP                      |
           +------------------+--------------------------+
           | Full Name        | Legal AI Profile         |
           +------------------+--------------------------+
           | Domain           | Legal AI / LegalTech     |
           +------------------+--------------------------+
           | Regulatory Scope | Attorney regulation, AI  |
           |                  | governance (informative) |
           +------------------+--------------------------+
           | Time Precision   | Second                   |
           +------------------+--------------------------+
           | Profile Version  | 0.4.0                    |
           +------------------+--------------------------+
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="sect-14">
      <name>LAP Event Type Taxonomy</name>
      <t>
   LAP defines three functional pipelines, one cross-cutting control
   event type, and administrative event types for retention and
   enforcement management:</t>
      <section anchor="sect-14.1">
        <name>Pipeline 1: Legal Query</name>
        <t>
   AI-powered legal consultation:</t>
        <ul spacing="normal">
          <li>
            <t>LEGAL_QUERY_ATTEMPT: Question submission to AI</t>
          </li>
          <li>
            <t>LEGAL_QUERY_RESPONSE: AI response generated successfully</t>
          </li>
          <li>
            <t>LEGAL_QUERY_DENY: Response refused (content filter, unauthorized
      role)</t>
          </li>
          <li>
            <t>LEGAL_QUERY_ERROR: System error (API failure, timeout)</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-14.2">
        <name>Pipeline 2: Document Generation</name>
        <t>
   AI-assisted legal document drafting:</t>
        <ul spacing="normal">
          <li>
            <t>LEGAL_DOC_ATTEMPT: Document generation request</t>
          </li>
          <li>
            <t>LEGAL_DOC_RESPONSE: Document generated successfully</t>
          </li>
          <li>
            <t>LEGAL_DOC_DENY: Generation refused (insufficient consent,
      unauthorized)</t>
          </li>
          <li>
            <t>LEGAL_DOC_ERROR: System error (API failure, parse error)</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-14.3">
        <name>Pipeline 3: Fact Check</name>
        <t>
   AI-powered legal fact verification:</t>
        <ul spacing="normal">
          <li>
            <t>LEGAL_FACTCHECK_ATTEMPT: Fact-check request</t>
          </li>
          <li>
            <t>LEGAL_FACTCHECK_RESPONSE: Fact-check completed</t>
          </li>
          <li>
            <t>LEGAL_FACTCHECK_DENY: Fact-check refused (OPTIONAL)</t>
          </li>
          <li>
            <t>LEGAL_FACTCHECK_ERROR: System error</t>
          </li>
        </ul>
        <t>
   Implementations MAY define LEGAL_FACTCHECK_DENY for cases where a
   fact-check request is refused due to rate limiting, insufficient
   permissions, or consent constraints.  The deny_reason field SHOULD
   distinguish these from system errors.</t>
        <t>
   If an implementation does not support LEGAL_FACTCHECK_DENY, refusal
   conditions MUST be recorded as LEGAL_FACTCHECK_ERROR with a
   deny_equivalent indicator set to true in the error detail, ensuring
   the Completeness Invariant is maintained.</t>
      </section>
      <section anchor="sect-14.4">
        <name>Cross-Cutting: Human Override</name>
        <t>
   HUMAN_OVERRIDE events record an attorney's review of any AI output:</t>
        <ul spacing="normal">
          <li>
            <t>APPROVE: Attorney confirms AI output without modification</t>
          </li>
          <li>
            <t>MODIFY: Attorney edits AI output (modification hash recorded)</t>
          </li>
          <li>
            <t>REJECT: Attorney rejects AI output entirely</t>
          </li>
        </ul>
        <t>
   HUMAN_OVERRIDE events MUST set header.causal_link.target_event_id to
   the target outcome event's identifier and
   header.causal_link.link_type to "OVERRIDE_OF".  The event MUST also
   include the attorney's identity (bar number hash), override type, and
   optional modification details in the domain_payload.</t>
      </section>
      <section anchor="sect-14.5">
        <name>Retention and Enforcement Events</name>
        <t>
   LAP defines additional event types for retention management and
   override enforcement:</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt>RETENTION_TIER_CHANGE</dt>
          <dd>
            <t>
	Records transitions between content retention
            </t>
            <t>
	tiers.  Fields: previous_tier, new_tier, affected_event_range,
      reason, authorized_by.
            </t>
          </dd>
          <dt>LEGAL_HOLD_ACTIVATED</dt>
          <dd>
            <t>
	Records activation of a legal hold.  Fields:
            </t>
            <t>
	hold_id, hold_trigger, scope, activated_by.
            </t>
          </dd>
          <dt>LEGAL_HOLD_RELEASED</dt>
          <dd>
            <t>
	Records release of a legal hold.  Fields:
            </t>
            <t>
	hold_id, released_by, release_reason.
            </t>
          </dd>
          <dt>CONTENT_RECOVERY_EXECUTED</dt>
          <dd>
            <t>
	Records recovery of content from Tier 2
            </t>
            <t>
	escrow.  Fields: hold_id, recovered_event_range, recovered_by,
      custodian_id, court_order_reference_hash.
            </t>
          </dd>
          <dt>REVIEW_WARNING_ACKNOWLEDGED</dt>
          <dd>
            <t>
	Records that an attorney acknowledged an
            </t>
            <t>
	unreviewed-output warning before proceeding with export.  Fields:
      target_event_id, warning_type, acknowledged_by.
            </t>
          </dd>
          <dt>REVIEW_GATE_BLOCKED</dt>
          <dd>
            <t>
	Records that an export attempt was blocked due
            </t>
            <t>
	to missing HUMAN_OVERRIDE.  Fields: target_event_id,
      document_type, blocked_action.
            </t>
          </dd>
          <dt>REVIEW_GATE_OVERRIDE</dt>
          <dd>
            <t>
	Records that an attorney bypassed a review gate
            </t>
            <t>
	with explicit justification.  Fields: target_event_id,
      override_reason, overridden_by.
            </t>
          </dd>
          <dt>SALT_ROTATION</dt>
          <dd>
            <t>
	Records rotation of tenant privacy salt.  Fields:
            </t>
            <t>
	previous_salt_epoch, new_salt_epoch, rotated_by, reason.
            </t>
          </dd>
        </dl>
        <t>
   These events are NOT part of the three-pipeline Completeness
   Invariant (they are control and administrative events, similar to
   HUMAN_OVERRIDE).  However, they MUST be included in the hash chain
   and signed.</t>
      </section>
    </section>
    <section anchor="sect-15">
      <name>LAP Completeness Invariant</name>
      <t>
   LAP applies the Completeness Invariant independently to all three
   pipelines:</t>
      <ul empty="true" spacing="normal">
        <li>
          <dl newline="true" spacing="normal" indent="3">
            <dt>For each pipeline P in {QUERY, DOC, FACTCHECK}:</dt>
            <dd/>
          </dl>
        </li>
      </ul>
      <artwork><![CDATA[
    Count(LEGAL_{P}_ATTEMPT)
    = Count(LEGAL_{P}_RESPONSE)
    + Count(LEGAL_{P}_DENY)    [if supported]
    + Count(LEGAL_{P}_ERROR)

  Expanded:

    LEGAL_QUERY_ATTEMPT = LEGAL_QUERY_RESPONSE
                        + LEGAL_QUERY_DENY
                        + LEGAL_QUERY_ERROR

    LEGAL_DOC_ATTEMPT   = LEGAL_DOC_RESPONSE
                        + LEGAL_DOC_DENY
                        + LEGAL_DOC_ERROR

    LEGAL_FACTCHECK_ATTEMPT = LEGAL_FACTCHECK_RESPONSE
                            + LEGAL_FACTCHECK_DENY  [if supported]
                            + LEGAL_FACTCHECK_ERROR
]]></artwork>
      <t>
   For implementations that do not support LEGAL_FACTCHECK_DENY, the
   invariant simplifies to ATTEMPT = RESPONSE + ERROR for Pipeline 3.
   Refusal conditions recorded as ERROR with deny_equivalent MUST be
   counted toward the invariant.</t>
      <t>
   Each outcome event MUST set header.causal_link.target_event_id to the
   originating attempt event's event_id and header.causal_link.link_type
   to "OUTCOME_OF", ensuring referential integrity can be verified
   independently of event ordering.</t>
    </section>
    <section anchor="sect-16">
      <name>Override Coverage and Enforcement</name>
      <section anchor="sect-16.1">
        <name>Override Coverage Metric</name>
        <t>
   HUMAN_OVERRIDE events are outside the Completeness Invariant but LAP
   defines Override Coverage as a critical operational metric:</t>
        <ul empty="true" spacing="normal">
          <li>
            <dl newline="true" spacing="normal" indent="2">
              <dt>Override Coverage =</dt>
              <dd>
                <t>
	Count(distinct target_event_id with at least one
             HUMAN_OVERRIDE where link_type = "OVERRIDE_OF") /
                </t>
                <dl newline="true" spacing="normal" indent="3">
                  <dt>Count(LEGAL_*_RESPONSE)</dt>
                  <dd/>
                </dl>
              </dd>
            </dl>
          </li>
        </ul>
        <t>
   This metric quantifies the degree to which human professionals review
   AI outputs.  In jurisdictions where regulations require that a
   licensed professional personally scrutinize AI-generated work
   products, this metric provides measurable evidence of compliance.</t>
        <t>
   Design notes on the denominator:</t>
        <ul spacing="normal">
          <li>
            <t>The numerator counts distinct target events (not raw
      HUMAN_OVERRIDE count) to prevent a single output reviewed multiple
      times from inflating coverage above 100%.</t>
          </li>
          <li>
            <t>DENY events are excluded from the denominator because a denial
      represents the AI system refusing to produce output.  There is no
      AI-generated work product for a professional to review.  If a
      jurisdiction requires that denial decisions themselves be
      reviewed, the implementation SHOULD track this as a separate
      "Denial Review Coverage" metric.</t>
          </li>
          <li>
            <t>ERROR events are excluded from the denominator because they do not
      produce an output suitable for professional approval or rejection.
      Completeness of error handling is evaluated separately via the
      per-pipeline invariant.<!--
   draft-03-fix.txt(1785): Warning: Unexpected title: expected 'Figure ...', found
   'Table 5: Override Coverage Assessment'.  This looks like a figure that has
   been entered as a texttable.  The generated XML will need adjustment.
   -->
            </t>
          </li>
        </ul>
        <figure anchor="le-override-coverage-assessment">
          <name>Override Coverage Assessment</name>
          <artwork><![CDATA[
    +==========+============+==================================+
    | Coverage | Assessment | Operational Implication          |
    +==========+============+==================================+
    | 100%     | Ideal      | Full professional oversight of   |
    |          |            | all AI outputs                   |
    +----------+------------+----------------------------------+
    | 70-99%   | Good       | Majority reviewed; low-risk      |
    |          |            | outputs may be excluded          |
    +----------+------------+----------------------------------+
    | 30-69%   | Warning    | Insufficient review; operational |
    |          |            | improvement recommended          |
    +----------+------------+----------------------------------+
    | <30%     | Critical   | Professional oversight           |
    |          |            | requirements likely unmet        |
    +----------+------------+----------------------------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="sect-16.2">
        <name>Enforcement Levels</name>
        <t>
   Override Coverage tracking alone provides post-hoc accountability but
   does not prevent the use of unreviewed AI outputs in professional
   practice.  LAP defines four enforcement levels to address this
   structural limitation:</t>
        <dl newline="false" spacing="normal" indent="3">
          <dt>Level 0 - Metric Only</dt>
          <dd>
            <t>
	Override Coverage is computed and reported.
            </t>
            <t>
	No enforcement action is taken.  The system relies on the
      professional's ethical obligations.
            </t>
          </dd>
          <dt>Level 1 - Warn</dt>
          <dd>
            <t>
	When a user attempts to export, copy, or transmit an
            </t>
            <t>
	AI-generated output that has no corresponding HUMAN_OVERRIDE
      event, the system MUST display a prominent warning indicating that
      the output has not been professionally reviewed.
            </t>
            <t>
	The warning MUST: (a) be displayed in-context at the point of
      export or copy action; (b) require explicit acknowledgment before
      proceeding; and (c) record a REVIEW_WARNING_ACKNOWLEDGED event in
      the provenance chain.
            </t>
          </dd>
          <dt>Level 2 - Gate</dt>
          <dd>
            <t>
	For designated high-risk document types, the system
            </t>
            <t>
	MUST require a HUMAN_OVERRIDE event before permitting export or
      transmission.
            </t>
            <t>
	The gate MUST: (a) block export, copy, and transmit actions until
      a HUMAN_OVERRIDE (APPROVE or MODIFY) event exists for the target
      output; (b) record a REVIEW_GATE_BLOCKED event when an export
      attempt is blocked; and (c) allow the gate to be bypassed ONLY by
      a user with "attorney" role AND explicit override, recorded as a
      REVIEW_GATE_OVERRIDE event with a mandatory reason field.
            </t>
            <t>
	Document types subject to gating SHOULD be configurable per
      tenant.  The default gated types are: court filings, settlement
      and mediation documents, client-facing legal opinions, and
      contracts and agreements.
            </t>
          </dd>
          <dt>Level 3 - Strict</dt>
          <dd>
            <t>
	ALL AI-generated outputs require HUMAN_OVERRIDE
            </t>
            <t>
	before any export action.  No bypass mechanism.  This level is
      intended for maximum-compliance environments but is not mandated
      by this specification due to potential impact on workflow
      efficiency.
            </t>
          </dd>
        </dl>
      </section>
      <section anchor="sect-16.3">
        <name>Enforcement Level Mapping</name>
        <!--
   draft-03-fix.txt(1857): Warning: Unexpected title: expected 'Figure ...', found
   'Table 6: Enforcement Level by Conformance Level'.  This looks like a figure
   that has been entered as a texttable.  The generated XML will need
   adjustment.
   -->
        <figure anchor="le-enforcement-level-by-conformance-level">
          <name>Enforcement Level by Conformance Level</name>
          <artwork><![CDATA[
  +=======================+==========+=============+=============+
  | Enforcement           | Bronze   | Silver      | Gold        |
  +=======================+==========+=============+=============+
  | Level 0 (Metric Only) | Default  | Minimum     | N/A         |
  +-----------------------+----------+-------------+-------------+
  | Level 1 (Warn)        | OPTIONAL | REQUIRED    | REQUIRED    |
  +-----------------------+----------+-------------+-------------+
  | Level 2 (Gate)        | N/A      | RECOMMENDED | RECOMMENDED |
  +-----------------------+----------+-------------+-------------+
  | Level 3 (Strict)      | N/A      | OPTIONAL    | OPTIONAL    |
  +-----------------------+----------+-------------+-------------+
]]></artwork>
        </figure>
      </section>
      <section anchor="sect-16.4">
        <name>Override Latency Threshold</name>
        <t>
   To distinguish genuine professional review from perfunctory approval,
   LAP defines an Override Latency metric:</t>
        <ul empty="true" spacing="normal">
          <li>
            <dl newline="true" spacing="normal" indent="17">
              <dt>Override Latency = HUMAN_OVERRIDE.timestamp</dt>
              <dd>
                <ul spacing="normal">
                  <li>
                    <t>target_output_event.timestamp</t>
                  </li>
                </ul>
              </dd>
            </dl>
          </li>
        </ul>
        <t>
   Implementations at Silver level and above SHOULD flag HUMAN_OVERRIDE
   events with Override Latency below a configurable threshold
   (RECOMMENDED default: 10 seconds) as "rapid approval" in the
   provenance chain.</t>
        <t>
   This does NOT block the override but records a RAPID_APPROVAL_FLAG in
   the event metadata, which: (a) is visible in Evidence Packs and audit
   reports; (b) may indicate insufficient review depth; and (c) can
   trigger alerts at Gold level when rapid approvals exceed a
   configurable percentage (RECOMMENDED: 20%).</t>
      </section>
      <section anchor="sect-16.5">
        <name>Structural Limitation Acknowledgment</name>
        <t>
   This specification acknowledges that no technical mechanism can fully
   guarantee the quality or depth of human professional review.  A
   licensed attorney may approve an AI output after genuine review or
   after cursory inspection; the system cannot distinguish between these
   without introducing unacceptable surveillance of professional
   judgment.</t>
        <t>
   The enforcement framework therefore aims to: (a) create friction
   against entirely unreviewed AI output usage; (b) provide auditable
   evidence of review or lack thereof; (c) enable risk-proportionate
   controls (stronger for high-risk document types); and (d) preserve
   professional autonomy while recording accountability metadata.</t>
        <t>
   The combination of enforcement levels, latency monitoring, and
   comprehensive provenance logging shifts the accountability model from
   "trust alone" to "trust with verification infrastructure,"
   acknowledging that while absolute prevention is impossible, the cost
   and detectability of non-compliance can be substantially increased.</t>
      </section>
    </section>
    <section anchor="sect-17">
      <name>LAP Privacy-Preserving Fields</name>
      <t>
   Legal AI handles extremely sensitive data protected by professional
   privilege.  LAP extends VAP's privacy-preserving verification with
   the following hashed fields:<!--
   draft-03-fix.txt(1973): Warning: Unexpected title: expected 'Figure ...', found
   'Table 7: LAP Privacy-Preserving Fields'.  This looks like a figure that has
   been entered as a texttable.  The generated XML will need adjustment.
   -->
      </t>
      <figure anchor="le-lap-privacy-preserving-fields">
        <name>LAP Privacy-Preserving Fields</name>
        <artwork><![CDATA[
+============+=================+====================+==============+
|Original    |Hash Field       | Hash Method        |Sensitive     |
|Data        |                 |                    |Content       |
+============+=================+====================+==============+
|User query  |PromptHash       | SHA-256(salt ||    |Legal         |
|text        |                 | content)           |consultation  |
|            |                 |                    |content       |
|            |                 |                    |(privileged)  |
+------------+-----------------+--------------------+--------------+
|AI response |ResponseHash     | SHA-256(salt ||    |AI-generated  |
|text        |                 | content)           |legal advice  |
+------------+-----------------+--------------------+--------------+
|Document    |OutputHash       | SHA-256(salt ||    |Generated     |
|output      |                 | content)           |legal         |
|            |                 |                    |documents     |
+------------+-----------------+--------------------+--------------+
|Case number |CaseNumberHash   | HMAC-SHA-256(salt, |Case          |
|            |                 | value)             |identifier    |
|            |                 |                    |(high         |
|            |                 |                    |specificity)  |
+------------+-----------------+--------------------+--------------+
|Bar number  |BarNumberHash    | HMAC-SHA-256(salt, |Professional  |
|            |                 | value)             |registration  |
|            |                 |                    |number        |
+------------+-----------------+--------------------+--------------+
|Party names |PartyHash        | HMAC-SHA-256(salt, |Personal      |
|            |                 | value)             |information of|
|            |                 |                    |parties       |
+------------+-----------------+--------------------+--------------+
|Modification|ModificationHash | SHA-256(salt ||    |Professional's|
|detail      |                 | content)           |corrections   |
+------------+-----------------+--------------------+--------------+
|Factcheck   |TargetContentHash| SHA-256(salt ||    |Content under |
|content     |                 | content)           |verification  |
+------------+-----------------+--------------------+--------------+
]]></artwork>
      </figure>
      <t>
   Fields with low input entropy (CaseNumberHash, BarNumberHash,
   PartyHash) MUST use HMAC-SHA-256 with the tenant salt as key, per
   <xref target="sect-10.1"/>, to resist dictionary attacks.  Fields with high input
   entropy (content hashes) MAY use simple salted SHA-256.</t>
      <t>
   Hash computation uses per-tenant salts as specified in <xref target="sect-10.1"/>.
   Third-party verifiers can confirm event existence and chain integrity
   without accessing privileged content.</t>
      <t>
   The availability of original content corresponding to these hashes
   depends on the current Content Retention Tier (<xref target="sect-11.2"/>).  At
   Tier 1, original content is available in encrypted form.  At Tier 2,
   it is recoverable via escrowed keys.  At Tier 3, only hashes remain.</t>
    </section>
    <section anchor="sect-18">
      <name>LAP Conformance Level Mapping</name>
      <!--
   draft-03-fix.txt(2038): Warning: Unexpected title: expected 'Figure ...', found
   'Table 8: LAP Conformance Requirements'.  This looks like a figure that has
   been entered as a texttable.  The generated XML will need adjustment.
   -->
      <figure anchor="le-lap-conformance-requirements">
        <name>LAP Conformance Requirements</name>
        <artwork><![CDATA[
+========================+==========+=============+================+
| Requirement            | Bronze   | Silver      | Gold           |
+========================+==========+=============+================+
| Hash Chain             | Yes      | Yes         | Yes            |
+------------------------+----------+-------------+----------------+
| Digital Signature      | Yes      | Yes         | Yes            |
+------------------------+----------+-------------+----------------+
| External Anchoring     | No       | Daily       | Hourly         |
+------------------------+----------+-------------+----------------+
| Completeness Invariant | No       | 3 Pipelines | 3 Pipelines    |
+------------------------+----------+-------------+----------------+
| Override Coverage      | No       | Yes         | Yes (with      |
| Tracking               |          |             | alerts)        |
+------------------------+----------+-------------+----------------+
| Override Enforcement   | Level 0  | Level 1     | Level 1        |
| Level                  |          | (REQUIRED)  | (REQUIRED)     |
+------------------------+----------+-------------+----------------+
| Evidence Pack          | No       | Yes         | Yes            |
+------------------------+----------+-------------+----------------+
| Privacy Hashing        | No       | Yes         | Yes            |
+------------------------+----------+-------------+----------------+
| Content Retention      | Tier 3   | Tier 2 +    | All 3 Tiers    |
| Tiers                  | only     | Tier 3      |                |
+------------------------+----------+-------------+----------------+
| Legal Hold Protocol    | Yes      | Yes         | Yes (automated |
|                        | (manual) | (manual)    | detection)     |
+------------------------+----------+-------------+----------------+
| Content Recovery       | No       | RECOMMENDED | REQUIRED       |
| Escrow                 |          |             |                |
+------------------------+----------+-------------+----------------+
| HSM                    | No       | No          | Yes            |
|                        |          |             | ([FIPS140-3])  |
+------------------------+----------+-------------+----------------+
| Retention              | 6 months | 3 years     | 10 years       |
+------------------------+----------+-------------+----------------+
| Real-time Audit API    | No       | No          | Yes            |
+------------------------+----------+-------------+----------------+
]]></artwork>
      </figure>
    </section>
    <section anchor="sect-19">
      <name>LAP Regulatory Alignment (Informative)</name>
      <section anchor="sect-19.1">
        <name>Attorney Professional Regulation</name>
        <t>
   In many jurisdictions, only licensed attorneys may provide legal
   advice.  AI systems that generate legal analysis or draft legal
   documents operate in a regulatory space where the boundary between
   "legal information" and "legal advice" determines whether
   unauthorized practice of law has occurred.</t>
        <t>
   LAP provenance supports regulatory compliance through:</t>
        <ul spacing="normal">
          <li>
            <t>Actor.role and BarNumberHash: supports verification that the user
      is a licensed attorney.</t>
          </li>
          <li>
            <t>HUMAN_OVERRIDE (APPROVE/MODIFY): supports demonstrating attorney
      scrutiny.</t>
          </li>
          <li>
            <t>ModificationHash: supports evidence of attorney modifications.</t>
          </li>
          <li>
            <t>Enforcement Level 1/2: provides system-level friction against use
      of unreviewed outputs.</t>
          </li>
          <li>
            <t>Override Latency monitoring: flags potentially insufficient
      review.</t>
          </li>
        </ul>
        <t>
   In Japan, the <xref target="JAPAN-ATTORNEY-ACT"/> Article 72 prohibits unauthorized
   practice of law.  The <xref target="MOJ-GUIDELINE"/> (August 2023) clarifies that AI
   contract review services may constitute unauthorized practice when
   crossing into dispute-related legal advice.  The <xref target="JFBA-AI-GUIDANCE"/>
   (September 2025) requires that responsibility for legal advice
   remains with the attorney and that AI output cannot reach clients
   without attorney review.  LAP's Human Override Coverage metric
   provides verifiable evidence that these requirements are met.</t>
        <t>
   Japan's AI Promotion Act <xref target="JAPAN-AI-ACT"/> (enacted May 2025, effective
   September 2025) establishes transparency as a statutory principle.
   While no specific audit trail requirements are imposed, the Act's
   agile governance model relies on private-sector technical standards
   for implementation, creating potential demand for frameworks like
   VAP.</t>
      </section>
      <section anchor="sect-19.2">
        <name>High-Risk AI System Governance</name>
        <t>
   Legal AI systems may be classified as high-risk under AI governance
   frameworks such as the [EU-AI-ACT], particularly under Annex III
   <xref target="sect-8"/>(a) which explicitly covers AI systems intended to "assist a judicial authority in researching and interpreting facts and the law."</t>
        <t>
   LAP Silver level and above provides audit trail capabilities that can
   help satisfy the following [EU-AI-ACT] requirements:</t>
        <ul spacing="normal">
          <li>
            <t>Article 12 (Automatic event logging): Hash chain and event logging
      provide automatic recording over the system lifetime.</t>
          </li>
          <li>
            <t>Article 14 (Human oversight): HUMAN_OVERRIDE events document human
      ability to override and reverse AI outputs.</t>
          </li>
          <li>
            <t>Article 18 (10-year documentation retention): Gold level supports
      10-year retention.</t>
          </li>
          <li>
            <t>Article 19 (Minimum 6-month log retention): All conformance levels
      meet this minimum.</t>
          </li>
          <li>
            <t>Tiered content retention with legal hold supports discovery
      obligations under Article 12 and national procedural law.</t>
          </li>
        </ul>
        <t>
   NOTE: Enforcement timelines for Annex III high-risk AI obligations
   are subject to revision.  The core technical requirements under
   Articles 12, 14, 18, and 19 remain stable regardless of enforcement
   timing.  The degree to which LAP capabilities satisfy specific
   regulatory requirements should be evaluated on a per-jurisdiction
   basis.</t>
      </section>
    </section>
    <section anchor="sect-20">
      <name>Security Considerations</name>
      <t>
   This section describes the threat model and security considerations
   for VAP-LAP implementations, following the guidance in <xref target="RFC3552"/>.</t>
      <section anchor="sect-20.1">
        <name>Threat Model</name>
        <t>
   VAP assumes the following attacker capabilities and trust
   assumptions:</t>
        <ul spacing="normal">
          <li>
            <t>Attacker capabilities: An adversary may have read access to the
      event store, network access to observe event traffic, and in some
      scenarios write access to event storage (insider threat).  The
      adversary's goal is to forge, suppress, reorder, or selectively
      disclose provenance events.</t>
          </li>
          <li>
            <t>Trust assumptions: The signing key holder is trusted to sign only
      genuine events.  The external anchoring service is trusted to
      provide accurate timestamps and append-only guarantees.  Verifiers
      are trusted to correctly execute the verification algorithm.</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-20.2">
        <name>Hash Chain Manipulation</name>
        <t>
   An adversary with write access could attempt to modify past events,
   insert fabricated events, or delete events.  The hash chain provides
   integrity: any modification to a past event changes its EventHash,
   breaking the chain at that point.  External anchoring at Silver level
   and above makes post-hoc modification detectable by comparing the
   stored Merkle root against the independently timestamped root.
   Implementations SHOULD use Merkle consistency proofs (per <xref target="RFC9162"/>
   Section 2.1.4) to detect log forking.</t>
      </section>
      <section anchor="sect-20.3">
        <name>Timestamp Manipulation</name>
        <t>
   Timestamp rollback or clock skew can cause false completeness
   verification failures and undermine event ordering guarantees.
   Implementations SHOULD use monotonic time sources and SHOULD cross-
   validate local timestamps against external anchoring timestamps.
   External anchoring at Silver level and above provides an independent
   time reference.  Implementations MUST reject events with timestamps
   that differ from the external anchor timestamp by more than a
   configurable bound (RECOMMENDED: 300 seconds for batch anchoring, 60
   seconds for real-time anchoring).</t>
      </section>
      <section anchor="sect-20.4">
        <name>Insider Threats</name>
        <t>
   An authorized operator could forge events, suppress events before
   they are anchored, or create fabricated ERROR events to satisfy the
   Completeness Invariant while hiding actual outcomes.  Mitigations
   include:</t>
        <ul spacing="normal">
          <li>
            <t>External anchoring makes suppression detectable after anchoring.</t>
          </li>
          <li>
            <t>Gold level implementations SHOULD require multi-party signatures
      for administrative events (Legal Hold, tier changes).</t>
          </li>
          <li>
            <t>Separation of duties: the event signer and the external anchor
      submitter SHOULD be different principals where operationally
      feasible.</t>
          </li>
          <li>
            <t>Completeness Invariant cross-validation against application-layer
      logs (e.g., HTTP request logs) can detect fabricated events at
      audit time.</t>
          </li>
        </ul>
      </section>
      <section anchor="sect-20.5">
        <name>Key Compromise</name>
        <t>
   Compromise of signing keys allows event forgery.  Bronze
   implementations SHOULD rotate keys annually.  Silver MUST rotate
   semi-annually.  Gold MUST use HSM storage (<xref target="FIPS140-3"/>) and quarterly
   rotation.</t>
        <t>
   Upon key compromise detection, the implementation MUST:</t>
        <ol spacing="normal" type="1"><li>
            <t>Immediately revoke the compromised key.</t>
          </li>
          <li>
            <t>Generate a new signing key pair.</t>
          </li>
          <li>
            <t>Record a KEY_ROTATION event signed by the new key, referencing
       the compromised key identifier.</t>
          </li>
          <li>
            <t>Re-anchor all events signed with the compromised key using a
       fresh Merkle tree signed under the new key.</t>
          </li>
          <li>
            <t>Notify all relying parties of the compromise and the validity
       window of the affected key.</t>
          </li>
        </ol>
        <t>
   During key rotation (including non-emergency rotation), the hash
   chain continues unbroken.  The new key signs a KEY_ROTATION event
   that includes the old key's public key hash, establishing chain
   continuity.  Verifiers MUST accept events signed by either key during
   the overlap period specified in the KEY_ROTATION event.</t>
      </section>
      <section anchor="sect-20.6">
        <name>Privacy Leakage</name>
        <t>
   Per-tenant salting prevents cross-tenant hash correlation.
   Implementations MUST NOT share salts across tenants.  Event metadata
   (timestamps, event types, counts) may leak statistical information
   even when content is hashed; this is an inherent limitation of any
   audit trail system.  Selective disclosure via Merkle proofs
   (<xref target="sect-7.3"/>) enables verifiers to inspect specific events without
   accessing the full event store, reducing exposure.</t>
        <t>
   For privacy analysis guidance, see <xref target="RFC6973"/>.</t>
      </section>
      <section anchor="sect-20.7">
        <name>Availability Attacks</name>
        <t>
   Denial-of-service attacks against the logging infrastructure could
   prevent event recording, violating completeness.  Gold level
   implementations MUST have geographic redundancy.  Implementations
   SHOULD buffer events locally when the central event store is
   unavailable, and MUST reconcile buffered events upon reconnection.</t>
      </section>
      <section anchor="sect-20.8">
        <name>Denial of Provenance</name>
        <t>
   A signer could repudiate previously signed events.  External
   anchoring provides non-repudiation: the independently timestamped
   Merkle root proves the event existed at the anchor time.  Combined
   with the signer's public key bound to their identity, this provides
   evidence against repudiation.</t>
      </section>
      <section anchor="sect-20.9">
        <name>Selective Disclosure Attacks</name>
        <t>
   An adversary could present only favorable events to a verifier,
   hiding unfavorable records.  The Completeness Invariant detects such
   omissions: any missing outcome event will cause the invariant to fail
   for the affected pipeline.  External anchoring of Merkle roots makes
   it infeasible to present a consistent subset of events that satisfies
   the invariant if any events have been omitted.</t>
      </section>
      <section anchor="sect-20.10">
        <name>Replay Attacks</name>
        <t>
   An adversary could replay valid events from one context into another.
   The chain_id field binds events to a specific chain, and the
   prev_hash field creates a strict ordering dependency that makes
   replayed events detectable (they will break the hash chain at the
   insertion point).  UUIDv7 event identifiers provide globally unique,
   time-ordered identification that further constrains replay.</t>
      </section>
      <section anchor="sect-20.11">
        <name>Content Retention and Discovery Risk</name>
        <t>
   The tension between privacy-preserving hash-only retention and
   judicial discovery obligations creates a risk that hash-only evidence
   may be deemed insufficient by courts.  The Tiered Retention model
   (<xref target="sect-11.2"/>) mitigates this by maintaining recoverable content
   during periods when discovery is most likely, while the Legal Hold
   Protocol (<xref target="sect-11.4"/>) prevents premature content destruction when
   litigation is anticipated.</t>
      </section>
      <section anchor="sect-20.12">
        <name>Override Enforcement Circumvention</name>
        <t>
   Enforcement Levels 1 and 2 (<xref target="sect-16.2"/>) can be circumvented by
   users who copy AI output through means outside the system's control
   (e.g., screen capture, manual transcription).  Technical enforcement
   addresses the common case of system-mediated export but cannot
   prevent all forms of circumvention.  The provenance chain nonetheless
   records the absence of HUMAN_OVERRIDE events, providing post-hoc
   accountability.</t>
      </section>
      <section anchor="sect-20.13">
        <name>Rapid Approval Gaming</name>
        <t>
   Users aware of the Override Latency threshold (<xref target="sect-16.4"/>) might
   delay approval clicks to avoid the RAPID_APPROVAL_FLAG.  This is a
   known limitation.  Statistical analysis of approval latency
   distributions across users and document types can detect such gaming
   patterns in audit reviews.</t>
      </section>
      <section anchor="sect-20.14">
        <name>Legal Hold Integrity</name>
        <t>
   Legal Hold activation and release events must be protected from
   unauthorized modification.  Gold level implementations SHOULD require
   multi-party authorization for Legal Hold release.</t>
      </section>
    </section>
    <section anchor="sect-21">
      <name>IANA Considerations</name>
      <section anchor="sect-21.1">
        <name>Media Type Registration</name>
        <t>
   IANA is requested to register the following media types in the "Media Types" registry:</t>
        <section anchor="sect-21.1.1">
          <name>application/vap-evidence-pack+zip</name>
          <dl newline="false" spacing="normal" indent="3">
            <dt>Type name:</dt>
            <dd>
              <t>
	application
              </t>
              <t/>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t>
	vap-evidence-pack+zip
              </t>
              <t/>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>
	None
              </t>
              <t/>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>
	profile (string): VAP profile identifier (e.g.,
              </t>
              <t>
	"LAP", "VCP")
              </t>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>
	binary (ZIP archive)
              </t>
              <t/>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t>
	Evidence Packs contain signed provenance
              </t>
              <t>
	data.  Implementations MUST verify the pack-level signature before
      processing.  The pack may contain privacy-sensitive metadata;
      access control is the responsibility of the implementation.  See
      Section 20 of this document.
              </t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>
	The internal structure follows
              </t>
              <t><xref target="sect-9.1"/>.  Implementations MUST support the manifest.json
      format defined in <xref target="sect-9.2"/>.
              </t>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>
	This document
              </t>
              <t/>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>
	AI audit trail systems,
              </t>
              <t>
	regulatory submission tools, third-party verification services
   Fragment identifier considerations:  N/A
              </t>
            </dd>
            <dt>Additional information:</dt>
            <dd>
              <t>
	N/A
              </t>
              <t/>
            </dd>
            <dt>Contact:</dt>
            <dd>
              <t>
	AILEX LLC, info@ailex.co.jp
              </t>
              <t/>
            </dd>
            <dt>Author:</dt>
            <dd>
              <t>
	Shintaro Yamakawa
              </t>
              <t/>
            </dd>
            <dt>Change controller:</dt>
            <dd>
              <t>
	IETF
              </t>
              <t/>
            </dd>
          </dl>
        </section>
        <section anchor="sect-21.1.2">
          <name>application/vap-manifest+json</name>
          <dl newline="false" spacing="normal" indent="3">
            <dt>Type name:</dt>
            <dd>
              <t>
	application
              </t>
              <t/>
            </dd>
            <dt>Subtype name:</dt>
            <dd>
              <t>
	vap-manifest+json
              </t>
              <t/>
            </dd>
            <dt>Required parameters:</dt>
            <dd>
              <t>
	None
              </t>
              <t/>
            </dd>
            <dt>Optional parameters:</dt>
            <dd>
              <t>
	None
              </t>
              <t/>
            </dd>
            <dt>Encoding considerations:</dt>
            <dd>
              <t>
	UTF-8 encoded JSON per <xref target="RFC8259"/>
              </t>
              <t/>
            </dd>
            <dt>Security considerations:</dt>
            <dd>
              <t>
	The manifest is integrity-protected as part
              </t>
              <t>
	of the Evidence Pack signature.  See <xref target="sect-20"/>.
              </t>
            </dd>
            <dt>Interoperability considerations:</dt>
            <dd>
              <t>
	JSON format per <xref target="sect-9.2"/>.
              </t>
              <t/>
            </dd>
            <dt>Published specification:</dt>
            <dd>
              <t>
	This document
              </t>
              <t/>
            </dd>
            <dt>Applications that use this media type:</dt>
            <dd>
              <t>
	AI audit trail systems
              </t>
              <t/>
            </dd>
            <dt>Contact:</dt>
            <dd>
              <t>
	AILEX LLC, info@ailex.co.jp
              </t>
              <t/>
            </dd>
            <dt>Author:</dt>
            <dd>
              <t>
	Shintaro Yamakawa
              </t>
              <t/>
            </dd>
            <dt>Change controller:</dt>
            <dd>
              <t>
	IETF
              </t>
              <t/>
            </dd>
          </dl>
        </section>
      </section>
      <section anchor="sect-21.2">
        <name>VAP Domain Profile Registry</name>
        <t>
   IANA is requested to create a "VAP Domain Profile Identifiers"
   registry with the following initial entries.  The registration policy
   is Specification Required per <xref target="RFC8126"/> Section 4.6.<!--
   draft-03-fix.txt(2462): Warning: Unexpected title: expected 'Figure ...', found
   'Table 9: VAP Domain Profile Identifiers'.  This looks like a figure that has
   been entered as a texttable.  The generated XML will need adjustment.
   -->
        </t>
        <figure anchor="le-vap-domain-profile-identifiers">
          <name>VAP Domain Profile Identifiers</name>
          <artwork><![CDATA[
 +============+=======================+================+===========+
 | Profile ID | Full Name             | Domain         | Reference |
 +============+=======================+================+===========+
 | VCP        | VeritasChain Protocol | Finance        | This      |
 |            |                       |                | document  |
 +------------+-----------------------+----------------+-----------+
 | CAP        | Content AI Profile    | Content/       | This      |
 |            |                       | Creative AI    | document  |
 +------------+-----------------------+----------------+-----------+
 | LAP        | Legal AI Profile      | Legal AI /     | This      |
 |            |                       | LegalTech      | document  |
 +------------+-----------------------+----------------+-----------+
 | DVP        | Driving/Vehicle       | Automotive     | Reserved  |
 |            | Profile               |                |           |
 +------------+-----------------------+----------------+-----------+
 | MAP        | Medical AI Profile    | Healthcare     | Reserved  |
 +------------+-----------------------+----------------+-----------+
 | PAP        | Public Admin Profile  | Public         | Reserved  |
 |            |                       | Administration |           |
 +------------+-----------------------+----------------+-----------+
]]></artwork>
        </figure>
        <t>
   Each registration MUST include: Profile ID (1-4 uppercase ASCII
   characters), Full Name, Domain description, and a reference to the
   defining specification.</t>
      </section>
      <section anchor="sect-21.3">
        <name>VAP Event Type Registry</name>
        <t>
   IANA is requested to create a "VAP Event Types" registry.  The
   registration policy is Specification Required per <xref target="RFC8126"/>
   Section 4.6.  Initial entries include all event types defined in
   Section 14 of this document.</t>
      </section>
    </section>
    <section anchor="sect-22">
      <name>Relationship to Other Work</name>
      <t>
   Several IETF efforts address aspects of AI accountability and
   provenance.  This section clarifies how VAP relates to and
   complements these efforts.</t>
      <dl newline="false" spacing="normal" indent="3">
        <dt>IETF SCITT ([IETF-SCITT])</dt>
        <dd>
          <t>
	SCITT provides content-agnostic
          </t>
          <t>
	transparency infrastructure for digital supply chains.  VAP
      Evidence Packs can be registered as SCITT Signed Statements,
      leveraging SCITT's append-only guarantees and inclusion proofs to
      strengthen VAP's external anchoring.  VAP and SCITT are
      complementary: SCITT provides the transparency infrastructure,
      while VAP defines what goes into the payload (domain-specific
      provenance events with completeness guarantees).
          </t>
        </dd>
        <dt>IETF RATS / EAT (RFC 9711)</dt>
        <dd>
          <t>
	The Remote Attestation Procedures (RATS)
          </t>
          <t>
	architecture and Entity Attestation Token (EAT) format address
      device and software integrity attestation.  VAP could leverage EAT
      claims for attesting the integrity of AI model components within
      the provenance chain.  The two frameworks operate at different
      layers: RATS/EAT attests what the system is, while VAP records
      what the system did.
          </t>
        </dd>
        <dt>IETF AIPREF Working Group</dt>
        <dd>
          <t>
	AIPREF standardizes preferences about AI
          </t>
          <t>
	content usage (input-side concern).  VAP addresses output-side
      accountability.  The two are naturally complementary: VAP audit
      trails could prove that an AI system honored AIPREF preferences.
          </t>
        </dd>
        <dt>draft-reilly-sentinel-protocol</dt>
        <dd>
          <t>
	The Sentinel Protocol defines
          </t>
          <t>
	evidence packages for AI lifecycle provenance covering datasets,
      training, and inference.  VAP differentiates through: (1) domain-
      specific profiles (e.g., LAP) with regulatory mappings, (2) the
      Completeness Invariant preventing omission attacks, and (3) tiered
      conformance levels mapping to specific regulatory requirements.
      The two specifications could be complementary, with Sentinel
      addressing model lifecycle and VAP addressing operational decision
      provenance.
          </t>
        </dd>
        <dt>ISO/IEC Standards</dt>
        <dd>
          <t>
	ISO/IEC 42001 (AI Management System), ISO/IEC
          </t>
          <t>
	42005 (AI Impact Assessment), and the emerging ISO/IEC 24970 (AI
      System Logging) define architecture-agnostic requirements that
      VAP's technical mechanisms can satisfy.  VAP conformance levels
      are designed to map to these frameworks' requirements.
          </t>
        </dd>
      </dl>
      <section anchor="sect-22.1">
        <name>Relationship with DMSC and Multi-Agent Collaboration Frameworks</name>
        <t>
   This section clarifies how VAP-LAP relates to Dynamic Multi-agent
   Secured Collaboration (DMSC) and broader secure multi-agent
   collaboration frameworks.</t>
        <t>NOTE: The acronym "DMSC" has also been used in IETF contexts to
   refer to "Distributed Micro Service Communication"
   <xref target="DMSC-BOF"/><xref target="DMSC-ARCH"/><xref target="DMSC-TECH"/>.
   In this document, "DMSC" refers to the Dynamic Multi-agent Secured
   Collaboration effort as described in the IETF DMSC charter, which
   addresses secure collaboration among AI agents and microservice-based
   AI components.</t>
        <section anchor="sect-22.1.1">
          <name>Scope Differentiation</name>
          <t>DMSC and related multi-agent collaboration frameworks address
          the problem of enabling multiple AI agents (or microservice-based
          AI components) to communicate, coordinate, and collaborate securely
          across distributed environments.  These frameworks define mechanisms
          for authenticated inter-agent messaging, dynamic trust establishment,
          service discovery, secure session management, and policy-based
          coordination among heterogeneous AI agents.</t>
          <t>VAP-LAP addresses a complementary problem: defining
          domain-specific provenance requirements for the judgments, decisions,
          and outputs produced by AI systems -- whether those systems operate
          as single agents or as participants in multi-agent collaboration
          sessions.  The Legal AI Profile (LAP) further specializes these
          provenance requirements for the judicial AI domain, addressing
          attorney oversight verification, completeness invariants across
          legal consultation pipelines, and privacy-preserving audit trails
          that maintain attorney-client privilege.</t>
          <t>In summary:</t>
          <ul spacing="normal">
            <li>
              <t>DMSC provides the secure multi-agent collaboration and
      transport infrastructure through which AI agents interact.</t>
            </li>
            <li>
              <t>VAP defines what provenance records those agents MUST produce
      and how those records are cryptographically linked, anchored,
      and verified.</t>
            </li>
            <li>
              <t>LAP imposes domain-specific provenance constraints on legal
      AI agents, regardless of the collaboration framework through
      which they operate.</t>
            </li>
          </ul>
        </section>
        <section anchor="sect-22.1.2">
          <name>Complementary Layering</name>
          <t>
   VAP is designed to operate as a provenance and domain profile
   layer that sits above collaboration and transport mechanisms.
   DMSC and similar frameworks can provide the underlying transport,
   attestation, and collaboration mechanisms that support VAP
   provenance capture.</t>
          <t>
   The following diagram illustrates the complementary layering:</t>
          <figure anchor="ure-vap-lap-and-dmsc-layered-architecture">
            <name>VAP-LAP and DMSC Layered Architecture</name>
            <artwork><![CDATA[
+----------------------------------------------------------+
|  Application Layer                                       |
|  (Legal AI Systems, Document Generation, Fact-Checking)  |
+----------------------------------------------------------+
|  Domain Profile Layer                                    |
|  (LAP: Legal AI Profile -- domain-specific provenance    |
|   constraints, attorney oversight, pipeline completeness)|
+----------------------------------------------------------+
|  Provenance / Anchoring Layer                            |
|  (VAP: hash chains, Evidence Packs, conformance levels,  |
|   completeness invariant, SCITT, RFC 3161 anchoring)     |
+----------------------------------------------------------+
|  Collaboration Layer                                     |
|  (DMSC / Multi-Agent Frameworks: secure inter-agent      |
|   communication, agent coordination, trust management)   |
+----------------------------------------------------------+
|  Security / Transport Layer                              |
|  (TLS, RATS/EAT attestation, policy-based routing,      |
|   authenticated channels)                                |
+----------------------------------------------------------+
]]></artwork>
          </figure>
          <t>
   This layering reflects the principle that provenance recording
   (VAP) and provenance constraints (LAP) are orthogonal to the
   choice of agent collaboration framework.  A legal AI system
   participating in a DMSC-orchestrated multi-agent workflow
   produces VAP-conformant provenance records in the same manner
   as a standalone legal AI system; the collaboration framework
   is transparent to the provenance layer.</t>
        </section>
        <section anchor="sect-22.1.3">
          <name>Integration Points</name>
          <t>
   Several concrete integration points exist between VAP-LAP and
   DMSC-class frameworks:</t>
          <dl newline="false" spacing="normal" indent="3">
            <dt>Agent Identity and Attestation:</dt>
            <dd>
              <t>DMSC's service identity mechanisms (e.g., Service Verifiable
              Identity Documents) can be referenced in the VAP actor_id field,
              establishing a verifiable link between the collaborating agent's
              identity and its provenance records.</t>
            </dd>
            <dt>Inter-Agent Provenance Linking:</dt>
            <dd>
              <t>When multiple agents collaborate on a legal AI task, each
              agent's VAP events can reference upstream agent outputs via the
              causal_link field (<xref target="sect-5"/>), enabling end-to-end
              AI agent collaboration provenance across the multi-agent
              workflow.</t>
            </dd>
            <dt>Transport-Layer Anchoring:</dt>
            <dd>
              <t>DMSC's secure communication channels can serve as a transport
              mechanism for VAP Evidence Pack submission to external anchoring
              services (<xref target="sect-7"/>), leveraging the collaboration
              framework's existing authentication and integrity guarantees.</t>
            </dd>
            <dt>Collaboration Session Binding:</dt>
            <dd>
              <t>A DMSC collaboration session identifier can be included in the
              VAP chain_id field (<xref target="sect-5"/>), binding all
              provenance events from a multi-agent collaboration session into a
              single verifiable chain.  Alternatively, implementations MAY
              carry session identifiers within the domain_payload extension
              point defined by the applicable provenance profile.</t>
            </dd>
          </dl>
          <t>
   NOTE: DMSC's content-semantic approach to service routing and
   agent discovery is complementary to VAP's provenance model.
   VAP does not prescribe a specific routing or discovery mechanism;
   implementations deploying VAP over DMSC infrastructure can
   leverage content-semantic routing transparently.</t>
        </section>
        <section anchor="sect-22.1.4">
          <name>Non-Dependency Statement</name>
          <t>VAP-LAP does not depend on DMSC or any specific multi-agent
          collaboration framework.  VAP-conformant implementations MAY
          operate with DMSC, with alternative collaboration frameworks,
          or without any multi-agent collaboration layer.  Similarly,
          DMSC deployments do not require VAP for their core
          functionality.</t>
          <t>
   The two specifications are independently deployable and
   independently useful; their combination provides additional
   value by enabling verifiable provenance for secure multi-agent
   AI collaboration in high-risk domains.</t>
        </section>
      </section>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <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.8032.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.9562.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3161.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5816.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.4648.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.9162.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3629.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3552.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6973.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7696.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9794.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6962.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6979.xml"/>
        <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 and Council</organization>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="Official Journal of the European Union" value="L 2024/1689"/>
        </reference>
        <reference anchor="JAPAN-ATTORNEY-ACT">
          <front>
            <title>Attorney Act (Bengoshi-ho), Act No. 205 of 1949</title>
            <author>
              <organization>Government of Japan</organization>
            </author>
            <date year="1949"/>
          </front>
        </reference>
        <reference anchor="MOJ-GUIDELINE">
          <front>
            <title>Regarding the Relationship between AI-based Contract Document Support Services and Attorney Act Article 72</title>
            <author>
              <organization>Ministry of Justice, Japan</organization>
            </author>
            <date month="August" year="2023"/>
          </front>
        </reference>
        <reference anchor="JFBA-AI-GUIDANCE">
          <front>
            <title>Precautions Regarding the Use of Generative AI in Attorney Practice</title>
            <author>
              <organization>Japan Federation of Bar Associations</organization>
            </author>
            <date month="September" year="2025"/>
          </front>
        </reference>
        <reference anchor="JAPAN-AI-ACT">
          <front>
            <title>Act on Promotion of Development and Use of AI-related Technologies (AI Promotion Act)</title>
            <author>
              <organization>Government of Japan</organization>
            </author>
            <date month="May" year="2025"/>
          </front>
        </reference>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-scitt-architecture.xml"/>
        <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-scitt-scrapi.xml"/>
        <reference anchor="GDPR">
          <front>
            <title>Regulation (EU) 2016/679 - General Data Protection Regulation</title>
            <author>
              <organization>European Parliament and Council</organization>
            </author>
            <date year="2016"/>
          </front>
        </reference>
        <reference anchor="FIPS203">
          <front>
            <title>Module-Lattice-Based Key-Encapsulation Mechanism Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="FIPS" value="203"/>
        </reference>
        <reference anchor="FIPS204">
          <front>
            <title>Module-Lattice-Based Digital Signature Standard</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date month="August" year="2024"/>
          </front>
          <seriesInfo name="FIPS" value="204"/>
        </reference>
        <reference anchor="FIPS140-3">
          <front>
            <title>Security Requirements for Cryptographic Modules</title>
            <author>
              <organization>National Institute of Standards and Technology</organization>
            </author>
            <date month="March" year="2019"/>
          </front>
          <seriesInfo name="FIPS" value="140-3"/>
        </reference>
        <reference anchor="DMSC-BOF" target="https://datatracker.ietf.org/doc/bofreq-wang-distributed-micro-services-communicationdmsc/">
          <front>
            <title>Distributed Micro Services Communication (DMSC) BOF Request</title>
            <author initials="A." surname="Wang" fullname="A. Wang" role="editor">
	</author>
            <date year="2024"/>
          </front>
        </reference>
        <reference anchor="DMSC-ARCH" target="https://datatracker.ietf.org/doc/draft-li-dmsc-architecture/">
          <front>
            <title>Distributed Micro Service Communication architecture based on Content Semantic</title>
            <author initials="X." surname="Li" fullname="Xueting Li"/>
            <author initials="A." surname="Wang" fullname="Aijun Wang"/>
            <author initials="W." surname="Wang" fullname="Wei Wang"/>
            <author initials="D." surname="Kutscher" fullname="Dirk Kutscher"/>
            <date year="2025"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-li-dmsc-architecture-01"/>
        </reference>
        <reference anchor="DMSC-TECH" target="https://datatracker.ietf.org/doc/draft-yuan-dmsc-technical-considerations/">
          <front>
            <title>Technical Considerations for Distributed Micro Services Communication</title>
            <author initials="M." surname="Yuan" fullname="M. Yuan" role="editor"/>
            <date year="2025"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-yuan-dmsc-technical-considerations-01"/>
        </reference>
        <reference anchor="DMSC-DTA" target="https://datatracker.ietf.org/doc/draft-si-service-mesh-dta/">
          <front>
            <title>Dynamic Trust Security Architecture for Distributed Service Mesh</title>
            <author initials="X." surname="Si" fullname="Xuan Si"/>
            <date year="2025"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-si-service-mesh-dta-01"/>
        </reference>
      </references>
    </references>
    <section anchor="sect-a">
      <name>Profile Comparison</name>
      <!--
   draft-03-fix.txt(2916): Warning: Unexpected title: expected 'Figure ...', found
   'Table 10: Comparison of VAP Domain Profiles'.  This looks like a figure that
   has been entered as a texttable.  The generated XML will need adjustment.
   -->
      <figure anchor="le-comparison-of-vap-domain-profiles">
        <name>Comparison of VAP Domain Profiles</name>
        <artwork><![CDATA[
+============+============+================+========================+
| Aspect     | VCP        | CAP (Content)  | LAP (Legal)            |
|            | (Finance)  |                |                        |
+============+============+================+========================+
| Time       | Nanosecond | Second         | Second                 |
| Precision  |            |                |                        |
+------------+------------+----------------+------------------------+
| Key        | SIG to ORD | GEN_ATTEMPT to | 3 Pipeline             |
| Invariant  |            | GEN/DENY/ERROR | Invariants             |
+------------+------------+----------------+------------------------+
| Unique     | Signal     | Safe Refusal   | Human Override         |
| Feature    | integrity  | (SRP)          | Coverage +             |
|            |            |                | Enforcement            |
+------------+------------+----------------+------------------------+
| Regulatory | Financial  | Content        | Attorney               |
| Focus      | regulation | regulation     | regulation + AI        |
|            |            |                | governance             |
+------------+------------+----------------+------------------------+
| Privacy    | Trade data | Creative       | Professional           |
| Model      |            | content        | privilege +            |
|            |            |                | Tiered Retention       |
+------------+------------+----------------+------------------------+
| Retention  | 5 years    | 5 years        | 10 years               |
| (Gold)     |            |                |                        |
+------------+------------+----------------+------------------------+
]]></artwork>
      </figure>
    </section>
    <section anchor="sect-b">
      <name>Validation Requirements</name>
      <t>
   Bronze level implementations MUST validate that all events conform to
   the Common Event Structure (<xref target="sect-5"/>).  At minimum, validation MUST
   check:</t>
      <ul spacing="normal">
        <li>
          <t>All REQUIRED top-level fields are present: vap_version, profile,
      header, provenance, accountability, security.</t>
        </li>
        <li>
          <t>header.event_id is a valid UUIDv7.</t>
        </li>
        <li>
          <t>header.timestamp conforms to <xref target="RFC3339"/>.</t>
        </li>
        <li>
          <t>header.prev_hash is either null (genesis) or matches the pattern
      "{algo_id}:{hex_string}" where algo_id is a canonical algorithm
      identifier from Table 2.</t>
        </li>
        <li>
          <t>security.event_hash matches the recomputed hash over the Hash
      Input.</t>
        </li>
        <li>
          <t>security.signature is present and valid for the specified
      sign_algo.</t>
        </li>
        <li>
          <t>header.causal_link.target_event_id is either null or a valid
      UUIDv7.</t>
        </li>
      </ul>
      <t>
   Formal JSON Schema definitions will be published as a companion
   document or hosted at a stable URI referenced in a future revision of
   this specification.</t>
    </section>
    <section anchor="sect-c">
      <name>Implementation Status</name>
      <t>
   This section records the status of known implementations of the
   protocol defined by this specification at the time of posting of this
   Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>.
   The description of implementations in this section is intended to
   assist the IETF in its decision processes in progressing drafts to
   RFCs.  Please note that the listing of any individual implementation
   here does not imply endorsement by the IETF.  Furthermore, no effort
   has been spent to verify the information presented here that was
   supplied by IETF contributors.  This is not intended as, and must not
   be construed to be, a catalog of available implementations or their
   features.  Readers are advised to note that other implementations may
   exist.</t>
      <t>
   According to <xref target="RFC7942"/>, "this section, as well as the cited RFC, should be removed before the document is approved for publication as an RFC."</t>
      <dl newline="false" spacing="normal" indent="3">
        <dt>AILEX SaaS Platform</dt>
        <dd>
          <t>
	Organization: AILEX LLC.  Description:
          </t>
          <t>
	Production implementation of VAP-LAP for legal AI services
      including AI-powered consultation, document generation, and fact-
      checking.  Maturity: Bronze-level conformance (hash chain
      integrity, digital signatures, event logging, UUIDv7 identifiers)
      with select Silver-level features implemented on an experimental
      basis: three-pipeline completeness invariant, privacy-preserving
      fields with per-tenant salting, and override coverage tracking.
      External anchoring and Evidence Pack generation (Silver REQUIRED)
      are not yet implemented.  Licensing: Proprietary.  URL:
      <eref target="https://users.ailex.co.jp"/> </t>
        </dd>
      </dl>
    </section>
    <section anchor="sect-d">
      <name>Change Log</name>
      <t>
   This section tracks changes between Internet-Draft revisions and will
   be removed before publication.</t>
      <ul spacing="normal">
        <li>
          <t>Added <xref target="sect-22.1"/> "Relationship with DMSC and Multi-Agent Collaboration Frameworks" with four subsections: Scope
      Differentiation, Complementary Layering, Integration Points,
      and Non-Dependency Statement.</t>
        </li>
        <li>
          <t>Added layered architecture diagram (Figure 1) illustrating
      the complementary positioning of Application Layer, Domain
      Profile Layer (LAP), Provenance/Anchoring Layer (VAP),
      Collaboration Layer (DMSC), and Security/Transport Layer.</t>
        </li>
        <li>
          <t>Added disambiguation NOTE clarifying that "DMSC" in this
      document refers to Dynamic Multi-agent Secured Collaboration,
      with cross-reference to the Distributed Micro Service
      Communication usage of the same acronym.</t>
        </li>
        <li>
          <t>Added terminology entries: Secure Multi-Agent Collaboration,
      AI Agent Collaboration Provenance, Provenance Profile, and
      Domain-Specific Provenance Constraints (<xref target="sect-2.1"/>).</t>
        </li>
        <li>
          <t>Defined integration points between VAP-LAP and DMSC-class
      frameworks using existing Common Event Structure fields
      (actor_id, causal_link, chain_id, domain_payload) without
      introducing new fields (<xref target="sect-22.1.3"/>).</t>
        </li>
        <li>
          <t>Clarified that VAP-LAP operates as a provenance and domain
      profile layer independent of any specific collaboration
      framework, while identifying concrete integration points
      with DMSC-class architectures.</t>
        </li>
      </ul>
      <artwork><![CDATA[
*  Added informative references DMSC-BOF, DMSC-ARCH,
   DMSC-TECH, DMSC-DTA.
]]></artwork>
      <ul spacing="normal">
        <li>
          <t>Updated vap_version from 1.3 to 1.4.</t>
        </li>
        <li>
          <t>Updated LAP Profile Version from 0.4.0 to 0.5.0.</t>
        </li>
      </ul>
      <t>
   draft-ailex-vap-legal-ai-provenance-02</t>
      <ul spacing="normal">
        <li>
          <t>Added individual author name (Shintaro Yamakawa) per IETF
      guidelines requiring personal author identification.</t>
        </li>
        <li>
          <t>Fixed cryptographic algorithm naming: Kyber-1024 renamed to ML-
      KEM-1024 per FIPS 203 standardization; separated into distinct KEM
      category from Encryption.  Added ML-DSA-65 parameter set selection
      rationale.</t>
        </li>
        <li>
          <t>Resolved EventHash circular reference: defined explicit Hash Input
      excluding security.event_hash and security.signature from
      canonicalization input (<xref target="sect-4.2"/>).</t>
        </li>
        <li>
          <t>Resolved crypto agility contradiction: hash chain and signature
      formulas now parameterized by hash_algo/sign_algo fields instead
      of hardcoding SHA-256/Ed25519.  Added Algorithm Migration
      procedure (<xref target="sect-4.4"/>) with post-quantum readiness subsection
      referencing FIPS 204 and RFC 9794.</t>
        </li>
        <li>
          <t>Updated Merkle tree construction to follow RFC 9162 (replacing
      obsoleted RFC 6962), with domain separation prefixes and correct
      handling of non-power-of-two leaf counts (<xref target="sect-7.3"/>).</t>
        </li>
        <li>
          <t>Fixed encoding specifications: timestamps now require RFC 3339;
      Base64 encoding now requires RFC 4648 <xref target="sect-5"/> (URL-safe, no
      padding); hash values standardized as lowercase hex; RFC 8259
      added to normative references (<xref target="sect-5"/>).</t>
        </li>
        <li>
          <t>Updated FIPS 140-2/3 to FIPS 140-3 as primary requirement with
      transition period note (<xref target="sect-6.3"/>).</t>
        </li>
        <li>
          <t>Added RFC 5816 (ESSCertIDv2) as normative reference for RFC 3161
      TSA SHA-256 support (<xref target="sect-7.1"/>).</t>
        </li>
        <li>
          <t>Specified anchor_proof structure per anchor_type with type-
      specific fields and verification procedures (<xref target="sect-7.2"/>).</t>
        </li>
        <li>
          <t>Added Completeness Invariant grace period maximum of 300 seconds
      with TIMEOUT_ERROR mechanism (<xref target="sect-8"/>).</t>
        </li>
        <li>
          <t>Added standardized causal_link field in header for all event
      types, with link_type enumeration (<xref target="sect-5"/>).</t>
        </li>
        <li>
          <t>Fixed Override Coverage metric: numerator changed to count
      distinct target_event_id to prevent exceeding 100%.  DENY removed
      from denominator with rationale documented (<xref target="sect-16.1"/>).</t>
        </li>
        <li>
          <t>Added salt management requirements: 256-bit minimum entropy, HMAC-
      SHA-256 for low-entropy fields, rotation and compromise response
      procedures (<xref target="sect-10.1"/>).</t>
        </li>
        <li>
          <t>Added minimum verification API with HTTP endpoints for Silver and
      Gold levels (<xref target="sect-12.1"/>).</t>
        </li>
        <li>
          <t>Added Bronze-level validation requirements specifying minimum
      field presence and type checking (Appendix B).</t>
        </li>
        <li>
          <t>Expanded Security Considerations with explicit threat model, 12
      specific threat analyses per RFC 3552, key rotation procedures,
      and denial-of-provenance mitigation (<xref target="sect-20"/>).</t>
        </li>
        <li>
          <t>Expanded IANA Considerations with media type registration
      templates, VAP Domain Profile registry, and VAP Event Type
      registry per RFC 8126 (<xref target="sect-21"/>).</t>
        </li>
        <li>
          <t>Added GDPR interaction subsection addressing right-to- erasure vs.
      audit trail tension (<xref target="sect-11.1"/>).</t>
        </li>
        <li>
          <t>Added escrow custodian requirements for Tier 2 content recovery
      (<xref target="sect-11.4"/>).</t>
        </li>
        <li>
          <t>Added Relationship to Other Work section positioning VAP relative
      to SCITT, RATS/EAT, AIPREF, Sentinel Protocol, and ISO/IEC
      standards (<xref target="sect-22"/>).</t>
        </li>
        <li>
          <t>Added Implementation Status appendix per RFC 7942 (Appendix C).</t>
        </li>
        <li>
          <t>Added Japan AI Promotion Act (2025) to regulatory alignment
      references.</t>
        </li>
        <li>
          <t>Added SALT_ROTATION event type to LAP administrative events
      (<xref target="sect-14.5"/>).</t>
        </li>
        <li>
          <t>Removed EIP from profile.id enumeration (undefined profile).</t>
        </li>
        <li>
          <t>Normalized all algorithm identifiers to lowercase hyphenated ASCII
      strings with explicit canonical mapping table (<xref target="sect-4.1"/>).
      Resolved inconsistency between field values (e.g., "SHA-256") and
      wire prefixes (e.g., "sha256:") by unifying on a single form
      (e.g., "sha-256" / "sha-256:").</t>
        </li>
        <li>
          <t>Added UTF-8 encoding requirement for all text fields (<xref target="sect-5"/>,
      RFC 3629).</t>
        </li>
        <li>
          <t>Updated vap_version from 1.2 to 1.3.</t>
        </li>
        <li>
          <t>Updated LAP Profile Version from 0.3.0 to 0.4.0.</t>
        </li>
        <li>
          <t>Updated Abstract to reference SCITT.</t>
        </li>
      </ul>
      <t>
   draft-ailex-vap-legal-ai-provenance-01</t>
      <ul spacing="normal">
        <li>
          <t>Added Tiered Content Retention model (<xref target="sect-11.2"/>).</t>
        </li>
        <li>
          <t>Added Legal Hold Protocol (<xref target="sect-11.5"/>) with five trigger types.</t>
        </li>
        <li>
          <t>Added Judicial Disclosure Response procedures (Section 11.6).</t>
        </li>
        <li>
          <t>Expanded Override Coverage with four-level Enforcement Framework.</t>
        </li>
        <li>
          <t>Added Override Latency Threshold with Rapid Approval Flag.</t>
        </li>
        <li>
          <t>Added <xref target="sect-16.5"/> acknowledging structural limitations.</t>
        </li>
        <li>
          <t>Added seven new event types for retention and enforcement.</t>
        </li>
        <li>
          <t>Extended Evidence Pack manifest with retention_status and
      enforcement_metrics.</t>
        </li>
        <li>
          <t>Updated LAP Profile Version from 0.2.0 to 0.3.0.</t>
        </li>
      </ul>
      <t>
   draft-ailex-vap-legal-ai-provenance-00 Initial submission.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>
   The VAP Framework and LAP Profile were developed with input from: the
   CAP v1.0 Safe Refusal Provenance (SRP) design experience, the VCP
   v1.1 operational feedback, regulatory engagement from legal
   practitioners, and open-source community contributions.</t>
      <t>
   LAP v0.4 design draws from the AILEX SaaS reference implementation,
   the Ministry of Justice guideline on AI services and
   <xref target="JAPAN-ATTORNEY-ACT"/> Article 72 (August 2023), the <xref target="JFBA-AI-GUIDANCE"/>
   on generative AI in attorney practice (September 2025), and
   operational feedback from pilot law firms regarding judicial
   discovery and attorney oversight workflows.</t>
      <t>
   The authors thank the reviewers who provided detailed technical
   feedback on the -01 draft, particularly regarding cryptographic
   algorithm naming accuracy, hash computation clarity, Merkle tree
   construction consistency, and IANA registration completeness.</t>
    </section>
  </back>
</rfc>
