| Internet-Draft | CEP | September 2026 |
| Wang | Expires 30 March 2027 | [Page] |
This document defines CEP-2, an optional profile of the Judgment Event Protocol (JEP) [JEP] for binding declared AI, model, agent, policy, tool-chain, or deployment changes to independently verifiable evidence and external anchor references.¶
CEP-2 defines one critical JEP record-binding extension, one minimal Evolution-Change Record, Subject and Change semantics, digest-first evidence references, typed external anchor references, and independent CEP validation checks. JEP remains authoritative for event verbs, Event Identity, Event Hash, signatures, references, extension processing, validation modes, and acceptance semantics.¶
CEP-2 records declared change evidence. It does not determine whether a change actually occurred, whether a system improved or degraded, whether a capability emerged, whether a change was authorized, safe, aligned, fair, lawful, approved, reversible, or acceptable, or whether any governance or regulatory process was satisfied.¶
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 30 March 2027.¶
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.¶
AI systems, models, autonomous agents, tool-using services, policies, and deployments can change over time. A change may involve a model update, fine-tuning step, policy update, tool-chain change, capability claim, configuration change, observed drift, mitigation step, rollback, or another deployment-defined transition.¶
Operators, counterparties, auditors, researchers, and downstream systems may need a portable record answering:¶
Which subject was declared to have changed, which change record was bound to that declaration, which evidence and anchors were associated with it, and can those bindings be independently revalidated?¶
CEP addresses that narrow interoperability problem.¶
The term "evolution-change" in CEP is neutral. It means a declared transition or change associated with a subject. It does not imply improvement, progress, adaptation, autonomous self-modification, capability growth, or biological evolution.¶
JEP Profiles [JEP-PROFILES] defines profile selection and composition rules. JEP Conformance [JEP-CONFORMANCE] defines validation-result and test-harness conventions. JEP Receipt Profile [JEP-RECEIPT] MAY package CEP records. JAC [JAC] MAY express declared dependencies among JEP events associated with CEP records. COE [COE] MAY provide observation or shared-state evidence referenced by a CEP record.¶
Where this document conflicts with JEP-Core, JEP-Core controls.¶
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.¶
CEP-2 defines:¶
CEP-2 does not define:¶
before / after state-transition semantics;¶
A digest-addressed record declaring that a Subject is associated with a described Change Reference and optional evidence or anchors.¶
It is a record of a declared change claim. It is not proof that the change occurred.¶
The logical system, model, model family, agent, service, deployment, policy, tool chain, capability object, or other deployment-defined entity associated with the declared change.¶
A digest-first reference to a change record, update manifest, diff, training record, configuration record, evaluation record, mitigation record, rollback record, or other object describing the declared change.¶
A digest-first reference to evidence associated with the Evolution-Change Record.¶
CEP does not determine whether referenced evidence is relevant, sufficient, truthful, complete, admissible, or authoritative.¶
A typed reference associating an Evolution-Change Record with an external JEP event or digest-addressed record.¶
An anchor is a technical association. It is not an approval, permission, governance decision, or legal conclusion.¶
The CEP-2 profile identifier is:¶
https://humanjudgment.org/jep/profiles/cep/2¶
The label CEP-2 MAY be used in documentation and user interfaces.¶
The identifier is a publisher-controlled HTTPS URI. Dereferencing it is not required for validation.¶
The critical CEP record-binding extension identifier is:¶
https://humanjudgment.org/jep/extensions/cep-record-binding/2¶
A JEP event claiming CEP-2 conformance MUST carry this extension in ext and MUST list the extension identifier in ext_crit.¶
A verifier that cannot process this critical extension cannot claim successful CEP-2 validation.¶
CEP-2 is not wire-compatible with CEP-Core-1 from draft-wang-cep-01.¶
CEP-Core-1 commonly placed an Evolution-Change Record digest in JEP what, used pre-JEP-0.7 nonce and reference assumptions, and defined HJS-based receipt integration.¶
CEP-2 moves CEP record binding into one critical JEP extension, uses JEP Event Identity for logical event references, treats Event Hash only as an exact signed-artifact pin, and uses JEP Receipt Profile for optional portable receipt packaging.¶
Historical CEP-Core-1 records and events MUST NOT be silently rewritten as CEP-2 records or events.¶
CEP-2 relies on JEP-Core for:¶
(who,id);¶
ref;¶
ext and ext_crit;¶
CEP-2 MUST NOT redefine those semantics.¶
A producer MUST satisfy the selected JEP verb's requirements before CEP record binding is considered.¶
In particular:¶
what.delegatee and what.scope;¶
what.termination_scope and identify its target through JEP ref;¶
what.verification_scope, what.result, and JEP ref.¶
CEP metadata MUST NOT replace those fields.¶
The extension value MUST be a JSON object containing:¶
profile MUST equal https://humanjudgment.org/jep/profiles/cep/2.¶
record_type MUST equal evolution-change.¶
record_digest MUST be an algorithm-tagged digest string conforming to JEP digest-string rules.¶
media_type MUST be a non-empty string. The baseline CEP-2 record encoding is application/json.¶
The extension MAY contain record_uri. If present, it MUST be an absolute URI and is a retrieval hint only.¶
Each CEP-2 event binds exactly one primary Evolution-Change Record through this extension.¶
{
"ext": {
"https://humanjudgment.org/jep/extensions/cep-record-binding/2": {
"profile": "https://humanjudgment.org/jep/profiles/cep/2",
"record_type": "evolution-change",
"record_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"media_type": "application/json"
}
},
"ext_crit": [
"https://humanjudgment.org/jep/extensions/cep-record-binding/2"
]
}
¶
The example digest is illustrative.¶
An Evolution-Change Record MUST NOT contain the Event Hash of the JEP event that binds that record.¶
The record MAY contain that event's Event Identity when a companion profile requires a back-reference.¶
A Subject MUST be a JSON object containing:¶
type and id MUST be non-empty strings.¶
A Subject MAY additionally contain:¶
profile, when present, MUST be an absolute URI identifying an external subject-identity or semantic profile.¶
If interoperable Subject identity comparison across deployments is required, the producer MUST include profile.¶
A verifier that does not understand the selected profile MAY validate the Subject structure and the enclosing CEP record, but MUST NOT claim that two Subject values identify the same logical subject across deployments.¶
version_ref, when present, MUST be an Evidence Reference.¶
id identifies the logical subject under the interpretation selected by the deployment or profile. It MUST NOT be interpreted as a JEP Event Identity unless a profile explicitly defines that representation.¶
The Subject structure separates logical subject identity from any particular model file, deployment artifact, configuration artifact, or JEP event.¶
A Change Reference MUST be a JSON object containing:¶
digest¶
digest MUST be an algorithm-tagged digest string identifying the change description or change artifact.¶
A Change Reference MAY additionally contain:¶
When present:¶
change_profile MUST be an absolute URI;¶
kind and media_type MUST be non-empty strings;¶
uri MUST be an absolute URI.¶
change_profile identifies the schema, vocabulary, semantic profile, or equivalent interpretation contract for the change payload.¶
If interoperable semantic interpretation of the change payload is required outside the originating deployment, the producer MUST include change_profile.¶
A verifier that does not understand change_profile MAY still validate the CEP record binding and digest, but MUST NOT claim semantic interpretation of the change payload under that profile.¶
CEP-2 does not define before state, after state, state-transition equivalence, or state-difference semantics. A change_profile or companion profile MAY define such semantics and any rules for comparing, ordering, or validating them.¶
An Evidence Reference MUST be a JSON object containing:¶
digest¶
digest MUST be an algorithm-tagged digest string.¶
An Evidence Reference MAY additionally contain:¶
When present:¶
kind, record_type, and media_type MUST be non-empty strings;¶
profile and uri MUST be absolute URIs;¶
redaction SHOULD be one of none, partial, digest-only, or withheld.¶
The digest is the integrity identity of the evidence object.¶
URI retrieval success MUST NOT be treated as evidence-integrity success.¶
A profile value identifies external semantics. The presence of a profile identifier does not make that profile's validation result part of CEP validity. External profile validity MUST be evaluated separately.¶
An Anchor Reference MUST be a JSON object containing:¶
relation MUST be a non-empty string.¶
For local deployment semantics, relation MAY be deployment-defined.¶
For cross-deployment interoperable relation semantics, relation MUST be an absolute URI whose semantics are defined by an explicitly selected profile or published specification. Two different relation identifiers MUST NOT be treated as equivalent merely because their human-readable labels are similar.¶
reference MUST be one of the reference forms defined below.¶
A JEP event anchor MUST contain:¶
event_identity MUST contain non-empty string members who and id.¶
A JEP event anchor MAY also contain:¶
event_hash, when present, pins one exact signed JEP artifact.¶
The logical event reference is Event Identity, not Event Hash.¶
uri, when present, is a retrieval hint only.¶
A digest record anchor MUST contain:¶
digest MUST be an algorithm-tagged digest string.¶
A digest record anchor MAY additionally contain:¶
When present, profile and uri MUST be absolute URIs and record_type and media_type MUST be non-empty strings.¶
An anchor to another profile does not import that profile's validity or policy conclusions into CEP.¶
An Anchor Reference declares association only.¶
The presence of an anchor MUST NOT be interpreted by CEP as:¶
A companion profile MAY define a stronger relation, but that conclusion belongs to that profile and MUST be reported separately.¶
A CEP-2 Evolution-Change Record MUST be a JSON object containing:¶
cep_record MUST equal "2".¶
record_type MUST equal "evolution-change".¶
subject MUST be a Subject.¶
change MUST be a Change Reference.¶
An Evolution-Change Record MAY additionally contain:¶
evidence, when present, MUST be an array of zero or more Evidence References.¶
anchors, when present, MUST be an array of zero or more Anchor References.¶
declared_at, when present, MUST be a non-negative integer representing declared Unix seconds. It is not trusted time and is not proof that the change occurred at that time.¶
context, when present, MUST be a JSON object whose semantics are defined by the deployment or an explicitly selected companion profile.¶
No other top-level members are defined by the CEP-2 baseline.¶
CEP-2 does not assign new meanings to J/D/T/V.¶
A J event MAY carry a claim concerning issuance, adoption, observation, or interpretation of an Evolution-Change Record while the CEP binding remains in the critical extension.¶
A D event MAY carry a CEP binding, but delegation meaning remains defined by JEP-Core and any applicable delegation or mandate profile.¶
A T event MAY terminate future reliance on a referenced JEP event within its declared termination scope. CEP does not define automatic rollback, retraction, or mitigation merely because a CEP record is associated with that event.¶
A V event MAY record an evaluation of a CEP record, evidence object, anchor, or external change profile under a declared verification scope.¶
CEP record type MUST NOT be inferred solely from the JEP verb.¶
JEP Receipt Profile is optional for CEP-2.¶
A CEP Evolution-Change Record MAY appear as an evidence object in a JEP Receipt Profile bundle.¶
A receipt bundle MAY include:¶
Receipt Profile validity and CEP validity MUST be reported separately.¶
CEP-2 does not define a second receipt-manifest format.¶
JAC is optional for CEP-2.¶
A JEP event associated with a CEP record MAY also carry JAC dependency metadata.¶
A CEP Evidence Reference or Anchor Reference does not automatically create a JAC dependency edge.¶
A JAC edge does not automatically create a CEP evidence or anchor relation.¶
If both profiles are used, implementations MUST preserve their independent semantics and validation results.¶
JAC validity does not establish that a CEP change occurred or that its evidence is sufficient.¶
COE is optional for CEP-2.¶
A CEP Evidence Reference or Digest Record Anchor MAY reference a COE Observation Record or Shared-State Claim Record by digest and profile.¶
A CEP verifier MUST NOT report COE validity unless the referenced COE object was separately validated under the applicable COE profile.¶
COE validity does not establish that the CEP change occurred, caused an observed condition, or satisfies a policy.¶
A CEP validation result separates:¶
CEP MUST NOT overwrite the JEP validation result or merge external-profile results into CEP validity.¶
A CEP-2 verifier MUST support JEP archival validation mode.¶
If no JEP validation mode is explicitly requested, CEP validation MUST use archival mode.¶
Archival CEP validation MUST NOT consume JEP acceptance state.¶
A deployment MAY explicitly request another JEP validation mode when needed.¶
The initial CEP-2 check identifiers are:¶
https://humanjudgment.org/jep/profiles/cep/2#profile-binding¶
https://humanjudgment.org/jep/profiles/cep/2#record-binding¶
https://humanjudgment.org/jep/profiles/cep/2#record-structure¶
https://humanjudgment.org/jep/profiles/cep/2#subject-reference¶
https://humanjudgment.org/jep/profiles/cep/2#change-reference¶
https://humanjudgment.org/jep/profiles/cep/2#evidence-reference¶
https://humanjudgment.org/jep/profiles/cep/2#anchor-reference¶
https://humanjudgment.org/jep/profiles/cep/2#external-integrity¶
https://humanjudgment.org/jep/profiles/cep/2#semantic-profile¶
Check statuses use the JEP conformance vocabulary:¶
A verifier MUST NOT report an unperformed CEP check as pass.¶
For every CEP-2 event, the required checks are:¶
evidence-reference is required when evidence is present.¶
anchor-reference is required when anchors is present.¶
external-integrity is required only for external evidence or anchors that the requested validation context requires to be resolved and checked.¶
semantic-profile is required only when the requested validation context requires semantic interpretation of subject.profile, change.change_profile, or another external profile identifier.¶
If semantic interpretation is required but the selected profile is unsupported or cannot be evaluated, semantic-profile MUST NOT be reported as pass.¶
The CEP overall status is one of:¶
For the requested CEP validation context:¶
invalid means the underlying required JEP validation is invalid or at least one required CEP check failed;¶
indeterminate means no required check failed, but the underlying required JEP validation is indeterminate or at least one required CEP check is unsupported, not checked, or indeterminate;¶
valid means the underlying required JEP validation is valid and every required CEP check passed or was not applicable.¶
valid means structurally and cryptographically valid under the selected checks. It does not mean the declared change occurred or was acceptable.¶
A CEP verifier SHOULD:¶
record_digest;¶
A JEP V event MAY record a CEP evaluation.¶
The V event MUST satisfy JEP-Core V requirements.¶
CEP-2 defines the following provisional profile-specific verification scopes:¶
https://humanjudgment.org/jep/profiles/cep/2#record-binding¶
https://humanjudgment.org/jep/profiles/cep/2#change-reference¶
https://humanjudgment.org/jep/profiles/cep/2#evidence-integrity¶
https://humanjudgment.org/jep/profiles/cep/2#anchor-integrity¶
https://humanjudgment.org/jep/profiles/cep/2#semantic-profile¶
A V event MUST identify the evaluated target through JEP ref.¶
what.result records the semantic result of the declared verification scope. It MUST NOT be confused with CEP per-check status.¶
A V event MUST NOT imply permission, approval, safety, alignment, actual change, or policy satisfaction beyond its declared verification scope.¶
CEP-2 uses an open-world evidence model.¶
Absence of an Evolution-Change Record MUST NOT be interpreted as proof that no change occurred.¶
Absence of conflicting evidence MUST NOT be interpreted as proof that no conflicting evidence exists.¶
A collection of CEP records MUST NOT be presented as a complete history of a subject unless an explicitly selected external profile defines a complete-history assumption and its requirements were satisfied.¶
CEP-2 does not define whether an evolution or change fact is uniquely or zero-error determinable from available evidence.¶
A determinability report MAY be referenced as evidence under an external profile, but CEP validity MUST NOT be presented as proof that the report is correct or that the target change is determinable.¶
CEP-01 defined or described extension families for evolution records, anchors, change classification, binding claims, review references, rollback or mitigation references, multi-party export, and determinability reports.¶
CEP-2 removes those extension families from the narrow waist.¶
A companion profile MAY define:¶
Such profiles MUST NOT redefine JEP-Core semantics or present their conclusions as intrinsic CEP-Core facts.¶
A conforming CEP-2 Producer MUST:¶
ext_crit;¶
A conforming CEP-2 Verifier MUST:¶
archival validation mode;¶
indeterminate rather than success when a required check cannot be completed.¶
A valid CEP result does not prove that a declared change occurred.¶
Implementations MUST consider:¶
A verifier MUST compare the recomputed Evolution-Change Record digest with the digest inside the signed critical CEP extension.¶
A verifier MUST NOT infer actor binding, actual change, permission, approval, authorization, causality, safety, alignment, completeness, or policy compliance from successful CEP structural validation.¶
CEP records can expose:¶
Implementations SHOULD minimize plaintext personal, proprietary, security- sensitive, or operationally sensitive data.¶
Evidence and anchors SHOULD be referenced by digest when embedding their content is unnecessary.¶
Digest references can still enable correlation and dictionary attacks.¶
Partial export and redaction MAY reduce disclosure, but omitted material MUST NOT be presented as nonexistent, irrelevant, approved, waived, or absent.¶
CEP does not determine access rights, consent, lawful basis, retention periods, trade-secret rights, disclosure duties, or entitlement to export evidence.¶
A successful CEP validation MUST NOT be presented, by itself, as proof:¶
External profiles MAY use CEP evidence when making those determinations, but those conclusions remain outside CEP-2.¶
This document requests no IANA actions.¶
The CEP-2 profile identifier, record-binding extension identifier, CEP check identifiers, and CEP verification-scope identifiers are publisher-controlled HTTPS URI identifiers.¶
Future specifications MAY define registries if deployment experience shows that stable shared registries are needed.¶
{
"cep_record": "2",
"record_type": "evolution-change",
"subject": {
"type": "model-deployment",
"id": "urn:example:deployment:alpha",
"profile": "https://example.org/subjects/model-deployment/v1"
},
"change": {
"digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
"change_profile": "https://example.org/changes/model-update/v1",
"kind": "model-update-manifest",
"media_type": "application/json"
},
"evidence": [
{
"digest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
"kind": "evaluation-report",
"media_type": "application/json"
}
],
"anchors": [
{
"relation": "review-record",
"reference": {
"kind": "digest-record",
"digest": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
"profile": "https://example.org/review/v1",
"media_type": "application/json"
}
}
],
"declared_at": 1790424000
}
¶
The review-record relation in this example is local and deployment-defined; it is not a cross-deployment interoperable relation identifier and does not imply approval.¶
{
"jep": "1",
"id": "urn:uuid:018f4f8d-0000-7000-8000-000000000201",
"verb": "J",
"who": "did:example:deployment-service",
"when": 1790424000,
"what": {
"claim": "evolution-change-record-issued"
},
"ext": {
"https://humanjudgment.org/jep/extensions/cep-record-binding/2": {
"profile": "https://humanjudgment.org/jep/profiles/cep/2",
"record_type": "evolution-change",
"record_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"media_type": "application/json"
}
},
"ext_crit": [
"https://humanjudgment.org/jep/extensions/cep-record-binding/2"
],
"sig": "..."
}
¶
{
"relation": "prior-change-event",
"reference": {
"kind": "jep-event",
"event_identity": {
"who": "did:example:deployment-service",
"id": "urn:uuid:018f4f8d-0000-7000-8000-000000000111"
},
"event_hash": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
}
}
¶
The Event Identity identifies the logical event. The Event Hash pins one exact signed artifact.¶
Major changes from draft-wang-cep-01:¶
what to one critical CEP record-binding extension so D, T, and V retain their Core what semantics;¶
change_profile as a semantic-profile hook for cross-deployment interpretation without defining a universal change taxonomy;¶
profile when cross-deployment identity comparison is required and prohibited unsupported verifiers from claiming identity equivalence;¶
before / after state-transition semantics are outside the CEP-2 baseline and belong to change_profile or companion profiles;¶
archival the required and default repeatable CEP validation mode when no other JEP validation mode is explicitly requested;¶
valid / invalid / indeterminate status;¶