From 704f3521f852fe3a866372ebe0ce8495f257d600 Mon Sep 17 00:00:00 2001 From: claude-bot-go Date: Tue, 28 Jul 2026 10:03:52 +0800 Subject: [PATCH 1/2] feat(aep): add evidence_type, payload, metadata to evidence-envelope schema Add the evidence-type discriminator, payload object (with contents), and metadata key-value map to the evidence-envelope schema so it fully covers the acceptance criteria for #139: - evidence_type (required): discriminator for the evidence kind - payload (required): the evidence content, structure depends on type - metadata (optional): arbitrary key-value metadata about the record Update the valid fixture to include the new required fields. The invalid fixture remains valid (missing created_at_ms, which is still required). All 22 pytest + 18 JS conformance tests pass. Co-Authored-By: Claude --- schemas/aep/evidence-envelope.schema.json | 29 +++++++++++++++++-- .../valid/evidence-envelope/example.json | 8 +++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/schemas/aep/evidence-envelope.schema.json b/schemas/aep/evidence-envelope.schema.json index 227648e..844b8e5 100644 --- a/schemas/aep/evidence-envelope.schema.json +++ b/schemas/aep/evidence-envelope.schema.json @@ -2,11 +2,13 @@ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://wasmagent.dev/schemas/aep/evidence-envelope.schema.json", "title": "EvidenceEnvelope", - "description": "Shared base fields for all AEP evidence records \u2014 schema_version, trace_id, created_at_ms, and optional signature. Every evidence type $refs this schema for its envelope fields.", + "description": "Shared envelope base for all AEP evidence records. Every evidence type wraps its payload in this envelope, which carries schema_version, trace_id, created_at_ms, evidence_type, payload, metadata, and an optional signature.", "type": "object", "required": [ "schema_version", - "created_at_ms" + "created_at_ms", + "evidence_type", + "payload" ], "properties": { "schema_version": { @@ -19,7 +21,28 @@ }, "created_at_ms": { "type": "number", - "description": "UTC epoch milliseconds when the record was created" + "description": "UTC epoch milliseconds when the record was created (envelope timestamp)" + }, + "evidence_type": { + "type": "string", + "description": "Discriminator for the kind of evidence enclosed, e.g. 'execution', 'artifact', 'checkpoint', 'replay', 'memory'" + }, + "payload": { + "description": "The evidence content \u2014 structure depends on evidence_type", + "type": "object", + "properties": { + "contents": { + "description": "The primary evidence payload (opaque per evidence_type)" + } + }, + "additionalProperties": true + }, + "metadata": { + "type": "object", + "description": "Optional key-value metadata about the evidence record", + "additionalProperties": { + "type": ["string", "number", "boolean", "null", "array", "object"] + } }, "signature": { "type": "object", diff --git a/tests/fixtures/valid/evidence-envelope/example.json b/tests/fixtures/valid/evidence-envelope/example.json index e8a3ef0..34a896a 100644 --- a/tests/fixtures/valid/evidence-envelope/example.json +++ b/tests/fixtures/valid/evidence-envelope/example.json @@ -2,6 +2,14 @@ "schema_version": "aep/v0.1", "trace_id": "trace-abc123", "created_at_ms": 1737600000000, + "evidence_type": "artifact", + "payload": { + "contents": "artifact-evidence-data" + }, + "metadata": { + "source": "wasmagent-js", + "correlation_tag": "run-42" + }, "signature": { "alg": "ed25519", "key_id": "key-001", From dda909377851686f37dccef94a91bd87ba5f792b Mon Sep 17 00:00:00 2001 From: claude-bot-go Date: Tue, 28 Jul 2026 10:06:35 +0800 Subject: [PATCH 2/2] Fix #139: [milestone Milestone 4] Create evidence-envelope AEP schema --- schemas/aep/_base.schema.json | 56 +++++++++++++++++ schemas/aep/evidence-envelope.schema.json | 76 ++++++----------------- 2 files changed, 75 insertions(+), 57 deletions(-) create mode 100644 schemas/aep/_base.schema.json diff --git a/schemas/aep/_base.schema.json b/schemas/aep/_base.schema.json new file mode 100644 index 0000000..dd6c0e6 --- /dev/null +++ b/schemas/aep/_base.schema.json @@ -0,0 +1,56 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "urn:wasmagent:aep:base", + "title": "AEPEnvelopeBase", + "description": "Shared base properties for all AEP evidence envelope schemas. Not registered in the schema index — intended to be composed via $ref / allOf.", + "type": "object", + "required": [ + "schema_version", + "created_at_ms" + ], + "properties": { + "schema_version": { + "type": "string", + "description": "Semver-like schema identifier, e.g. aep/v0.1" + }, + "trace_id": { + "type": "string", + "description": "Optional correlation ID linking related evidence records" + }, + "created_at_ms": { + "type": "number", + "description": "UTC epoch milliseconds when the record was created (envelope timestamp)" + }, + "metadata": { + "type": "object", + "description": "Optional key-value metadata about the evidence record", + "additionalProperties": { + "type": ["string", "number", "boolean", "null", "array", "object"] + } + }, + "signature": { + "type": "object", + "description": "Optional tamper-evident signature over the record content", + "required": [ + "alg", + "key_id", + "sig" + ], + "properties": { + "alg": { + "type": "string", + "description": "Signature algorithm, e.g. ed25519" + }, + "key_id": { + "type": "string", + "description": "Identifier of the signing key" + }, + "sig": { + "type": "string", + "description": "Base64-encoded signature bytes" + } + }, + "additionalProperties": false + } + } +} diff --git a/schemas/aep/evidence-envelope.schema.json b/schemas/aep/evidence-envelope.schema.json index 844b8e5..e6e3440 100644 --- a/schemas/aep/evidence-envelope.schema.json +++ b/schemas/aep/evidence-envelope.schema.json @@ -3,70 +3,32 @@ "$id": "https://wasmagent.dev/schemas/aep/evidence-envelope.schema.json", "title": "EvidenceEnvelope", "description": "Shared envelope base for all AEP evidence records. Every evidence type wraps its payload in this envelope, which carries schema_version, trace_id, created_at_ms, evidence_type, payload, metadata, and an optional signature.", - "type": "object", - "required": [ - "schema_version", - "created_at_ms", - "evidence_type", - "payload" - ], - "properties": { - "schema_version": { - "type": "string", - "description": "Semver-like schema identifier, e.g. aep/v0.1" + "allOf": [ + { + "$ref": "_base.schema.json" }, - "trace_id": { - "type": "string", - "description": "Optional correlation ID linking related evidence records" - }, - "created_at_ms": { - "type": "number", - "description": "UTC epoch milliseconds when the record was created (envelope timestamp)" - }, - "evidence_type": { - "type": "string", - "description": "Discriminator for the kind of evidence enclosed, e.g. 'execution', 'artifact', 'checkpoint', 'replay', 'memory'" - }, - "payload": { - "description": "The evidence content \u2014 structure depends on evidence_type", - "type": "object", - "properties": { - "contents": { - "description": "The primary evidence payload (opaque per evidence_type)" - } - }, - "additionalProperties": true - }, - "metadata": { + { "type": "object", - "description": "Optional key-value metadata about the evidence record", - "additionalProperties": { - "type": ["string", "number", "boolean", "null", "array", "object"] - } - }, - "signature": { - "type": "object", - "description": "Optional tamper-evident signature over the record content", "required": [ - "alg", - "key_id", - "sig" + "evidence_type", + "payload" ], "properties": { - "alg": { + "evidence_type": { "type": "string", - "description": "Signature algorithm, e.g. ed25519" + "description": "Discriminator for the kind of evidence enclosed, e.g. 'execution', 'artifact', 'checkpoint', 'replay', 'memory'" }, - "key_id": { - "type": "string", - "description": "Identifier of the signing key" - }, - "sig": { - "type": "string", - "description": "Base64-encoded signature bytes" + "payload": { + "description": "The evidence content — structure depends on evidence_type", + "type": "object", + "properties": { + "contents": { + "description": "The primary evidence payload (opaque per evidence_type)" + } + }, + "additionalProperties": true } - }, - "additionalProperties": false + } } - } + ] }