Conversation portability
The Conversation Profile represents a conversation as a graph of message records, preserving provider meaning while declaring what could not be carried.
A graph, not a transcript
Messages retain parent references, source roles, content parts, sibling order, branches, selected leaves, and provider extensions. This avoids silently turning a regenerated response or edited path into one false linear history.
Conversation record
{
"ocp_version": "0.4",
"schema_uri": "https://opencontinuity.org/schemas/0.4/conversation.schema.json",
"type": "conversation",
"id": "urn:uuid:00000000-0000-4000-8000-000000000200",
"revision": 1,
"created_at": "2026-08-13T12:00:00Z",
"created_by": {
"id": "https://provider-one.example",
"type": "service",
"display_name": "Synthetic OCP Provider 1"
},
"extensions": {},
"profile_id": "https://opencontinuity.org/profiles/conversation",
"profile_version": "0.4",
"compatible_core": ">=0.4 <0.5",
"subjects": [
{
"id": "urn:uuid:00000000-0000-4000-8000-000000000101",
"type": "person",
"display_name": "Synthetic User"
}
],
"space_ref": {
"id": "urn:uuid:00000000-0000-4000-8000-000000000102",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/context-space.schema.json",
"digest": "sha-256:7d1d417fcb3aa98fadae41f5be2b6cb59ad4de12264fbd2f0a633d521c691255"
},
"source_authority": {
"id": "https://provider-a.example",
"type": "service",
"display_name": "Synthetic Provider A"
},
"runtime_source": {
"actor": {
"id": "https://provider-one.example",
"type": "service",
"display_name": "Synthetic OCP Provider 1"
},
"software_name": "OCP Reference Importer",
"software_version": "0.4-test",
"execution_context": "offline_import",
"build_digest": "sha-256:1111111111111111111111111111111111111111111111111111111111111111"
},
"provider_conversation_id": "conversation-abc",
"title": "Synthetic branching history",
"source_created_at": "2026-08-01T10:00:00Z",
"source_updated_at": "2026-08-01T10:01:03Z",
"imported_at": "2026-08-13T11:55:00Z",
"representation_created_at": "2026-08-13T12:00:00Z",
"root_message_refs": [
{
"id": "urn:uuid:00000000-0000-4000-8000-000000000210",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/message.schema.json",
"digest": "sha-256:cc7b803e2dedd3ed3fc7e69036a607d904116e57ca49c777b3a6cfc0e7f85047"
}
],
"message_refs": [
{
"id": "urn:uuid:00000000-0000-4000-8000-000000000210",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/message.schema.json",
"digest": "sha-256:cc7b803e2dedd3ed3fc7e69036a607d904116e57ca49c777b3a6cfc0e7f85047"
},
{
"id": "urn:uuid:00000000-0000-4000-8000-000000000211",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/message.schema.json",
"digest": "sha-256:4a3df2a009e008ea41edb96ae9087440584fd15ffe4a37cca7857ada1b108ee1"
},
{
"id": "urn:uuid:00000000-0000-4000-8000-000000000212",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/message.schema.json",
"digest": "sha-256:e617c7a9a0db6d6c008c66b5df052d893e392f5690a48d6b0e3b4e8157367a49"
},
{
"id": "urn:uuid:00000000-0000-4000-8000-000000000213",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/message.schema.json",
"digest": "sha-256:01d3af59849455b42805390084f4d647899115e51657c5ae0b2ebc6f28fbc6ae"
},
{
"id": "urn:uuid:00000000-0000-4000-8000-000000000214",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/message.schema.json",
"digest": "sha-256:84f094d757715fa8cb85d98c526d891dbf1fbe788ae69c25ebe6a2dfe56dd2fc"
}
],
"selected_leaf_refs": [
{
"id": "urn:uuid:00000000-0000-4000-8000-000000000214",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/message.schema.json",
"digest": "sha-256:84f094d757715fa8cb85d98c526d891dbf1fbe788ae69c25ebe6a2dfe56dd2fc"
}
],
"graph_state": "complete",
"branches": [
{
"branch_id": "original-response",
"leaf_ref": {
"id": "urn:uuid:00000000-0000-4000-8000-000000000211",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/message.schema.json",
"digest": "sha-256:4a3df2a009e008ea41edb96ae9087440584fd15ffe4a37cca7857ada1b108ee1"
},
"state": "abandoned"
},
{
"branch_id": "regenerated-response",
"leaf_ref": {
"id": "urn:uuid:00000000-0000-4000-8000-000000000214",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/message.schema.json",
"digest": "sha-256:84f094d757715fa8cb85d98c526d891dbf1fbe788ae69c25ebe6a2dfe56dd2fc"
},
"state": "selected"
}
],
"participants": [
{
"id": "urn:uuid:00000000-0000-4000-8000-000000000101",
"type": "person",
"display_name": "Synthetic User"
},
{
"id": "https://provider-a.example",
"type": "service",
"display_name": "Synthetic Provider A"
}
],
"ordering_semantics": "parent_edges_then_optional_sibling_order",
"integrity": {
"algorithm": "sha-256",
"canonicalization": "RFC8785",
"semantic_graph_digest": "sha-256:1ae19963edf7d023fe77e3f17693a293514ed17470ab52ba00b8454bd95e7573"
},
"provider_extensions": {
"provider_a.export_variant": "synthetic-v1"
},
"sensitivity": "normal",
"lifecycle": {
"status": "active"
}
}JSONSynthetic branching-history fixture
Message and content parts
Portable content parts distinguish text, artifact references, citations, and other typed content. Each part can carry its own instruction treatment, redaction state, and integrity metadata.
{
"ocp_version": "0.4",
"schema_uri": "https://opencontinuity.org/schemas/0.4/message.schema.json",
"type": "message",
"id": "urn:uuid:00000000-0000-4000-8000-000000000210",
"revision": 1,
"created_at": "2026-08-01T10:00:00Z",
"created_by": {
"id": "https://provider-one.example",
"type": "service",
"display_name": "Synthetic OCP Provider 1"
},
"extensions": {},
"profile_id": "https://opencontinuity.org/profiles/conversation",
"profile_version": "0.4",
"conversation_ref": {
"id": "urn:uuid:00000000-0000-4000-8000-000000000200",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/conversation.schema.json"
},
"sender": {
"id": "urn:uuid:00000000-0000-4000-8000-000000000101",
"type": "person",
"display_name": "Synthetic User"
},
"source_role": "user",
"message_kind": "user_turn",
"parent_refs": [],
"sent_at": "2026-08-01T10:00:00Z",
"source_timestamp_precision": "second",
"content_parts": [
{
"part_id": "urn:uuid:00000000-0000-4000-8000-000000000410",
"type": "text",
"text": "Please make a visual summary of the attached reference.",
"language": "en",
"instruction_treatment": "untrusted_data"
},
{
"part_id": "urn:uuid:00000000-0000-4000-8000-000000000411",
"type": "artifact_ref",
"artifact_ref": {
"id": "urn:uuid:00000000-0000-4000-8000-000000000300",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/artifact.schema.json",
"digest": "sha-256:e80526f8a4b34a46c2dba633440a155e770d793d3a40c92c838cc5e3446ea395"
},
"relationship": "attachment",
"semantic_type_hint": "image",
"content_disclosed": false,
"instruction_treatment": "untrusted_data"
}
],
"artifact_refs": [
{
"id": "urn:uuid:00000000-0000-4000-8000-000000000300",
"revision": 1,
"schema_uri": "https://opencontinuity.org/schemas/0.4/artifact.schema.json",
"digest": "sha-256:e80526f8a4b34a46c2dba633440a155e770d793d3a40c92c838cc5e3446ea395"
}
],
"citation_refs": [],
"tool_interaction_refs": [],
"provider_message_id": "provider-message-210",
"generation_metadata": {},
"sibling_order": 0,
"instruction_treatment": "untrusted_data",
"redaction_state": {
"state": "none"
},
"sensitivity": "normal",
"lifecycle": {
"status": "active"
},
"provider_extensions": {},
"integrity": {
"algorithm": "sha-256",
"canonicalization": "RFC8785",
"content_parts_digest": "sha-256:f180cb0153a01782f1eade2d8400800424f4e538e83eb35e4a7ebc162bdf24e3"
}
}JSONMessage with an artifact reference
Round-trip evidence
- Compare semantic graphs, not provider-specific serialization order.
- Preserve unknown non-critical extensions through import and export.
- Record downgrade and loss by class and affected path.
- Keep the source authority distinct from the runtime importer.
Was this page useful?
Feedback is stored in this browser only until a project feedback endpoint is adopted.
Thank you. Your note was saved locally and has not been transmitted.