{"envelope":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"event_id":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"body":{"anyOf":[{"type":"object","properties":{"protocol":{"type":"string","const":"dsm-event"},"version":{"type":"number","const":1},"signature_algorithm":{"type":"string","const":"Ed25519"},"hash_algorithm":{"type":"string","const":"sha256"},"actor_id":{"type":"string","pattern":"^dsm:actor:sha256:[0-9a-f]{64}$"},"signing_key_id":{"type":"string","pattern":"^ed25519:[A-Za-z0-9_-]{43}$"},"namespace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"nonce":{"type":"string","pattern":"^[A-Za-z0-9_-]{22}$"},"client_time":{"type":"string"},"parents":{"maxItems":32,"type":"array","items":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"}},"event_type":{"type":"string","const":"node.create"},"schema_id":{"type":"string","const":"dsm:pilot:v0:claim"},"payload":{"type":"object","properties":{"node_type":{"type":"string","const":"dsm:core:v1:CLAIM"},"attributes":{"type":"object","properties":{"proposition":{"type":"string","minLength":1},"scope":{"type":"string","minLength":1}},"required":["proposition","scope"],"additionalProperties":false}},"required":["node_type","attributes"],"additionalProperties":false}},"required":["protocol","version","signature_algorithm","hash_algorithm","actor_id","signing_key_id","namespace_id","nonce","client_time","parents","event_type","schema_id","payload"],"additionalProperties":false},{"type":"object","properties":{"protocol":{"type":"string","const":"dsm-event"},"version":{"type":"number","const":1},"signature_algorithm":{"type":"string","const":"Ed25519"},"hash_algorithm":{"type":"string","const":"sha256"},"actor_id":{"type":"string","pattern":"^dsm:actor:sha256:[0-9a-f]{64}$"},"signing_key_id":{"type":"string","pattern":"^ed25519:[A-Za-z0-9_-]{43}$"},"namespace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"nonce":{"type":"string","pattern":"^[A-Za-z0-9_-]{22}$"},"client_time":{"type":"string"},"parents":{"maxItems":32,"type":"array","items":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"}},"event_type":{"type":"string","const":"node.create"},"schema_id":{"type":"string","const":"dsm:pilot:v0.2:memory"},"payload":{"oneOf":[{"type":"object","properties":{"node_type":{"type":"string","const":"dsm:core:v1:METHOD"},"attributes":{"type":"object","properties":{"title":{"type":"string","minLength":1},"purpose":{"type":"string","minLength":1},"applicability":{"type":"string","minLength":1},"prerequisites":{"type":"string","minLength":1},"inputs":{"type":"string","minLength":1},"procedure":{"type":"string","minLength":1},"outputs":{"type":"string","minLength":1},"software_dependencies":{"type":"string","minLength":1},"limitations":{"type":"string","minLength":1},"failure_modes":{"type":"string","minLength":1},"version":{"type":"string","minLength":1}},"required":["title","purpose","applicability","prerequisites","inputs","procedure","outputs","software_dependencies","limitations","failure_modes","version"],"additionalProperties":false}},"required":["node_type","attributes"],"additionalProperties":false},{"type":"object","properties":{"node_type":{"type":"string","const":"dsm:core:v1:ARTIFACT"},"attributes":{"type":"object","properties":{"title":{"type":"string","minLength":1},"description":{"type":"string","minLength":1},"content_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"media_type":{"type":"string","minLength":1},"byte_length":{"type":"integer","minimum":0,"maximum":65536},"inline_text":{"type":"string","minLength":1}},"required":["title","description","content_hash","media_type","byte_length","inline_text"],"additionalProperties":false}},"required":["node_type","attributes"],"additionalProperties":false},{"type":"object","properties":{"node_type":{"type":"string","const":"dsm:core:v1:OBSERVATION"},"attributes":{"type":"object","properties":{"title":{"type":"string","minLength":1},"result":{"type":"string","minLength":1},"conditions":{"type":"string","minLength":1},"limitations":{"type":"string","minLength":1}},"required":["title","result","conditions","limitations"],"additionalProperties":false}},"required":["node_type","attributes"],"additionalProperties":false}]}},"required":["protocol","version","signature_algorithm","hash_algorithm","actor_id","signing_key_id","namespace_id","nonce","client_time","parents","event_type","schema_id","payload"],"additionalProperties":false},{"type":"object","properties":{"protocol":{"type":"string","const":"dsm-event"},"version":{"type":"number","const":1},"signature_algorithm":{"type":"string","const":"Ed25519"},"hash_algorithm":{"type":"string","const":"sha256"},"actor_id":{"type":"string","pattern":"^dsm:actor:sha256:[0-9a-f]{64}$"},"signing_key_id":{"type":"string","pattern":"^ed25519:[A-Za-z0-9_-]{43}$"},"namespace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"nonce":{"type":"string","pattern":"^[A-Za-z0-9_-]{22}$"},"client_time":{"type":"string"},"parents":{"maxItems":32,"type":"array","items":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"}},"event_type":{"type":"string","const":"edge.assert"},"schema_id":{"type":"string","const":"dsm:pilot:v0.2:relation"},"payload":{"type":"object","properties":{"relation_type":{"type":"string","enum":["USES_METHOD","USES_ARTIFACT","REPRODUCES","SUPERSEDES"]},"subject":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"object":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"evidence":{"maxItems":32,"type":"array","items":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"}},"context":{"type":"string","minLength":1}},"required":["relation_type","subject","object","evidence","context"],"additionalProperties":false}},"required":["protocol","version","signature_algorithm","hash_algorithm","actor_id","signing_key_id","namespace_id","nonce","client_time","parents","event_type","schema_id","payload"],"additionalProperties":false},{"type":"object","properties":{"protocol":{"type":"string","const":"dsm-event"},"version":{"type":"number","const":1},"signature_algorithm":{"type":"string","const":"Ed25519"},"hash_algorithm":{"type":"string","const":"sha256"},"actor_id":{"type":"string","pattern":"^dsm:actor:sha256:[0-9a-f]{64}$"},"signing_key_id":{"type":"string","pattern":"^ed25519:[A-Za-z0-9_-]{43}$"},"namespace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"nonce":{"type":"string","pattern":"^[A-Za-z0-9_-]{22}$"},"client_time":{"type":"string"},"parents":{"maxItems":32,"type":"array","items":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"}},"event_type":{"type":"string","const":"edge.assert"},"schema_id":{"type":"string","const":"dsm:pilot:v0:relation"},"payload":{"type":"object","properties":{"relation_type":{"type":"string","enum":["CITES","SUPPORTS","CONTRADICTS"]},"subject":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"object":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"evidence":{"maxItems":32,"type":"array","items":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"}},"context":{"type":"string","minLength":1}},"required":["relation_type","subject","object","evidence","context"],"additionalProperties":false}},"required":["protocol","version","signature_algorithm","hash_algorithm","actor_id","signing_key_id","namespace_id","nonce","client_time","parents","event_type","schema_id","payload"],"additionalProperties":false},{"type":"object","properties":{"protocol":{"type":"string","const":"dsm-event"},"version":{"type":"number","const":1},"signature_algorithm":{"type":"string","const":"Ed25519"},"hash_algorithm":{"type":"string","const":"sha256"},"actor_id":{"type":"string","pattern":"^dsm:actor:sha256:[0-9a-f]{64}$"},"signing_key_id":{"type":"string","pattern":"^ed25519:[A-Za-z0-9_-]{43}$"},"namespace_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"nonce":{"type":"string","pattern":"^[A-Za-z0-9_-]{22}$"},"client_time":{"type":"string"},"parents":{"maxItems":32,"type":"array","items":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"}},"event_type":{"type":"string","const":"assertion.retract"},"schema_id":{"type":"string","const":"dsm:pilot:v0:retraction"},"payload":{"type":"object","properties":{"target":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"reason":{"type":"string","minLength":1}},"required":["target","reason"],"additionalProperties":false}},"required":["protocol","version","signature_algorithm","hash_algorithm","actor_id","signing_key_id","namespace_id","nonce","client_time","parents","event_type","schema_id","payload"],"additionalProperties":false}]},"signature":{"type":"string"}},"required":["event_id","body","signature"],"additionalProperties":false},"profile":"dsm-pilot-v0","constraints":{"canonicalization":"RFC 8785 JCS; strict JSON: no duplicate decoded keys, invalid Unicode, non-integer numbers or negative zero","event_id":"sha256: + lowercase hex SHA-256 of UTF-8(DSM-EVENT-V1\\n + JCS(body))","signature":"Ed25519 over the same domain-prefixed bytes; base64url without padding; prime-order canonical key and R point required","nonce":"16 random bytes, canonical base64url without padding","parents":"Sorted unique event IDs; at most 32 distinct dependencies across parents and payload references","evidence":"Unique event IDs; not fetched URLs or uploaded objects","client_time":"Exact UTC timestamp YYYY-MM-DDTHH:mm:ss.sssZ; a client assertion","text_fields":"1–8192 UTF-8 bytes each","limits":{"transport_bytes":73728,"canonical_body_bytes":65536,"json_depth":16,"page_size":50},"references":"Dependencies must already be admitted and cannot be retraction events. Retractions require the original signing key and asserted actor ID."}}