<?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-05" category="exp" ipr="trust200902" symRefs="true" sortRefs="false" tocInclude="true" version="3">
  <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-05"/>
    <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="October" day="26"/>
    <abstract><t>This document specifies an experimental Legal AI Profile (LAP) for verifiable AI provenance, informed by the Verifiable AI Provenance (VAP) Framework. It defines event signatures, hash chains, signed batch commitments, external anchoring, and evidence packages for legal consultation, document generation, and fact checking.</t><t>This revision aligns the LAP design with a pinned VAP v1.2.0 Draft 3 baseline. All LAP levels require Merkle trees and external anchoring. LAP Bronze, Silver, and Gold remain profile-specific levels; they do not establish VAP Core, Standard, or Full conformance. The document also defines bounded recovery, erasure records, human review records, and legal hold controls.</t><t>Verification concerns recorded evidence within a declared scope. It does not prove that every real-world operation was captured, that an AI output is correct, or that legal obligations have been met. This is an individual Internet-Draft and a proposed profile, not an IETF standard or a registered VAP profile.</t></abstract></front>
  <middle>
    <section anchor="sect-1"><name>Introduction</name><t>Legal AI systems need inspectable records of inputs, outputs, actors, and human review. Cryptographic evidence can make later alteration detectable while leaving questions about capture accuracy, professional judgment, and legal consequences to other controls.</t><t>This document defines the LAP event format and assurance requirements. Sections 3 through 12 describe infrastructure used by LAP; they do not redefine the upstream VAP framework for other profiles.</t>
<section anchor="sect-1.1"><name>Scope and Upstream Baseline</name>
<t>LAP addresses legal consultation, document generation, and fact checking. The upstream baseline is VSO-VAP-SPEC-001, VAP v1.2.0 Draft 3, at repository commit 81fa81e01ef9418c3fb7a02ddfc7fd72d993b6b1 <xref target="VAP12"/>. This immutable reference includes the October 2026 integrity clarifications. Later changes require explicit review and a new LAP revision.</t>
<t>The upstream specification is maintained by VeritasChain Standards Organization and published under CC BY 4.0. LAP is an independently proposed domain profile; this document does not assert upstream registration, endorsement, or certification. References to other profiles are descriptive only.</t></section>
<section anchor="sect-1.2"><name>Authority and Assurance Limits</name>
<t>The requirements here govern the LAP wire format defined here. They do not override the VAP specification. Differences are documented in <xref target="sect-5.2"/>. A claim of VAP conformance requires a separate assessment against the pinned upstream requirements; LAP conformance alone is insufficient.</t>
<t>Signed records establish integrity and attributable statements under stated trust assumptions. They do not establish factual truth, legal correctness, safety, fairness, regulatory compliance, admissibility, or adequacy of professional review. Missing capture before signing and anchoring remains a distinct risk.</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, maintained upstream as described in VAP12.</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 scoped consistency check over captured attempts and outcomes. Passing it is not proof that all real-world activity was captured.</t></dd><dt>Evidence Pack</dt>
          <dd>
            <t>
	A self-contained, signed package of provenance events
            </t>
            <t>
	intended for third-party examination within a declared scope.
            </t>
          </dd>
          <dt>External Anchor</dt>
          <dd><t>An external service receipt binding a signed batch statement commitment to an independently verifiable service record.</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 JCS bytes of an event after removing only security.event_hash and security.signature. Algorithm identifiers and signer_id remain covered.</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 Alignment and LAP Architecture</name>
<section anchor="sect-3.1"><name>Layer Model</name><t>The upstream framework has four common assurance layers: Integrity, Provenance, Traceability, and Accountability; the domain profile supplies domain-specific rules. LAP applies these layers through event hashing and signatures, actor/input/action/outcome records, trace and causal identifiers, and identified operators and approvers.</t><t>Shared mechanisms include Merkle trees, external anchors, scope commitments, bounded recovery, erasure records, and evidence packages. Their mandatory LAP requirements are defined below.</t></section>
<section anchor="sect-3.2"><name>Profile Status and Levels</name><t>LAP is proposed, not listed as a registered profile in the pinned upstream registry. The labels Bronze, Silver, and Gold in this document belong only to LAP. Upstream Core, Standard, and Full are separate requirement sets. No one-to-one equivalence is asserted.</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.
        </t>
        <figure anchor="le-required-cryptographic-algorithms">
          <name>Required Cryptographic Algorithms</name>
          <artwork>
 +============+================+===================+==============+
 | 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 <xref target="FIPS204"/> 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 <xref target="FIPS203"/> 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:
        </t>
        <figure anchor="le-canonical-algorithm-identifiers">
          <name>Canonical Algorithm Identifiers</name>
          <artwork>
+===========+========================+==================+===========+
| 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 reject non-canonical algorithm identifiers and 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>
  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 <xref target="le-canonical-algorithm-identifiers"/>
   matching the security.sign_algo field (e.g., "ed25519", "ecdsa-p256"), and Base64url encoding follows <xref target="RFC4648" section="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 <xref target="le-required-cryptographic-algorithms"/> for migration
   purposes.</t>
      </section>
      <section anchor="sect-4.4"><name>Algorithm Migration</name><t>Algorithm migration follows the principles of <xref target="RFC7696"/>. This revision requires SHA-256 and Ed25519 interoperability for event and batch commitments. Other algorithm support in the tables is preparatory: a deployment MUST NOT claim interoperable use without a versioned specification of key, signature, and transcript encoding. Unsupported algorithms MUST be reported as unverifiable.</t><t>A key change MUST be logged and authorized under the existing trust policy. Historical events MUST NOT be rewritten or re-signed in place. Supplemental signatures, if used, MUST be detached attestations over the original event_hash with explicit algorithm and signer identifiers; they MUST NOT be inserted into the old event. Re-anchoring preserves the original proofs and does not retrospectively repair a compromised signature.</t><section anchor="sect-4.4.1"><name>Post-Quantum Planning</name><t>Long-lived evidence requires monitoring cryptographic strength. Implementations SHOULD plan for standardized post-quantum mechanisms and preserve original verification material. This revision does not define an interoperable hybrid signature format or assert a mandatory migration calendar. See <xref target="FIPS204"/> and <xref target="RFC9794"/> for related mechanisms and terminology.</t></section></section></section>
    <section anchor="sect-5"><name>LAP Common Event Structure</name><t>Every LAP event MUST contain the members below. This is a field-layout illustration, not a valid signed test event. All shown objects are required. An absent approval is represented by null in both approval fields; actor_id and actor_hash may be pseudonymous but MUST identify the recorded actor consistently within the declared scope.</t><artwork>
{
  "schema_id": "ailex-lap-event-05",
  "vap_version": "1.2.0-draft3",
  "profile": {"id": "LAP", "version": "0.6.0"},
  "policy": {"policy_id": "reverse.domain:local-id",
             "policy_hash": "sha-256:&lt;digest&gt;"},
  "header": {
    "event_id": "UUIDv7", "chain_id": "UUIDv7",
    "sequence": "0", "trace_id": "UUIDv7",
    "prev_hash": null, "timestamp": "RFC3339",
    "event_type": "LEGAL_QUERY_ATTEMPT",
    "causal_link": {"target_event_id": null, "link_type": null}
  },
  "provenance": {
    "actor": {"actor_id": "pseudonym", 
              "actor_hash": "sha-256:&lt;digest&gt;",
              "role": "attorney"},
    "input": {}, "context": {}, "action": {}, "outcome": {}
  },
  "accountability": {"operator_id": "operator identifier",
    "last_approval_by": null, "approval_timestamp": null},
  "domain_payload": {},
  "security": {"event_hash": "sha-256:&lt;digest&gt;",
    "hash_algo": "sha-256", "sign_algo": "ed25519",
    "signer_id": "key identifier", "signature": "ed25519:&lt;base64url&gt;"}
}
</artwork><t>event_id, chain_id, and trace_id MUST be UUIDv7 values per <xref target="RFC9562"/>. event_id MUST be unique. A trace_id joins events of one operation, including its outcome and reviews. A chain_id identifies one append-only sequence. sequence starts at the string "0" and increases by one for each recorded event. prev_hash is null only for genesis; otherwise it is the preceding event_hash, including its algorithm prefix. A sequence number describes recording order, not verified wall-clock order.</t><t>All strings MUST be valid Unicode encoded as UTF-8. Timestamps MUST use <xref target="RFC3339"/> with an explicit time zone; UTC is RECOMMENDED. Duplicate JSON member names, invalid Unicode, NaN, Infinity, and JSON numbers MUST be rejected. Hashes use a lowercase algorithm prefix, a colon, and the exact lowercase hexadecimal digest. Signatures use the matching lowercase algorithm prefix and unpadded base64url. Unknown algorithm identifiers MUST NOT be normalized into known algorithms.</t><t>Outcome events MUST link to their attempt with OUTCOME_OF. HUMAN_OVERRIDE events MUST link to the reviewed output with OVERRIDE_OF. Events without a causal link use null for both causal members. Other links use HOLD_ON, RECOVERY_OF, or TIER_CHANGE_OF as appropriate. Extension members are permitted and are included in the signed Hash Input. Unknown critical semantics prevent a positive conformance result, even if the cryptographic check succeeds.</t>
<section anchor="sect-5.1"><name>Numeric Value Encoding</name><t>All numeric values in LAP JSON events, policies, anchor records, proofs, and manifests MUST be strings. Non-negative integer fields, including sequence, counts, indexes, and limits, MUST match 0|[1-9][0-9]*. Signed integers, if needed in an extension, MUST use an optional leading minus and MUST NOT use negative zero. Decimal fields MUST use a decimal point with digits on both sides, no exponent, no leading plus, no unnecessary leading zeros, and no trailing fractional zeros; integral values use the integer form. Booleans and null retain their JSON types.</t><t>These rules apply before hashing. JCS <xref target="RFC8785"/> MUST NOT convert types, normalize Unicode, or rewrite numeric strings. A receiver MUST reject a wrong type rather than silently repair signed data. The rules apply to the LAP JSON wrapper, not binary data encoded inside a receipt or quoted third-party documents.</t></section>
<section anchor="sect-5.2"><name>Compatibility and Policy Identification</name><t>This revision is not byte-compatible with draft-04. It replaces the former vap_version value 1.4, which was not the upstream VAP v1.2 version, and advances the LAP profile version from 0.5.0 to 0.6.0. Old records MUST retain their original bytes and schema identity. Migration MUST start a new chain with a signed migration record referencing the last old event hash and available old anchor. Old proofs MUST NOT be relabeled as draft-05 proofs.</t><t>The LAP fields header.timestamp and header.prev_hash correspond conceptually to upstream header.timestamp_iso and security.prev_hash. LAP adds explicit sequence and schema_id. An adapter MUST preserve the original signed bytes and disclose mappings; renaming fields produces a different signed object. No generic upstream JSON validator compatibility is claimed.</t><t>Every event MUST bind a policy_id and policy_hash. policy_id MUST use reverse-domain notation followed by a colon and a local identifier. policy_hash is SHA-256 of the UTF-8 JCS bytes of the immutable policy document. The policy document MUST contain: issuer, policy_id, effective_from, expires_at (timestamp or null), lap_level (Bronze, Silver, or Gold), the pinned vap_baseline commit, vap_conformance (UNASSESSED, VAP-CORE, VAP-STANDARD, or VAP-FULL), registration_policy (issuer and policy_uri), verification_depth, anchor_interval_seconds, fallback_endpoint, max_failover_seconds, and recovery_bounds. verification_depth MUST declare event_signature, hash_chain, merkle_tree, and external_anchor as true. A non-UNASSESSED VAP claim MUST identify a separate assessment and evidence URI. Neither this field nor its signature makes that claim true.</t><t>Policy documents MUST be included in evidence packages and retained with anchors. Policy changes require a new hash and a POLICY_CHANGE event binding old and new hashes. A policy change MUST close the existing batch. Limits MUST NOT be relaxed retroactively.</t><t>schema_id values in this document are opaque identifiers defined here, not registered URN namespaces. Optional extensions MUST declare any validation-critical member names in a critical_extensions array of strings at the event top level. Unknown listed members prevent a positive semantic validation result. The array itself is included in Hash Input.</t></section></section><section anchor="sect-6"><name>LAP Conformance Levels</name><t>Each LAP level inherits all requirements of lower levels. These are experimental profile requirements, separate from upstream VAP conformance. A system lacking required evidence MUST NOT claim the corresponding LAP level.</t>
<section anchor="sect-6.1"><name>Bronze</name><t>Bronze MUST implement the event structure, SHA-256 hashing, Ed25519 support, an unbroken hash chain, per-event signatures, policy binding, signed Merkle batch statements, and verified external anchoring at intervals no longer than 86400 seconds. It MUST preserve events for at least six months and anchors, policies, proofs, and public verification material for at least one year and for as long as any dependent retained event requires verification. Legal hold, recovery, erasure, and anchoring-failure records are mandatory when applicable. Bronze MUST export the records and proofs needed to verify a declared batch, even if it has no online audit API.</t></section>
<section anchor="sect-6.2"><name>Silver</name><t>Silver additionally MUST implement the three-pipeline consistency checks, Evidence Pack generation, privacy protection, override coverage reporting, Level 1 review warnings, and the audit API. LAP Silver events MUST be retained for at least three years; anchors and verification material for at least five years and for as long as dependent records remain retained. External anchoring remains mandatory at most every 86400 seconds.</t></section>
<section anchor="sect-6.3"><name>Gold</name><t>Gold additionally MUST anchor at intervals no longer than 3600 seconds, use a transparency log as one anchor service, use a FIPS 140-3 Level 2 or higher validated HSM for signing keys, provide real-time audit access, preserve evidence during incidents, maintain at least two geographic regions, support crypto-shredding subject to legal hold, and obtain an annual third-party audit. LAP Gold events and anchor material MUST be retained for at least ten years. A 24-hour incident-response capability is REQUIRED. These operational requirements are not proof that an implementation has obtained a certification.</t></section></section><section anchor="sect-7"><name>External Anchoring</name><t>Every LAP level MUST anchor signed batch commitments externally. A verified receipt establishes that a commitment existed no later than the receipt time under the service trust model. It does not establish when the underlying real-world action occurred or prevent a dishonest producer from omitting activity before capture.</t>
<section anchor="sect-7.1"><name>Services and Continuity</name><t>The baseline service is an RFC 3161 TSA <xref target="RFC3161"/> supporting ESSCertIDv2 <xref target="RFC5816"/>. A transparency service with authenticated receipts, inclusion verification, and a documented append-only trust model MAY be used instead. Gold MUST include a transparency service. SCITT <xref target="RFC9943"/> and COSE Merkle receipts <xref target="RFC9942"/> are relevant mechanisms; their use does not by itself establish LAP conformance. Blockchain-only proofs do not satisfy this draft's mandatory baseline.</t><t>The policy MUST identify a primary and a distinct fallback service, trust anchors, verification rules, and a maximum failover window. The maximum MUST NOT exceed 2592000 seconds (30 days). Normal successful anchor intervals MUST NOT exceed the level's limit. On failure, the operator MUST retain the signed batch, retry and use the fallback within that window, and report the period as degraded. A failover window does not extend the normal interval or authorize a conformance claim for a missed deadline.</t><t>A gap exceeding twice the configured interval MUST produce an ANCHOR_GAP event, including last_successful_anchor_id, gap_start, detection_time, failed_endpoints, and retry evidence. A successful fallback MUST produce an ANCHOR_RECOVERED event linking the gap and receipt. Locally retained receipts MUST remain usable independently of the service's later availability. No failure or recovery event may be excluded from subsequent batches.</t><t>For a chain with no new events, a separately signed heartbeat statement MAY report the unchanged last anchor and observation time. It MUST NOT invent an event or claim inclusion of an empty batch. Policy-defined monitoring MUST distinguish an idle chain from an unavailable producer.</t></section>
<section anchor="sect-7.2"><name>Signed Batch Statement and Receipt</name><t>A batch MUST cover a non-empty, consecutive range of one chain under one policy hash. Its statement MUST contain exactly the fields in the following layout; all counters are strings. An epoch is not inferred from a mutable service response.</t><artwork>
{
  "schema_id": "ailex-lap-anchor-05",
  "anchor_id": "UUIDv7", "chain_id": "UUIDv7",
  "policy_id": "reverse.domain:local-id",
  "policy_hash": "sha-256:&lt;digest&gt;",
  "previous_anchor_hash": null,
  "first_sequence": "0", "last_sequence": "999",
  "event_count": "1000",
  "first_event_id": "UUIDv7", "last_event_id": "UUIDv7",
  "first_event_hash": "sha-256:&lt;digest&gt;",
  "last_event_hash": "sha-256:&lt;digest&gt;",
  "merkle_root": "sha-256:&lt;digest&gt;",
  "created_at": "RFC3339",
  "hash_algo": "sha-256", "sign_algo": "ed25519",
  "signer_id": "key identifier"
}
</artwork><t>Let S be the JCS UTF-8 bytes of this statement. statement_hash is SHA-256(S). The operator MUST sign those raw 32 digest bytes with Ed25519. Let signed_statement be the JSON object with exactly three members: statement (the object above), statement_hash (the prefixed hexadecimal digest), and signature (ed25519: followed by the unpadded base64url signature). The anchor commitment is SHA-256(JCS(signed_statement)); the external service MUST bind this commitment, not the unbound Merkle root. previous_anchor_hash is the preceding signed_statement commitment in this chain, or null only for the first batch. Batches MUST NOT overlap or skip recorded sequence numbers.</t><t>An AnchorRecord contains signed_statement and a receipts array. Each receipt MUST identify anchor_type, service_endpoint, service_profile, commitment_hash, and proof. commitment_hash MUST match the signed_statement commitment. Receipts and service metadata are outside signed_statement to avoid circularity. Changing a receipt cannot change the anchored statement. The signature key MUST be bound to an authorized operator through an independently configured trust policy, not merely through a supplied key file.</t><t>For RFC3161, proof MUST include the DER TimeStampToken encoded in unpadded base64url, and the TSA certificate chain or sufficient references to obtain it. The verifier MUST check messageImprint.algorithm is SHA-256, messageImprint.hashedMessage equals the raw commitment bytes, the token signature, certificate purpose and path, applicable revocation evidence, and the TSA policy against configured trust. A displayed anchor_timestamp is not authoritative; use the verified token genTime.</t><t>For a transparency receipt, service_profile MUST name the exact immutable protocol version and statement-to-log-leaf encoding. proof MUST carry the authenticated checkpoint or signed receipt, inclusion path, leaf index, and tree size required by that protocol. Verification MUST bind the exact commitment to the authenticated checkpoint and validate the log key and trust policy. A bare sibling-hash array is insufficient. For SCITT, the binding MUST follow its Signed Statement and Receipt model. The LAP Merkle tree and the service tree are distinct and MUST NOT be conflated. Unsupported service profiles yield an unverifiable result, not a pass.</t><t>A batch verifier MUST check operator signature, policy validity, count equals last_sequence minus first_sequence plus one, first and last identifiers and hashes, chain and policy identity for every event, sequence continuity, previous batch linkage where available, and the external receipt. Missing surrounding batches MUST be disclosed as a scope limitation. Receipt validation failure MUST be reported separately from event signature validation.</t></section>
<section anchor="sect-7.3"><name>Merkle Tree Construction</name><t>The batch tree uses SHA-256 with the domain separation and unbalanced-tree recursion in <xref target="RFC6962" section="2.1"/>. The same tree construction is retained in <xref target="RFC9162"/>. Each d(i) is the UTF-8 JCS serialization of the complete signed event, including event_hash and signature. Events are ordered by numeric sequence, not lexicographic string order.</t><artwork>
MTH({})     = SHA-256(empty byte string)
MTH({d(0)}) = SHA-256(0x00 || d(0))
MTH(D[n])   = SHA-256(0x01 || MTH(D[0:k]) || MTH(D[k:n]))
k = largest power of two strictly less than n
</artwork><t>An inclusion proof MUST supply the event, its zero-based leaf index, batch size, and ordered sibling hashes, all bound to the verified batch statement. Index and size use decimal strings. No duplicate last leaf is inserted for non-power-of-two trees. An inclusion proof establishes membership only. A claim that the full batch was disclosed requires all event bytes, exact committed count and range, and successful reconstruction of the root. Selective disclosures MUST be labeled partial and MUST NOT claim batch completeness.</t></section></section><section anchor="sect-8"><name>Scoped Attempt and Outcome Consistency</name><t>For each captured attempt, a verifier checks exactly one linked terminal outcome of the corresponding pipeline, rejects duplicate outcomes and orphan links, and checks totals as a secondary consistency test. Matching totals alone are insufficient: one missing outcome and one duplicate can cancel numerically.</t><t>The check MUST state the chain, policy, sequence and time ranges, anchoring status, and available independent capture evidence. Attempts within a declared grace period are pending. The grace period MUST NOT exceed 300 seconds; 60 seconds is RECOMMENDED. An attempt still unresolved afterward is reported as missing an observed outcome. A verifier MUST NOT fabricate a TIMEOUT_ERROR merely to make counts balance. A producer may record an actual timeout it observed, with evidence and pipeline-specific ERROR type; a later result is a supplemental LATE_RESULT event linked to that terminal event and MUST NOT be counted as a second terminal outcome.</t><t>A pass means the supplied, verified captured records satisfy these checks. It does not establish that every real-world attempt was captured. An operator can omit both an attempt and its outcome before anchoring. Independent request logs, counters, counterpart records, or capture attestation are needed to assess such omissions. Unavailable scope or evidence MUST be reported explicitly and MUST NOT be converted into a positive result. These are LAP reporting rules, not a claim that an upstream research proposal has been adopted.</t></section><section anchor="sect-9">
      <name>Evidence Pack Specification</name>
      <t>
   An Evidence Pack is a self-contained, signed package of provenance
   events intended for third-party examination within a declared scope.</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>manifest.json MUST be a JCS-compatible object containing schema_id ailex-lap-manifest-05, pack_id (UUIDv7), generated_at, profile, lap_level, policies, scope, files, statistics, verification, retention_status, and enforcement_metrics. All counters use decimal strings. policies lists each policy_id, policy_hash, and included policy path. scope MUST identify chains, sequence ranges, batch commitments, time range, and whether disclosure is complete or partial.</t><t>files MUST list every packaged data file with its relative path, byte size, and SHA-256 digest. It MUST NOT list manifest.json or the detached pack signature. Paths MUST be unique, relative, and free of traversal components; verifiers MUST reject unlisted data files, duplicate archive names, and mismatched digests. A pack signature is Ed25519 over SHA-256 of the JCS manifest bytes, stored in signatures/manifest.json with signer_id and signature. The signature file is excluded from the manifest to avoid circularity. Public keys in the pack are candidate verification material, not self-authenticating trust anchors.</t><t>The pack MUST include signed events, policy documents, AnchorRecords, inclusion or full-batch reconstruction data, key bindings, and applicable recovery, erasure, legal hold, policy-change, and gap records. A selective pack MUST identify undisclosed ranges. The pack signature does not replace event or external receipt verification.</t><t>verification MUST give separate results and evidence references for schema, event signatures, chains, batch roots, external receipts, policy, per-attempt consistency, and recovery/erasure controls. Each result MUST state whether it passed, failed, or was not evaluated and why. These are LAP report statuses, not upstream framework conformance labels. statistics MUST contain total_events and events_by_type. Retention and enforcement metrics MUST report unknown values explicitly instead of substituting zero. Bronze packs, if generated, follow the same format.</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>
  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>
      <t>The LAP minima are defined in <xref target="sect-6"/>. Any longer applicable retention duty or active legal hold takes precedence. Private signing keys MUST NOT be retained merely to verify old signatures; retain public keys, key bindings, revocation history, policies, and proofs for the verification lifetime.</t><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 and Erasure</name><t>Crypto-shredding can limit access to encrypted content while preserving audit commitments. It does not by itself establish compliance with privacy law or remove all copies. An active legal hold or applicable retention duty MUST block destruction of the affected content keys. The operator MUST record the retention_exemption basis, approving actor, affected scope, and review date when a duty overrides a requested erasure.</t><t>Every completed destruction MUST generate an ERASURE event in the ordinary signed, chained, and anchored stream. domain_payload MUST include target_event_ids or an authenticated range manifest, reason, operator_id, and key_destruction_proof. The proof MUST identify the destroyed key identifiers, key manager, destruction time, and a signed destruction attestation or its digest with retrievable protected evidence. It MUST state residual backups or escrow copies and the evidence limits; a local deletion acknowledgment is not proof of universal deletion.</t><t>ERASURE MUST NOT rewrite prior signed bytes or remove hashes from an existing tree. Legal hold checks and authorization MUST precede destruction. A rejected or deferred request MUST be recorded as ERASURE_DEFERRED with retention_exemption, without pretending that destruction occurred. Tier changes that destroy keys require both the transition record and the linked ERASURE record. Legal adequacy remains a jurisdiction-specific determination.</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, LAP 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+. All numeric response members MUST use the decimal string encoding of Section 5.1.
            </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 (decimal string), first_event_id,
      last_event_id, errors (array of {event_id, error_type, detail}).
      REQUIRED for Silver+. All numeric response members MUST use the decimal string encoding of Section 5.1.
            </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 (decimal string), pipelines (array of {pipeline_id,
      attempts, outcomes, valid}).  REQUIRED for Silver+. All numeric response members MUST use the decimal string encoding of Section 5.1.
            </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 Overview</name><t>LAP records legal queries, document generation, fact checks, and human reviews. It provides evidence of recorded actions and responsible actors. A review event is an attributable assertion of review, not proof of lawful practice, a valid professional license, or substantive correctness. Privacy commitments and access controls protect evidence; they do not themselves establish privilege.</t><section anchor="sect-13.1"><name>Proposed LAP Profile Identity</name><t>This revision uses profile.id LAP and profile.version 0.6.0. The domain is Legal AI / LegalTech. The schema identity is ailex-lap-event-05. These are identifiers defined by this draft, not a statement of IANA allocation or upstream profile registration. Framework-level mapping remains subject to independent assessment.</t></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 anchor="sect-14.6"><name>Recovery and Assurance Administration</name><t>Additional event types are RECOVERY, ANCHOR_GAP, ANCHOR_RECOVERED, ERASURE, ERASURE_DEFERRED, POLICY_CHANGE, MIGRATION, XREF_OBSERVATION, and LATE_RESULT. They are signed, chained, and anchored like all other events and are outside terminal outcome counts.</t><t>RECOVERY means an operation affecting interpretation of a broken sequence, not recovery of encrypted content under Section 11. For every level, the default automatic SKIP bound is zero events, automatic MERGE bound is zero source chains, and automatic CHECKPOINT bound is zero unverified events. Automatic REBUILD is permitted only when all original signed event bytes and their validated anchor receipts are available: the bound is one already committed batch per operation and one such operation per chain per 86400 seconds. It MUST preserve all bytes, IDs, sequence values, and old proofs. It MUST NOT synthesize missing events. Policies MAY set stricter bounds.</t><t>Any recovery exceeding these bounds requires an Emergency Override approved by an identified human before execution. The RECOVERY event MUST identify operation_type, break_point (chain, sequence, last valid hash), affected ranges, quantitative bound, observed quantity, reason, validation_evidence hashes, approving actor, approval time, and emergency_override boolean. Such an override MUST be flagged in the evidence report; approval does not turn an unverified interval into a continuous valid chain.</t><t>If the old chain cannot continue, a new chain MUST begin with a RECOVERY event referencing the old chain and last verified anchor; its genesis prev_hash remains null. The old chain, break evidence, and both sets of receipts MUST be retained. Recovery records MUST NOT be filtered out of anchor batches, exports, or applicable verification scope. Repeated bounded operations MUST NOT be used to evade the daily bound.</t></section><section anchor="sect-14.7"><name>Optional Cross-Party References</name><t>When used, header.cross_reference_id MUST be a shared UUIDv7 recorded independently by participating parties. XREF_OBSERVATION domain_payload MUST declare role (INITIATOR, COUNTERPARTY, or OBSERVER), counterpart identity, referenced event identifiers, matching policy, time tolerance in seconds, observation status (PENDING, MATCHED, DISCREPANCY, or TIMEOUT), and severity (INFO, WARNING, or CRITICAL). Each party's evidence MUST be independently signed and anchored. MATCHED requires validated counterpart evidence satisfying the declared matching policy; one party's unverified claim is insufficient. Confidential fields MUST NOT be disclosed merely to create a cross-reference.</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>
    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>
    <t>The equality above is a summary only. Verifiers MUST apply the per-attempt linkage, uniqueness, grace-period, and scope rules in <xref target="sect-8"/>. A complete anchored batch can still contain an incomplete operation; operation-boundary records outside the selected batch may be needed.</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 evidence of recorded review activity, without establishing legal compliance or review quality.</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.
            </t>
          </li>
        </ul>
        <figure anchor="le-override-coverage-assessment">
          <name>Override Coverage Assessment</name>
          <artwork>
    +==========+============+==================================+
    | 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          |
    +----------+------------+----------------------------------+
    | &lt;30%     | Critical   | Professional oversight           |
    |          |            | requirements likely unmet        |
    +----------+------------+----------------------------------+
</artwork>
        </figure>
      </section>
      <section anchor="sect-16.2"><name>Interpreting Review Coverage</name><t>Coverage counts recorded HUMAN_OVERRIDE links, not verified professional diligence. A value of 100 percent establishes neither correctness nor compliance. The report MUST declare its time range, denominator, excluded events, duplicates, and unavailable evidence. A zero denominator is not applicable, not 100 percent. Operational alert thresholds are a deployment policy choice and MUST NOT be presented as legal adequacy thresholds.</t></section><section anchor="sect-16.3">
        <name>Enforcement Level Mapping</name>
        <figure anchor="le-enforcement-level-by-conformance-level">
          <name>Enforcement Level by Conformance Level</name>
          <artwork>
  +=======================+==========+=============+=============+
  | 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>Enforcement Level Mapping</name><t>Bronze has no mandatory review gate; Level 0 is its default if coverage is computed. Silver and Gold MUST implement Level 1 warnings at minimum and SHOULD implement Level 2 gates for designated high-risk outputs. Level 3 is OPTIONAL at any level. Stronger enforcement does not replace signatures, anchors, or evidence of the actual review.</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:
      </t>
      <figure anchor="le-lap-privacy-preserving-fields">
        <name>LAP Privacy-Preserving Fields</name>
        <artwork>
+============+=================+====================+==============+
|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 Requirement Matrix</name><t>All levels require signed events, chain continuity, signed Merkle statements, policy identification, external anchors, bounded recovery, erasure evidence when used, and legal hold enforcement. The following matrix is a LAP-only summary; the detailed sections govern.</t><artwork>
Requirement                  Bronze        Silver        Gold
External anchor interval     &lt;=24 hours    &lt;=24 hours    &lt;=1 hour
Three-pipeline checks        Optional      Required      Required
Review coverage              Optional      Required      Required
Review enforcement minimum   Level 0       Level 1       Level 1
Evidence Pack generator      Optional      Required      Required
Batch proof export           Required      Required      Required
Privacy protection           Required      Required      Required
Legal hold                   Required      Required      Required
Content tiers                3 minimum     2 and 3       1, 2, and 3
Independent escrow           Optional      Recommended   Required
HSM                          Optional      Optional      Required
Event retention              6 months      3 years       10 years
Anchor/proof retention       &gt;=1 year      &gt;=5 years     &gt;=10 years
Real-time audit API          Optional      Optional      Required
</artwork><t>Retention minima are extended for dependent retained evidence and legal hold. Optional mechanisms, when used, MUST satisfy their applicable requirements. An implementation operating only Tier 3 cannot recover destroyed content; it MUST disclose that limitation and MUST apply legal hold before any destruction. No VAP-CORE, VAP-STANDARD, or VAP-FULL result follows automatically from this matrix.</t></section><section anchor="sect-19"><name>Regulatory Context (Informative)</name><t>Logging, human oversight, retention, and access control can support an organization's assessment of applicable obligations. This draft does not prescribe legal advice, determine whether a service is regulated, or establish compliance with any statute. In particular, a hash of a professional identifier does not verify the professional's license; a HUMAN_OVERRIDE event does not establish adequate review.</t><t>Jurisdiction, deployment role, evidence scope, and applicable retention or erasure duties require separate assessment. The technical retention minima in this draft are design requirements, not a statement of universally applicable legal periods. A legal hold records an authorized preservation instruction; the protocol cannot determine whether an unrecorded duty exists.</t></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 every LAP level 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 Limits</name><t>Event timestamps are producer assertions. Verifiers MUST check internal chronology, receipt time, configured clock uncertainty, and the declared anchoring interval separately. A daily batch can legitimately include events many hours before its receipt; a fixed 300-second event-to-receipt limit is therefore inappropriate. Events later than the authenticated receipt time plus the declared clock tolerance MUST be flagged. A receipt proves commitment existence no later than that time, not truth of each event timestamp.</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>Preserve all original events and receipts; issue a new signed incident attestation identifying the affected range and any supplemental anchor. New anchoring does not validate previously compromised signatures.</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 validate key authorization and compromise status independently; a KEY_ROTATION event signed only by an untrusted new key is insufficient. An overlap period does not override revocation evidence.</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>Omission and Split Views</name><t>A verified count, range, and Merkle commitment detect omitted or changed members when a producer claims to disclose the complete committed batch. Inclusion proofs for a subset cannot establish full disclosure. An operator may omit entire attempt/outcome pairs before capture or present different signed histories to different recipients. Checkpoint comparison, independent witnesses, and cross-party records are needed to detect split views. A single receipt and internally balanced counters do not establish global completeness.</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 trusting its contents; limited parsing is necessary to locate the manifest and signature.  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>Profile Identifier Scope</name><t>This draft defines LAP for use with its explicit schema identifiers. It makes no request to reserve identifiers for other upstream profiles and does not create or amend the upstream VAP registry. Coordination of any future IANA profile registry with that upstream registry remains an open issue.</t></section><section anchor="sect-21.3"><name>Event Type Scope</name><t>The event names in Section 14 are scoped by the LAP schema_id and profile version. This revision does not request a cross-domain VAP event registry. The media type registrations above remain proposals; no allocation is asserted.</t></section></section>
    <section anchor="sect-22"><name>Relationship to Other Work</name><t>SCITT <xref target="RFC9943"/> defines a transparency architecture; COSE Receipts <xref target="RFC9942"/> provide mechanisms for verifiable data structures. LAP defines domain records and batch commitments that can be carried using a specified service profile. Merely storing a LAP digest in a service does not demonstrate that its receipt has been verified.</t><t>Distributed agent and service architectures can supply independent evidence of requests, delegations, and results. LAP does not define those communication protocols or impose requirements on other IETF work. Any future cross-protocol binding must specify authenticated identities, exact committed bytes, failure handling, and privacy boundaries.</t></section></middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8032" target="https://www.rfc-editor.org/info/rfc8032" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8032.xml">
          <front>
            <title>Edwards-Curve Digital Signature Algorithm (EdDSA)</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <author fullname="I. Liusvaara" initials="I." surname="Liusvaara"/>
            <date month="January" year="2017"/>
            <abstract>
              <t>This document describes elliptic curve signature scheme Edwards-curve Digital Signature Algorithm (EdDSA). The algorithm is instantiated with recommended parameters for the edwards25519 and edwards448 curves. An example implementation and test vectors are provided.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8032"/>
          <seriesInfo name="DOI" value="10.17487/RFC8032"/>
        </reference>
        <reference anchor="RFC8785" target="https://www.rfc-editor.org/info/rfc8785" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8785.xml">
          <front>
            <title>JSON Canonicalization Scheme (JCS)</title>
            <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
            <author fullname="B. Jordan" initials="B." surname="Jordan"/>
            <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
            <date month="June" year="2020"/>
            <abstract>
              <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
              <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8785"/>
          <seriesInfo name="DOI" value="10.17487/RFC8785"/>
        </reference>
        <reference anchor="RFC9562" target="https://www.rfc-editor.org/info/rfc9562" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9562.xml">
          <front>
            <title>Universally Unique IDentifiers (UUIDs)</title>
            <author fullname="K. Davis" initials="K." surname="Davis"/>
            <author fullname="B. Peabody" initials="B." surname="Peabody"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <date month="May" year="2024"/>
            <abstract>
              <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9562"/>
          <seriesInfo name="DOI" value="10.17487/RFC9562"/>
        </reference>
        <reference anchor="RFC3161" target="https://www.rfc-editor.org/info/rfc3161" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3161.xml">
          <front>
            <title>Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)</title>
            <author fullname="C. Adams" initials="C." surname="Adams"/>
            <author fullname="P. Cain" initials="P." surname="Cain"/>
            <author fullname="D. Pinkas" initials="D." surname="Pinkas"/>
            <author fullname="R. Zuccherato" initials="R." surname="Zuccherato"/>
            <date month="August" year="2001"/>
            <abstract>
              <t>This document describes the format of a request sent to a Time Stamping Authority (TSA) and of the response that is returned. It also establishes several security-relevant requirements for TSA operation, with regards to processing requests to generate responses. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3161"/>
          <seriesInfo name="DOI" value="10.17487/RFC3161"/>
        </reference>
        <reference anchor="RFC5816" target="https://www.rfc-editor.org/info/rfc5816" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5816.xml">
          <front>
            <title>ESSCertIDv2 Update for RFC 3161</title>
            <author fullname="S. Santesson" initials="S." surname="Santesson"/>
            <author fullname="N. Pope" initials="N." surname="Pope"/>
            <date month="April" year="2010"/>
            <abstract>
              <t>This document updates RFC 3161. It allows the use of ESSCertIDv2, as defined in RFC 5035, to specify the hash of a signer certificate when the hash is calculated with a function other than the Secure Hash Algorithm (SHA-1). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5816"/>
          <seriesInfo name="DOI" value="10.17487/RFC5816"/>
        </reference>
        <reference anchor="RFC3339" target="https://www.rfc-editor.org/info/rfc3339" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3339.xml">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </reference>
        <reference anchor="RFC4648" target="https://www.rfc-editor.org/info/rfc4648" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC8259" target="https://www.rfc-editor.org/info/rfc8259" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8259.xml">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC9162" target="https://www.rfc-editor.org/info/rfc9162" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9162.xml">
          <front>
            <title>Certificate Transparency Version 2.0</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="E. Messeri" initials="E." surname="Messeri"/>
            <author fullname="R. Stradling" initials="R." surname="Stradling"/>
            <date month="December" year="2021"/>
            <abstract>
              <t>This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>This document obsoletes RFC 6962. It also specifies a new TLS extension that is used to send various CT log artifacts.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9162"/>
          <seriesInfo name="DOI" value="10.17487/RFC9162"/>
        </reference>
        <reference anchor="VAP12" target="https://github.com/veritaschain/vap-spec/blob/81fa81e01ef9418c3fb7a02ddfc7fd72d993b6b1/spec/v1.2/VAP_Framework_Specification.md"><front><title>VAP Framework Specification, v1.2.0 Draft 3, VSO-VAP-SPEC-001</title><author><organization>VeritasChain Standards Organization</organization></author><date year="2026" month="October"/></front><annotation>Fixed repository commit 81fa81e01ef9418c3fb7a02ddfc7fd72d993b6b1; CC BY 4.0. Source baseline; this LAP proposal is not an upstream endorsement.</annotation></reference><reference anchor="RFC9942" target="https://www.rfc-editor.org/rfc/rfc9942"><front><title>CBOR Object Signing and Encryption (COSE) Receipts</title><author initials="O." surname="Steele"/><author initials="H." surname="Birkholz"/><author initials="A." surname="Delignat-Lavaud"/><author initials="C." surname="Fournet"/><date year="2026"/></front><seriesInfo name="RFC" value="9942"/></reference></references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC3552" target="https://www.rfc-editor.org/info/rfc3552" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3552.xml">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="B. Korver" initials="B." surname="Korver"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="RFC6973" target="https://www.rfc-editor.org/info/rfc6973" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6973.xml">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="RFC7696" target="https://www.rfc-editor.org/info/rfc7696" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7696.xml">
          <front>
            <title>Guidelines for Cryptographic Algorithm Agility and Selecting Mandatory-to-Implement Algorithms</title>
            <author fullname="R. Housley" initials="R." surname="Housley"/>
            <date month="November" year="2015"/>
            <abstract>
              <t>Many IETF protocols use cryptographic algorithms to provide confidentiality, integrity, authentication, or digital signature. Communicating peers must support a common set of cryptographic algorithms for these mechanisms to work properly. This memo provides guidelines to ensure that protocols have the ability to migrate from one mandatory-to-implement algorithm suite to another over time.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="201"/>
          <seriesInfo name="RFC" value="7696"/>
          <seriesInfo name="DOI" value="10.17487/RFC7696"/>
        </reference>
        <reference anchor="RFC9794" target="https://www.rfc-editor.org/info/rfc9794" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9794.xml">
          <front>
            <title>Terminology for Post-Quantum Traditional Hybrid Schemes</title>
            <author fullname="F. Driscoll" initials="F." surname="Driscoll"/>
            <author fullname="M. Parsons" initials="M." surname="Parsons"/>
            <author fullname="B. Hale" initials="B." surname="Hale"/>
            <date month="June" year="2025"/>
            <abstract>
              <t>One aspect of the transition to post-quantum algorithms in cryptographic protocols is the development of hybrid schemes that incorporate both post-quantum and traditional asymmetric algorithms. This document defines terminology for such schemes. It is intended to be used as a reference and, hopefully, to ensure consistency and clarity across different protocols, standards, and organisations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9794"/>
          <seriesInfo name="DOI" value="10.17487/RFC9794"/>
        </reference>
        <reference anchor="RFC6962" target="https://www.rfc-editor.org/info/rfc6962" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6962.xml">
          <front>
            <title>Certificate Transparency</title>
            <author fullname="B. Laurie" initials="B." surname="Laurie"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Kasper" initials="E." surname="Kasper"/>
            <date month="June" year="2013"/>
            <abstract>
              <t>This document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.</t>
              <t>Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6962"/>
          <seriesInfo name="DOI" value="10.17487/RFC6962"/>
        </reference>
        <reference anchor="RFC7942" target="https://www.rfc-editor.org/info/rfc7942" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </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="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="RFC9943" target="https://www.rfc-editor.org/info/rfc9943" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9943.xml">
          <front>
            <title>An Architecture for Trustworthy and Transparent Digital Supply Chains</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="A. Delignat-Lavaud" initials="A." surname="Delignat-Lavaud"/>
            <author fullname="C. Fournet" initials="C." surname="Fournet"/>
            <author fullname="Y. Deshpande" initials="Y." surname="Deshpande"/>
            <author fullname="S. Lasker" initials="S." surname="Lasker"/>
            <date month="June" year="2026"/>
            <abstract>
              <t>Traceability in supply chains is a growing security concern. While Verifiable Data Structures (VDSs) have addressed specific issues, such as equivocation over digital certificates, they lack a universal architecture for all supply chains. This document defines such an architecture for single-issuer signed statement transparency. It ensures extensibility and interoperability between different transparency services as well as compliance with various auditing procedures and regulatory requirements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9943"/>
          <seriesInfo name="DOI" value="10.17487/RFC9943"/>
        </reference>
        <reference anchor="RFC9711" target="https://www.rfc-editor.org/info/rfc9711" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9711.xml">
          <front>
            <title>The Entity Attestation Token (EAT)</title>
            <author fullname="L. Lundblade" initials="L." surname="Lundblade"/>
            <author fullname="G. Mandyam" initials="G." surname="Mandyam"/>
            <author fullname="J. O'Donoghue" initials="J." surname="O'Donoghue"/>
            <author fullname="C. Wallace" initials="C." surname="Wallace"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>An Entity Attestation Token (EAT) provides an attested claims set that describes the state and characteristics of an entity, a device such as a smartphone, an Internet of Things (IoT) device, network equipment, or such. This claims set is used by a relying party, server, or service to determine the type and degree of trust placed in the entity.</t>
              <t>An EAT is either a CBOR Web Token (CWT) or a JSON Web Token (JWT) with attestation-oriented claims.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9711"/>
          <seriesInfo name="DOI" value="10.17487/RFC9711"/>
        </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>
        </references>
    </references>
    <section anchor="sect-a"><name>Upstream Requirement Mapping</name><t>This table identifies design correspondences, not a conformance certificate. The complete upstream assessment, profile registration, and interoperability work remain open.</t><artwork>
Upstream requirement       LAP section / mechanism
INT-001 canonicalization   4.2 and 5.1 / RFC 8785
INT-002 event identity     5 / UUIDv7
INT-003 event hash         4.2 / SHA-256 baseline
INT-004 sequence evidence  4.2 and 5 / hash chain and sequence
INT-005 non-repudiation    4.3 / every event signed
INT-006 external anchor    7 / signed Merkle batch and receipt
INT-007 continuity         7.1 / fallback and gap evidence
INT-008 scope commitment   7.2, 7.3, 8 / count, range, limits
INT-009 recovery           14.6 / bounds and human override
ERASURE                   11.1 / destruction evidence and hold
Policy identification     5.2 / immutable policy hash
TRC-005 XREF               14.7 / independent party evidence
</artwork></section><section anchor="sect-b"><name>Validation Requirements</name><t>Validators MUST enforce the field types and requirements in Section 5, reject duplicate members and wrong numeric types, recompute each event hash without changing any signed content, verify signatures against independently trusted key bindings, and verify chain and batch scope. The policy, recovery, erasure, external receipt, and per-attempt checks are distinct from syntactic validation.</t><t>A conforming verifier MUST test non-power-of-two trees; wrong leaf prefixes; altered policy/count/range; missing, duplicated, reordered or substituted events; omitted recovery records; unsupported algorithms; unknown keys; invalid TSA/log receipts; absent prior batches; and missing outcome evidence. A cryptographic pass MUST NOT conceal a failed or unevaluated scope check.</t><t>A full machine-readable schema and interimplementation interoperability results remain open work. The field definitions in this document are normative; no unpublished companion schema is a prerequisite for interpreting them.</t><section anchor="sect-b.1"><name>Serialization and Merkle Primitive Vectors</name><t>These small objects exercise serialization and tree construction only; they are not LAP events or signatures. The exact inputs contain no leading or trailing whitespace. All digests are SHA-256 hexadecimal. For the third leaf (index 2, size 3), the sibling is the two-leaf root on the left.</t><artwork>
d(0) = {"a":"1","b":true}
d(1) = {"a":"2","b":false}
d(2) = {"a":"3","b":null}
</artwork><artwork>
empty_root =
  e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
two_leaf_root =
  81bf82be3b1303d45cb2bcc0996c743674186a4c45db54868536ba5fb0737a20
three_leaf_root =
  e2432afb47c308a949b76a048780be5c9765b0ea6d27b17f167a08c5670d32d7
</artwork><artwork>
leaf(0) =
  fba9de6076dc98b39a486ee4d32ca78e6b3b0d238d6f02df056fbf20058bbf8a
leaf(1) =
  3623daa57bddb441e0a4e7732f002ee50196107848e4f08706d47a67d91890ca
leaf(2) =
  bd476a15d851fe0ef64cc866e8e3b82108c9544b17079b59f46e1db51e8bae1a
</artwork></section></section><section anchor="sect-c"><name>Implementation Status</name><t>This section follows <xref target="RFC7942"/> and is to be removed before RFC publication. No independently validated conforming implementation of draft-05 is reported here. Local document checks and test vectors do not constitute implementation certification.</t><t>Earlier revisions described AILEX implementations with hash-chained logs and experimental LAP features. Those reports are historical and have not been independently verified for this revision. In particular, an implementation without external anchoring cannot claim draft-05 Bronze. Product availability does not imply LAP or VAP conformance.</t><t>The pinned upstream repository reports no external implementations and no accepted Evidence Packs for its framework/profile assessment as of 25 October 2026. That report has a defined upstream assessment scope and does not establish the absence of all internal implementations.</t></section><section anchor="sect-d">
      <name>Change Log</name>
      <section anchor="sect-d.05"><name>Changes from -04 to -05</name><ul><li><t>Pin upstream VAP v1.2.0 Draft 3; distinguish LAP levels, schema, authority, and profile status.</t></li><li><t>Require signed Merkle commitments and external anchors for Bronze, Silver, and Gold; bind policy, count, range, and previous batch; define continuity and fallback reporting.</t></li><li><t>Add schema identity, numeric string rules, trace and sequence identifiers, immutable policy binding, and explicit signed-byte definitions. Advance LAP profile version to 0.6.0; preserve legacy records.</t></li><li><t>Bound recovery, require erasure evidence and legal hold checks, and specify optional cross-party evidence.</t></li><li><t>Limit completeness claims to declared captured evidence; remove fabricated timeout balancing and unsupported compliance/implementation claims.</t></li><li><t>Define detached Evidence Pack commitments and retain legal review, escrow, and hold controls. Add serialization and Merkle test vectors.</t></li></ul></section><section anchor="sect-d.previous"><name>Historical Revision Notes</name><t>
   This section tracks changes between Internet-Draft revisions and will
   be removed before publication.</t>
      <t>
   draft-ailex-vap-legal-ai-provenance-04</t>
      <ul spacing="normal">
        <li>
          <t>Refreshed the document.  There are no technical changes to
      the VAP Framework or to LAP; vap_version remains 1.4 and the LAP
      Profile Version remains 0.5.0.</t>
        </li>
        <li>
          <t>Replaced the reference to the SCITT architecture
      Internet-Draft with <xref target="RFC9943"/>, which has been
      published since the previous revision, and replaced the
      unresolved "[IETF-SCITT]" citation in <xref target="sect-22"/>
      with the same reference.</t>
        </li>
        <li>
          <t>Updated the SCITT Reference APIs (SCRAPI) reference to its
      current revision.</t>
        </li>
        <li>
          <t>Added <xref target="RFC9711"/> (EAT) as an informative
      reference for its existing mention in <xref target="sect-22"/>.</t>
        </li>
        <li>
          <t>Aligned the vap_version example values in
      <xref target="sect-5"/> and <xref target="sect-9.2"/>, and the
      Profile Version in <xref target="sect-13.1"/>, with the versions
      announced in -03 (1.4 and 0.5.0, respectively).</t>
        </li>
        <li>
          <t>Corrected cross-references: citations of Section 5 of RFC
      4648, Section 6 of RFC 8259, and Section 2 of RFC 9162 previously
      linked to sections of this document; the EU AI Act citation in
      <eref target="https://www.ietf.org/archive/id/draft-ailex-vap-legal-ai-provenance-04.html">draft-04 19.2</eref> now reads "Annex III, point 8(a)";
      in-text references to "Table 1" and "Table 2" now point to
      <xref target="le-required-cryptographic-algorithms"/> and
      <xref target="le-canonical-algorithm-identifiers"/>; and the
      existing mentions of FIPS 203 and FIPS 204 in
      <xref target="sect-4.1"/> now cite <xref target="FIPS203"/> and
      <xref target="FIPS204"/>.</t>
        </li>
        <li>
          <t>Updated <xref target="sect-c"/> (Implementation Status) to
      distinguish the first-generation AILEX SaaS platform from its
      successor implementation.</t>
        </li>
        <li>
          <t>Editorial: restored the revision heading for -03 in this
      change log.</t>
        </li>
      </ul>
      <t>
   draft-ailex-vap-legal-ai-provenance-03</t>
      <ul spacing="normal">
        <li>
          <t>Added <eref target="https://www.ietf.org/archive/id/draft-ailex-vap-legal-ai-provenance-04.html">draft-04 22.1</eref> "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 (<eref target="https://www.ietf.org/archive/id/draft-ailex-vap-legal-ai-provenance-04.html">draft-04 ure-vap-lap-and-dmsc-layered-architecture</eref>) 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 (<eref target="https://www.ietf.org/archive/id/draft-ailex-vap-legal-ai-provenance-04.html">draft-04 22.1.3</eref>).</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>
        <li>
          <t>Added informative references DMSC-BOF, DMSC-ARCH,
      DMSC-TECH, DMSC-DTA.</t>
        </li>
        <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, Section 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>
    <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>
