| Internet-Draft | PoP | February 2026 |
| Condrey | Expires 15 August 2026 | [Page] |
This document specifies the Proof of Process (PoP) Transcript Format, a structured data model for recording the evolutionary history of a digital document. It defines a canonical set of semantic editing events (Insertion, Deletion, Move, Replacement) and a schema for Tool Receipts, allowing distinct contributors—including human authors, AI agents, and automated editors—to cryptographically sign their specific contributions within a single provenance chain.¶
The protocol utilizes a hash-linked Provenance DAG (Directed Acyclic Graph) to ensure the integrity and ordering of events. This format enables Verifiers to reconstruct the document's lifecycle and apply flexible, policy-based logic to determine authorship attribution. It is designed to be content-aware but policy-agnostic, supporting diverse use cases ranging from academic integrity to software supply chain security.¶
This note is to be removed before publishing as an RFC.¶
Status of this Memo: This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 15 August 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
As digital documents evolve through complex workflows involving human authors, automated tools, and AI assistants, stakeholders require a standardized method to record what happened during the document's lifecycle. Existing logs are often proprietary, unstructured, or easily mutated.¶
This document specifies the Proof of Process (PoP) Transcript Format, a standardized data model for recording the evolutionary history of a digital artifact. It defines a canonical set of Semantic Events (Insert, Delete, Replace, Move) and a mechanism for linking these events into a hash-chained Provenance DAG (Directed Acyclic Graph).¶
Designed for interoperability, this format allows disparate editing environments (word processors, code editors, CMS platforms) to produce compatible Process Transcripts. These transcripts can support Tool Receipts, allowing AI agents and automated tools to cryptographically sign and attribute their specific contributions, thereby enabling a "compositional provenance" model where human and machine contributions are clearly demarcated within a single verifiable history.¶
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 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
A digital object such as a document, code bundle, or media file.¶
A canonical semantic editing operation applied to an artifact state.¶
An ordered sequence of events representing a process session.¶
A CBOR-encoded container holding transcript commitments, anchors, receipts, and policy hooks.¶
A mechanism that binds transcript state to chronology, such as an external timestamp or sequential-work proof.¶
A signed statement from a tool indicating that content was produced or transformed, referenced by events.¶
A directed acyclic graph constructed from receipts and references between them.¶
A verifier-defined configuration for evaluation of process evidence.¶
A cryptographic commitment to a policy descriptor, included to identify the applied policy.¶
A cryptographic commitment to a seed used to parameterize evaluation functions and/or audits.¶
CBOR encoding with a canonical ordering as required for reproducible hashing.¶
This section defines the scope of the transcript format regarding data integrity and provenance visibility.¶
A valid PoP Transcript ensures:¶
PoP is a portable evidence format intended to be produced by an editing environment (the Producer) and consumed by a Verifier. A third party (Anchor Service) MAY provide timestamps or other anchoring evidence. Tools (e.g., language models, grammar checkers, converters) MAY provide signed receipts.¶
+-------------+ Transcript/Envelope +-------------+
| Producer +----------------------->| Verifier |
| (Editor) | | (Policy) |
+------+------+ +------+------+
| |
| |
+------+------+ Anchors (optional) |
| Anchor +-------------------------------+
| Service |
+-------------+
+-------------+ Receipts (optional) +-------------+
| Tools +----------------------->| Producer |
| (LLM, etc.) | | / Verifier |
+-------------+ +-------------+
PoP is compatible with RATS/EAT deployments by treating the PoP envelope as evidence that can be conveyed alongside attestation tokens, referenced by claims, or embedded in artifact metadata for later validation. The overall Proof of Process architecture is defined in [I-D.condrey-rats-pop].¶
PoP uses CBOR [RFC8949] as the encoding and CDDL [RFC8610] for data model definitions. All hashing computations depend on deterministic CBOR encoding; Producers and Verifiers MUST use a deterministic CBOR encoding profile suitable for reproducible hashing.¶
Offsets and ranges refer to a canonical byte or character indexing scheme over the logical artifact content. The indexing scheme MUST be specified by the Producer and bound in the envelope so that Verifiers can interpret ranges consistently.¶
This specification defines a generic Range structure. Producers MAY use byte offsets, Unicode scalar offsets, or another deterministic scheme. The chosen scheme MUST be indicated in the envelope.¶
PoP defines canonical semantic event types. Events describe changes to artifact state at a semantic operation level rather than raw keystrokes. Raw keystroke telemetry is OPTIONAL and is not required for PoP verification.¶
The following event types are defined:¶
Events MUST include sufficient information to validate transcript integrity and, when required by policy, to validate that the transcript corresponds to the final artifact (e.g., via checkpoints).¶
PoP binds transcript events in order using a hash chain. The chain depends on deterministic encoding of each Event structure.¶
Let H be a cryptographic hash function. This specification RECOMMENDS SHA-256.
The initial hash value h_0 MUST be defined as the hash of a domain separation string and the
session identifier:¶
h_0 = H("PoP-Transcript" || session_id)¶
For each event E_i, the chain value is computed as:¶
h_i = H(h_{i-1} || CBOR_Deterministic(E_i))¶
The transcript root is defined as root = h_n for the final event E_n.¶
PoP supports optional chronology binding via Anchors. Policies MAY require specific anchor types or densities. This document defines two anchor classes: External Anchors and Sequential Work Anchors.¶
An External Anchor binds the transcript root (or an intermediate chain value) to an externally verifiable time assertion (e.g., a timestamping service, transparency log, or other notary).¶
The specific external anchoring system is out of scope for this document; PoP defines a generic container for including and validating anchor evidence.¶
A Sequential Work Anchor provides evidence that a specified amount of sequential computation was performed between two transcript states. This can increase the cost of post-hoc backfilling. The concrete VDF or sequential-work scheme is policy-defined. This document defines a container to carry such evidence.¶
PoP supports compositional provenance via signed tool receipts. Receipts enable producers to explicitly declare and bind tool-generated outputs (including AI assistance) without relying on brittle inference or detection. Receipts MAY be used for any deterministic or non-deterministic tool that emits content, patches, or transformations that contribute to the artifact.¶
A Receipt is a signed statement that binds tool identity and an output commitment. An input commitment MAY be included to allow stronger binding, but is OPTIONAL to support privacy-preserving tools.¶
Receipts MAY reference other receipts to form a provenance DAG. Policies MAY restrict recursion depth.¶
source_ref), the referenced receipt MUST be present or retrievable under policy.¶
The PoP Envelope is the primary interchange object. It binds transcript commitments, anchors, receipts, and policy hooks. The envelope is CBOR-encoded and SHOULD be embedded into artifact metadata or conveyed alongside artifacts.¶
PoP defines policy hooks but does not standardize a scoring model. To enable reproducible application of a policy, the envelope includes:¶
Commitments support commit-then-reveal workflows where the evaluation surface is unpredictable at capture time but verifiable after reveal under policy.¶
The envelope MAY include a claims field carrying derived values (e.g., integrity pass/fail,
evaluation outputs). Claims MUST NOT be treated as authoritative unless verifiers recompute or validate them
under policy. Policies SHOULD treat claims as advisory and derive evaluation from transcript evidence.¶
The envelope MAY include a zk bundle to support privacy-preserving verification (e.g., threshold
proofs for policy-defined evaluations without full transcript disclosure). The specific ZK proof system is
policy-defined.¶
Verifiers MUST perform the following procedure to validate a PoP envelope. Policies MAY impose additional requirements and MAY allow partial disclosure modes.¶
h_0 through h_n.¶
root to the envelope root.¶
Mismatch MUST cause verification failure.¶
Policies MAY require validation that the transcript corresponds to the final artifact. This may be performed by verifying SNAP events, checkpoints, or other commitments that bind the transcript to the final artifact hash.¶
After transcript and anchoring verification, a verifier MAY compute features and apply a policy-defined evaluation. If the envelope includes a ZK bundle and the policy allows it, the verifier MAY validate a ZK proof instead of obtaining the full transcript.¶
PoP does not standardize any scoring function, threshold, or interpretation. Policies define evaluation inputs, models, and thresholds. PoP provides hooks to identify policies and support reproducible evaluation.¶
The policy_commit field is a cryptographic commitment to a policy descriptor, e.g.:¶
policy_commit = H(policy_descriptor)¶
The contents and distribution of the policy descriptor are out of scope for this document. Policies MUST be
uniquely identifiable by policy_commit.¶
Policies MAY use seeds to parameterize evaluation functions (e.g., to mitigate adaptive optimization against a
static evaluation surface). If used, the envelope includes seed_commit, and verifiers MAY require a
reveal of the seed or a ZK proof that incorporates the committed seed.¶
Any evaluation outputs, including derived claims, are policy-defined and MUST be expressed as assessments of evidence, not assertions of cognitive origin. Policies SHOULD provide outputs that are interpretable and auditable (e.g., quantified import ratios, refinement ratios, or other measurable evidence summaries).¶
PoP provides tamper-evident transcripts and optional chronology binding. It does not prevent an adversarial producer from performing arbitrary sequences of valid edits. Policies should treat PoP as evidence of recorded process, not proof of mental origin.¶
Producers and verifiers SHOULD support algorithm agility for hash functions and signature schemes. Policies SHOULD specify allowed algorithms and minimum security strengths.¶
Transcripts can reveal sensitive intermediate drafts, editing patterns, and content that was later removed. PoP supports multiple disclosure modes, but this document does not mandate a particular privacy policy.¶
Policies SHOULD minimize disclosure and SHOULD avoid collecting raw keystrokes or invasive telemetry unless explicitly required for a deployment and accompanied by informed consent.¶
This document requests IANA to register a media type for PoP envelopes encoded in CBOR.¶
Type name: application¶
Subtype name: pop+cbor¶
Required parameters: none¶
Optional parameters: none¶
Encoding considerations: binary¶
Security considerations: see Section 12¶
Interoperability considerations: none¶
Published specification: this document¶
Applications that use this media type: editors, provenance systems, attestation verifiers¶
Fragment identifier considerations: none¶
Additional information:¶
Magic number(s): none¶
File extension(s): .pop¶
Macintosh file type code(s): none¶
Person & email address to contact for further information: David Condrey (david@writerslogic.com)¶
Intended usage: COMMON¶
Restrictions on usage: none¶
Author: Authors of this document¶
Change controller: IETF¶
This appendix provides a consolidated CDDL summary for PoP-1.5 structures. Implementations MUST follow these definitions and MUST apply deterministic CBOR encoding for all hashed objects. The complete normative CDDL schema is defined in [I-D.condrey-rats-pop-schema].¶
; NOTE: This CDDL is a summary skeleton. Field-level constraints and algorithm
; registries should be expanded as the draft matures.
PoPEnvelope = {
version: "PoP-1.5",
session_id: bstr,
root: bstr,
transcript_commit: bstr,
? index_scheme: tstr, ; e.g., "byte", "unicode_scalar"
anchors: [* Anchor],
seed_commit: bstr,
policy_commit: bstr,
receipts: [* Receipt],
import_index: ImportSummary,
? claims: Claims,
? zk: ZKBundle
}
Range = {
start: uint,
len: uint
}
Event = {
type: tstr, ; "INS" / "DEL" / "REP" / "MOV" / "PASTE" / "SNAP"
? range: Range,
? dst_pos: uint,
? data_hash: bstr,
? old_hash: bstr,
? new_hash: bstr,
? length: uint,
? doc_hash: bstr, ; for SNAP
? cursor_pos: uint, ; optional
? source_ref: bstr, ; references Receipt.output_commit or receipt id
? aux: bstr
}
Anchor = {
type: tstr, ; "external" / "seqwork" / policy-defined
binds: bstr, ; root or intermediate chain value
value: bstr,
? timestamp: uint
}
Receipt = {
tool_id: tstr,
tool_pubkey: bstr,
input_commit: bstr / null,
output_commit: bstr,
flags: [* tstr],
? anchor: Anchor,
sig: bstr
}
ImportSummary = {
raw_import_bytes: uint,
paste_events: uint,
receipt_bound_events: uint,
refined_pct: float
}
Claims = {
integrity: float,
time: float,
liveness: float,
emergence: float,
topology: float,
assistance: float,
refinement: float,
process_quality: float
}
ZKBundle = {
score_threshold_proof: bstr,
public_inputs: [* bstr]
}
This appendix illustrates a typical verification sequence.¶
The author thanks the RATS working group for foundational work on remote attestation architectures. Thanks also to reviewers who provided feedback on CBOR encoding determinism, COSE signing surfaces, and transport binding interoperability.¶