| Internet-Draft | COE | September 2026 |
| Wang | Expires 30 March 2027 | [Page] |
This document defines COE-2, an optional profile of the Judgment Event Protocol (JEP) [JEP] for binding shared observation records and shared-state claims across heterogeneous agents, sensors, world models, simulators, and human-operated systems.¶
COE-2 defines one critical JEP record-binding extension, two minimal digest-addressed record types, evidence-reference semantics, and independent COE validation checks. JEP remains authoritative for event verbs, Event Identity, Event Hash, signatures, references, extension processing, validation modes, and acceptance semantics.¶
COE-2 provides verifiable shared-observation infrastructure. It does not determine objective world truth, factual causality, consensus, authorization, legal effect, fairness, trust weights, or regulatory compliance. A valid COE result establishes only the cryptographic and structural properties actually checked under the selected profiles.¶
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.¶
Heterogeneous agents, sensors, simulators, world models, and human-operated systems increasingly exchange observation-derived evidence about shared operational environments. These systems may observe different projections of the same target, use different evidence formats, or derive state claims under different policies.¶
COE addresses a narrow interoperability problem:¶
Which observation or state-claim record was bound to this JEP event, which evidence references does that record declare, and can those bindings be independently revalidated?¶
COE does not define a universal world model or a truth engine.¶
JEP Profiles [JEP-PROFILES] defines profile selection and composition rules. JEP Conformance [JEP-CONFORMANCE] defines structured validation-result and test-harness conventions. JEP Receipt Profile [JEP-RECEIPT] MAY package COE records as evidence artifacts. JAC [JAC] MAY express declared dependencies between JEP events associated with COE records.¶
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.¶
COE-2 defines:¶
COE-2 does not define:¶
The entity identified in an Observation Record as having produced or reported the observation.¶
The Observer need not be the same entity as the JEP actor or signer.¶
The object, environment, resource, entity, region, process, or other subject about which an observation or state claim is made.¶
A digest-addressed record declaring that an Observer produced or reported an observation about a Target and identifying the observation payload and supporting evidence.¶
An Observation Record does not establish that the observation is true, complete, unbiased, or sufficient.¶
A digest-addressed record declaring a state claim about a Target under an identified synthesis profile and evidence set.¶
In Shared-State Claim, "shared" means that the claim is structured for exchange across systems. It does not mean that the claim is agreed, consensual, authoritative, unique, or objectively true.¶
A Shared-State Claim does not establish objective world state, consensus, or uniqueness.¶
A digest-first reference to evidence material.¶
A retrieval URI, when present, is a hint and is not the integrity identity of the evidence.¶
The profile identifier is:¶
https://humanjudgment.org/jep/profiles/coe/2¶
The label COE-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 COE record-binding extension identifier is:¶
https://humanjudgment.org/jep/extensions/coe-record-binding/2¶
A JEP event claiming COE-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 COE-2 validation.¶
COE-2 is not wire-compatible with COE-Core-1 from draft-wang-coe-01.¶
COE-Core-1 commonly bound a COE record by placing its digest in JEP what. That cannot serve as a generic JEP-Core 0.7 binding rule because D, T, and V have verb-specific required what members.¶
COE-2 moves record binding to one critical extension and leaves Core what semantics entirely under JEP-Core.¶
Historical COE-Core-1 records and events MUST NOT be silently rewritten as COE-2 records or events.¶
COE-2 relies on JEP-Core for:¶
(who,id);¶
ref;¶
ext and ext_crit;¶
COE-2 MUST NOT redefine those semantics.¶
A producer MUST satisfy the selected JEP verb's Core requirements before COE 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.¶
COE metadata MUST NOT replace those fields.¶
The extension value MUST be a JSON object containing:¶
profile MUST equal https://humanjudgment.org/jep/profiles/coe/2.¶
record_type MUST be one of:¶
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 COE-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 COE-2 event binds exactly one primary COE record through this extension.¶
{
"ext": {
"https://humanjudgment.org/jep/extensions/coe-record-binding/2": {
"profile": "https://humanjudgment.org/jep/profiles/coe/2",
"record_type": "observation",
"record_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"media_type": "application/json"
}
},
"ext_crit": [
"https://humanjudgment.org/jep/extensions/coe-record-binding/2"
]
}
¶
The example digest is illustrative.¶
A COE 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 such a back-reference, because Event Identity is stable independently of the event signature.¶
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. URI resolution success MUST NOT be treated as digest-integrity success.¶
If an Evidence Reference identifies an object governed by another profile, such as JEP Receipt Profile, validity under that other profile MUST be evaluated and reported separately from COE validity.¶
A COE-2 Observation Record MUST be a JSON object containing:¶
coe_record MUST equal "2".¶
record_type MUST equal "observation".¶
observer MUST be an object containing a non-empty string id. observer.type MAY be a non-empty string.¶
target MUST be an object containing non-empty string members type and id.¶
observed_at MUST be a non-negative integer representing declared Unix seconds. It is not trusted time or proof of freshness.¶
observation MUST be an Evidence Reference whose digest identifies the observation payload.¶
evidence MUST be an array of zero or more Evidence References.¶
An Observation Record MAY additionally contain:¶
observation_profile, when present, MUST be an absolute URI identifying the schema, vocabulary, semantic profile, or equivalent interpretation contract for the observation payload.¶
If interoperable semantic interpretation of the observation payload is required outside the originating deployment, the producer MUST include observation_profile.¶
A verifier that does not understand observation_profile MAY still validate the COE record binding and digest, but MUST NOT claim semantic interpretation of the observation payload under that profile.¶
world_model, when present, MUST be an Evidence Reference.¶
adapter, when present, MUST be an Evidence Reference.¶
context, when present, MUST be a JSON object whose semantics are defined by the deployment or an explicitly selected companion profile.¶
COE-2 does not define confidence scores, trust weights, or accuracy metrics. A companion profile MAY define them.¶
A COE-2 Shared-State Claim Record MUST be a JSON object containing:¶
coe_record MUST equal "2".¶
record_type MUST equal "shared-state-claim".¶
target MUST be an object containing non-empty string members type and id.¶
claim MUST be an Evidence Reference identifying the state-claim payload.¶
evidence MUST be a non-empty array of Evidence References.¶
synthesis_profile MUST be an absolute URI identifying the procedure or policy under which the claim was derived.¶
A Shared-State Claim Record MAY contain:¶
claim_profile, when present, MUST be an absolute URI identifying the schema, vocabulary, semantic profile, or equivalent interpretation contract for the state-claim payload.¶
If interoperable semantic interpretation of the claim payload is required outside the originating deployment, the producer MUST include claim_profile.¶
A verifier that does not understand claim_profile MAY still validate the COE record binding and digest, but MUST NOT claim semantic interpretation of the state-claim payload under that profile.¶
synthesis_report, when present, MUST be an Evidence Reference.¶
validity, when present, MUST be an object that MAY contain valid_from and valid_until.¶
valid_from and valid_until, when present and non-null, MUST be non-negative integers representing declared Unix seconds.¶
If both are present and non-null, valid_until MUST NOT precede valid_from.¶
These times are declared claim intervals. They are not trusted timestamps or proof that the external world had the claimed state during that interval.¶
context, when present, MUST be a JSON object defined by the deployment or an explicitly selected companion profile.¶
The Shared-State Claim Record Digest uses JCS [RFC8785] and is:¶
sha256(UTF8(JCS(shared_state_claim_record)))¶
COE-2 producers and verifiers MUST support sha256 for Shared-State Claim digests.¶
COE-2 does not define a state-synthesis algorithm.¶
A synthesis profile MAY define aggregation, filtering, conflict resolution, confidence handling, voting, weighting, model comparison, or other methods.¶
A COE verifier MUST NOT infer that a synthesis profile is correct, unbiased, complete, authoritative, or suitable merely because its identifier is present.¶
COE-2 does not assign new meanings to J/D/T/V.¶
A J event MAY carry a claim concerning issuance, adoption, or interpretation of a COE record while the COE binding remains in the critical extension.¶
A D event MAY carry a COE binding, but its delegation meaning remains entirely defined by JEP-Core and any applicable delegation profile.¶
A T event MAY terminate future reliance on a referenced JEP event within its declared termination scope. COE-2 does not define a state-claim retraction or cascade rule merely because a COE record is associated with that event.¶
A V event MAY record evaluation of a COE record or COE evidence under a declared verification scope.¶
COE record type MUST NOT be inferred solely from the JEP verb.¶
JEP Receipt Profile is optional for COE-2.¶
A COE record MAY appear as an external evidence object in a JEP Receipt Profile bundle.¶
A receipt bundle MAY include:¶
Receipt Profile validity and COE validity MUST be reported separately.¶
A valid receipt does not make a COE state claim true, and a valid COE record does not by itself make a receipt complete.¶
JAC is optional for COE-2.¶
A JEP event associated with a COE record MAY also carry JAC dependency metadata.¶
A COE Evidence Reference does not automatically create a JAC graph edge.¶
A JAC edge between events does not automatically create a COE evidence relationship.¶
If both profiles are used, implementations MUST preserve their independent semantics and validation results.¶
JAC validity does not establish observation truth, state-claim truth, or COE evidence sufficiency.¶
A COE validation result separates:¶
COE MUST NOT overwrite the underlying JEP validation result.¶
A COE-2 verifier MUST support JEP archival validation mode.¶
If no JEP validation mode is explicitly requested, COE validation MUST use archival mode.¶
Archival COE validation MUST NOT consume JEP acceptance state.¶
A deployment MAY explicitly request another JEP validation mode when needed.¶
The initial COE-2 check identifiers are:¶
https://humanjudgment.org/jep/profiles/coe/2#profile-binding¶
https://humanjudgment.org/jep/profiles/coe/2#record-binding¶
https://humanjudgment.org/jep/profiles/coe/2#record-structure¶
https://humanjudgment.org/jep/profiles/coe/2#target-consistency¶
https://humanjudgment.org/jep/profiles/coe/2#evidence-reference¶
https://humanjudgment.org/jep/profiles/coe/2#evidence-integrity¶
https://humanjudgment.org/jep/profiles/coe/2#synthesis-reference¶
https://humanjudgment.org/jep/profiles/coe/2#validity-interval¶
Check statuses use the JEP conformance vocabulary:¶
A verifier MUST NOT report an unperformed COE check as pass.¶
For any COE-2 event, the required checks are:¶
target-consistency is required when the requested validation context contains an external target identifier to compare against the COE record.¶
The presence of observation_profile or claim_profile does not make semantic interpretation part of baseline COE structural validation. A deployment or companion profile that requires semantic interpretation MUST define the supported profile identifiers and the validation procedure for them.¶
evidence-reference is required when the COE record contains evidence references.¶
evidence-integrity is required only for evidence objects that the requested validation context requires to be resolved and checked.¶
synthesis-reference and validity-interval are required for Shared-State Claim Records when the corresponding fields are present.¶
COE-2 does not define a universal target-comparison algorithm.¶
A domain profile that requires target matching MUST define normalization and comparison rules.¶
Absent such a domain rule, a verifier MUST NOT claim semantic target equality merely from string similarity.¶
The COE overall status is one of:¶
For the requested COE validation context:¶
invalid means the underlying required JEP validation is invalid or at least one required COE check failed;¶
indeterminate means no required check failed, but the underlying required JEP validation is indeterminate or at least one required COE check is unsupported, not checked, or indeterminate;¶
valid means the underlying required JEP validation is valid and every required COE check passed or was not applicable.¶
valid means structurally and cryptographically valid under the selected checks. It does not mean objectively true.¶
A COE verifier SHOULD:¶
record_digest;¶
record_type;¶
A JEP V event MAY record a COE evaluation.¶
The V event MUST satisfy JEP-Core V requirements.¶
COE-2 defines the following provisional profile-specific verification scopes:¶
https://humanjudgment.org/jep/profiles/coe/2#record-binding¶
https://humanjudgment.org/jep/profiles/coe/2#observation-validation¶
https://humanjudgment.org/jep/profiles/coe/2#state-claim-validation¶
https://humanjudgment.org/jep/profiles/coe/2#evidence-integrity¶
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 the independent per-check status vocabulary used by a COE validator.¶
A V event MUST NOT imply truth, completeness, or determinability beyond its declared verification scope.¶
COE-2 uses an open-world observation model.¶
Absence of an Observation Record MUST NOT be interpreted as proof that an observation did not occur.¶
Absence of a conflicting observation MUST NOT be interpreted as proof that no conflicting observation exists.¶
A set of COE records MUST NOT be presented as complete unless an explicitly selected external profile defines a complete-observation assumption and the requirements of that profile were satisfied.¶
COE-2 does not define whether a target fact is uniquely or zero-error determinable from available evidence.¶
A determinability report MAY be referenced as evidence under an external profile, but COE validity MUST NOT be presented as proof that the report is correct or that the target fact is determinable.¶
COE-01 defined or described adapter, synthesis-report, version-anchor, timestamp-anchor, determinability-report, and multiple record-type-specific extensions.¶
COE-2 removes those elements from the narrow waist.¶
A companion profile MAY define:¶
Such profiles MUST NOT redefine JEP-Core semantics or the COE-2 baseline record types.¶
A conforming COE-2 Producer MUST:¶
ext_crit;¶
A conforming COE-2 Verifier MUST:¶
archival validation mode;¶
indeterminate rather than success when a required check cannot be completed.¶
A valid COE result does not prove observation truth or objective state.¶
Implementations MUST consider:¶
A verifier MUST compare the recomputed COE record digest with the digest inside the signed critical COE extension.¶
A verifier MUST NOT infer actor binding, authority, causality, truth, completeness, or policy compliance from successful COE structural validation.¶
COE records can expose:¶
Implementations SHOULD minimize plaintext personal or sensitive data.¶
Evidence SHOULD be referenced by digest when embedding it is unnecessary.¶
Digest references may still support correlation or dictionary attacks.¶
Partial export and redaction MAY reduce disclosure, but omitted material MUST NOT be presented as nonexistent or irrelevant.¶
COE does not determine access rights, consent, lawful basis, retention periods, or entitlement to disclose evidence.¶
A successful COE validation MUST NOT be presented, by itself, as proof:¶
External profiles MAY use COE evidence when making those determinations, but those conclusions remain outside COE-2.¶
This document requests no IANA actions.¶
The COE-2 profile identifier, record-binding extension identifier, COE check identifiers, and COE verification-scope identifiers are publisher-controlled HTTPS URI identifiers.¶
Future specifications MAY define registries if deployment experience shows that stable shared registries are needed.¶
{
"coe_record": "2",
"record_type": "observation",
"observer": {
"id": "did:example:robot-a",
"type": "sensor-system"
},
"target": {
"type": "warehouse-zone",
"id": "warehouse-zone-3"
},
"observed_at": 1790424000,
"observation": {
"digest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
"kind": "sensor-output",
"media_type": "application/json"
},
"observation_profile": "https://example.org/coe/observations/temperature/v1",
"evidence": [
{
"digest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
"kind": "sensor-calibration",
"media_type": "application/json"
}
]
}
¶
{
"coe_record": "2",
"record_type": "shared-state-claim",
"target": {
"type": "warehouse-zone",
"id": "warehouse-zone-3"
},
"claim": {
"digest": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
"kind": "state-claim-payload",
"media_type": "application/json"
},
"claim_profile": "https://example.org/coe/claims/warehouse-state/v1",
"evidence": [
{
"digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"profile": "https://humanjudgment.org/jep/profiles/coe/2",
"record_type": "observation",
"media_type": "application/json"
}
],
"synthesis_profile": "https://example.org/coe-synthesis/v1",
"validity": {
"valid_from": 1790424000,
"valid_until": 1790427600
}
}
¶
{
"jep": "1",
"id": "urn:uuid:018f4f8d-0000-7000-8000-000000000101",
"verb": "J",
"who": "did:example:observer-service",
"when": 1790424000,
"what": {
"claim": "observation-record-issued"
},
"ext": {
"https://humanjudgment.org/jep/extensions/coe-record-binding/2": {
"profile": "https://humanjudgment.org/jep/profiles/coe/2",
"record_type": "observation",
"record_digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"media_type": "application/json"
}
},
"ext_crit": [
"https://humanjudgment.org/jep/extensions/coe-record-binding/2"
],
"sig": "..."
}
¶
Major changes from draft-wang-coe-01:¶
what digest-binding pattern with one critical COE record-binding extension so D, T, and V retain their Core what semantics;¶
observation_profile and claim_profile as optional semantic-profile hooks for interoperable payload interpretation without defining a global ontology;¶
archival mode the required and default repeatable COE validation mode when no other mode is explicitly requested;¶
valid / invalid / indeterminate result semantics;¶