Fix #138: Create schemas/v0.1/canonical-event.schema.json and aep-record type definition in @wasmagent/protocol - #145
Fix #138: Create schemas/v0.1/canonical-event.schema.json and aep-record type definition in @wasmagent/protocol#145telleroutlook wants to merge 2 commits into
schemas/v0.1/canonical-event.schema.json and aep-record type definition in @wasmagent/protocol#145Conversation
Create tests/fixtures/valid/artifact-attestation/basic.json and tests/fixtures/invalid/artifact-attestation/missing-required-field.json so verify-first can proceed to PROCEED when schema + index entry land.
…record` type definition in @wasmagent/protocol
SummaryThe PR safely adds AEP record types, canonical-event schema, and comprehensive test coverage across TypeScript and Python with no blockers Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "The PR safely adds AEP record types, canonical-event schema, and comprehensive test coverage across TypeScript and Python with no blockers",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
|
Merge gate failed: |
SummaryType consistency issue and incomplete test coverage for newly added canonical-event schema Severitymedium Blocking findings
Verdict❌ Rejected Merge riskmedium Audit
{
"approved": false,
"severity": "medium",
"summary": "Type consistency issue and incomplete test coverage for newly added canonical-event schema",
"findings": [
{
"file": "tests/fixtures/valid/canonical-event/example.json",
"line": 9,
"issue": "Canonical-event schema requires 'tool' object for type=tool_call (see schemas/v0.1/canonical-event.schema.json:82 allOf), but test fixture at tests/fixtures/invalid/canonical-event/example.json is missing 'tool' field entirely. The 'valid' fixture has 'tool' but the invalid test case should validate the schema's conditional requirement.",
"kind": "blocker"
},
{
"file": "src/wasmagent_protocol/__init__.py",
"line": 63,
"issue": "Python AepRecord TypedDict uses 'dict[str, Any]' for nested structures (capability_decisions, actions, verifier_results, etc.) while TypeScript defines specific interfaces (AepCapabilityDecision, AepAction, AepVerifierResult). This type system inconsistency means Python consumers lose type safety - they can't get proper autocomplete/IDE support for nested fields that are explicitly modeled in TypeScript. Since the PR's stated purpose is adding 'AEP record type' support to mirror the TypeScript types (index.d.ts comment: 'mirrors schemas/aep/aep-record.schema.json'), the incomplete Python implementation is a blocker for the stated goal.",
"kind": "blocker"
},
{
"file": "schemas/index.json",
"line": 192,
"issue": "New 'canonical-event' schema registered with consumers 'open-agent-audit', 'wasmagent-js', 'trace-pipeline' but no test validates that wasmagent-js can actually consume this schema through the package API. The PR only adds a basic conformance test in tests/test_aep_record.py that the schema exists and validates one sample. For a cross-repo contract schema declared as consumed by multiple downstream repos, this is insufficient coverage.",
"kind": "suggestion"
}
],
"merge_risk": "medium",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
SummaryPurely additive PR adding AEP record types and canonical-event schema with comprehensive tests; no breaking changes or blockers found Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Purely additive PR adding AEP record types and canonical-event schema with comprehensive tests; no breaking changes or blockers found",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
|
Merge gate failed: |
SummaryClean additive changes introducing AEP record types and canonical-event schema with corresponding tests Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Clean additive changes introducing AEP record types and canonical-event schema with corresponding tests",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummarySafe to merge: adds AEP record types, canonical-event schema, and corresponding tests with no breaking changes Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Safe to merge: adds AEP record types, canonical-event schema, and corresponding tests with no breaking changes",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 3
} |
|
Merge gate failed: |
SummaryAdditive type definitions and schema for AEP record and canonical-event with comprehensive test coverage Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Additive type definitions and schema for AEP record and canonical-event with comprehensive test coverage",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 4
} |
|
Merge gate failed: |
SummaryImplementation references aep-record schema that is not included in the PR Severityhigh Blocking findings
Verdict❌ Rejected Merge riskhigh Audit
{
"approved": false,
"severity": "high",
"summary": "Implementation references aep-record schema that is not included in the PR",
"findings": [
{
"file": "src/wasmagent_protocol/__init__.py",
"line": 36,
"issue": "Docstring references 'schemas/aep/aep-record.schema.json' but this schema file is not added in the PR, causing get_schema('aep-record') to fail",
"kind": "blocker"
},
{
"file": "tests/aep-record.test.js",
"line": 43,
"issue": "Test calls getSchema('aep-record') expecting the schema to exist, but the aep-record schema file is not present in the diff",
"kind": "blocker"
},
{
"file": "tests/test_aep_record.py",
"line": 49,
"issue": "Test uses get_schema('aep-record') which will fail because the aep-record schema file is missing from this PR",
"kind": "blocker"
}
],
"merge_risk": "high",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
SummaryPR adds comprehensive AEP record type definitions and canonical-event schema with proper tests; no blockers found Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "PR adds comprehensive AEP record type definitions and canonical-event schema with proper tests; no blockers found",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
|
Merge gate failed: |
SummaryA clean additive PR introducing AEP record types and canonical-event schema with comprehensive tests Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "A clean additive PR introducing AEP record types and canonical-event schema with comprehensive tests",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryPurely additive type definitions and schema registration with comprehensive test coverage Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Purely additive type definitions and schema registration with comprehensive test coverage",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 3
} |
|
Merge gate failed: |
SummaryAdds TypeScript and Python type definitions for AEP record types and canonical-event schema without breaking changes Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Adds TypeScript and Python type definitions for AEP record types and canonical-event schema without breaking changes",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 4
} |
|
Merge gate failed: |
SummaryPurely additive changes: adds TypeScript/Python types for AEP records, new canonical-event schema, and test fixtures; no blockers found. Severitylow Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "low",
"summary": "Purely additive changes: adds TypeScript/Python types for AEP records, new canonical-event schema, and test fixtures; no blockers found.",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 5
} |
|
Merge gate failed: |
SummaryAdditive type definitions and tests with no breaking changes or blockers Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Additive type definitions and tests with no breaking changes or blockers",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 6
} |
|
Merge gate failed: |
SummaryType definitions are mostly consistent; minor Python/TS type drift is non-blocking but should be noted Severitylow Blocking findings
Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "low",
"summary": "Type definitions are mostly consistent; minor Python/TS type drift is non-blocking but should be noted",
"findings": [
{
"file": "src/wasmagent_protocol/__init__.py",
"line": 52,
"issue": "Python AepRecord TypedDict includes 'input_refs' and 'output_refs' fields that are not present in the TypeScript AepRecord interface (index.d.ts:31). This creates a type inconsistency between the two language bindings. Since the AEP record schema is additive (additionalProperties: false is not set), this is not a blocker, but consumers should be aware of this drift.",
"kind": "suggestion"
}
],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 7
} |
|
Merge gate failed: |
SummaryAdditive PR adding AEP record types, canonical-event schema, and corresponding tests with no breaking changes Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Additive PR adding AEP record types, canonical-event schema, and corresponding tests with no breaking changes",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 8
} |
|
Merge gate failed: |
SummaryTypeScript and Python AepRecord definitions have field mismatches Severitymedium Blocking findings
Verdict❌ Rejected Merge riskmedium Audit
{
"approved": false,
"severity": "medium",
"summary": "TypeScript and Python AepRecord definitions have field mismatches",
"findings": [
{
"file": "src/wasmagent_protocol/__init__.py",
"line": 48,
"issue": "Python AepRecord defines 'input_refs' and 'output_refs' fields that do not exist in the TypeScript AepRecord interface at index.d.ts:81. Both definitions should mirror the same aep-record schema; this cross-language contract inconsistency could lead to type validation failures when records are passed between environments.",
"kind": "blocker"
},
{
"file": "index.d.ts",
"line": 81,
"issue": "TypeScript AepRecord interface is missing 'input_refs' and 'output_refs' fields that are present in the Python AepRecord TypedDict at src/wasmagent_protocol/__init__.py:48. Both definitions should mirror the same aep-record schema.",
"kind": "blocker"
}
],
"merge_risk": "medium",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
SummaryAdditive type definitions and schemas for AEP record and canonical event with no breaking changes Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Additive type definitions and schemas for AEP record and canonical event with no breaking changes",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
|
Merge gate failed: |
SummaryPR adds AEP record type definitions across TypeScript, Python, and JSON Schema with comprehensive test coverage Severitynone Blocking findings
Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "PR adds AEP record type definitions across TypeScript, Python, and JSON Schema with comprehensive test coverage",
"findings": [
{
"file": "src/wasmagent_protocol/__init__.py",
"line": 53,
"issue": "Python AepRecord TypedDict is missing input_refs and output_refs fields that are present in the canonical JSON schema (see schemas/v0.1/canonical-event.schema.json and aep-record schema). The type only includes capability_decisions and actions but omits other documented fields.",
"kind": "suggestion"
},
{
"file": "index.d.ts",
"line": 62,
"issue": "TypeScript AepAction interface includes memory_read_refs and memory_write_refs which are not present in the Python TypedDict, creating inconsistency between language bindings.",
"kind": "suggestion"
}
],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryAdditive type definitions and tests for AEP record and canonical-event schemas with no breaking changes Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Additive type definitions and tests for AEP record and canonical-event schemas with no breaking changes",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryThe PR adds AEP record types (TypeScript + Python), a new canonical-event schema, and comprehensive tests with no blockers found Severitylow Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "low",
"summary": "The PR adds AEP record types (TypeScript + Python), a new canonical-event schema, and comprehensive tests with no blockers found",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryAdditive type definitions and schema additions with comprehensive test coverage - no blockers found Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Additive type definitions and schema additions with comprehensive test coverage - no blockers found",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryAdditive type definitions and schemas with comprehensive test coverage; no blockers identified Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "Additive type definitions and schemas with comprehensive test coverage; no blockers identified",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryAEP record type definitions, canonical-event schema, and tests are properly added without breaking changes Severitynone Blocking findingsNone. Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "AEP record type definitions, canonical-event schema, and tests are properly added without breaking changes",
"findings": [],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryAdditive type definitions and schemas with comprehensive tests; minor field name inconsistency between TypeScript and Python AEP record types Severitylow Blocking findings
Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "low",
"summary": "Additive type definitions and schemas with comprehensive tests; minor field name inconsistency between TypeScript and Python AEP record types",
"findings": [
{
"file": "index.d.ts",
"line": 69,
"issue": "AepAction interface defines input_taint_labels and output_taint_labels but Python AepRecord uses input_refs and output_refs - field name mismatch could cause confusion",
"kind": "suggestion"
},
{
"file": "src/wasmagent_protocol/__init__.py",
"line": 55,
"issue": "AepRecord defines input_refs and output_refs but TypeScript AepAction uses input_taint_labels and output_taint_labels - inconsistent naming across language implementations",
"kind": "suggestion"
}
],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryTypeScript AepRecord interface missing 4 optional fields present in Python binding (input_refs, output_refs, subject_id, argument_drift) Severitylow Blocking findings
Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "low",
"summary": "TypeScript AepRecord interface missing 4 optional fields present in Python binding (input_refs, output_refs, subject_id, argument_drift)",
"findings": [
{
"file": "index.d.ts",
"line": 100,
"issue": "AepRecord interface missing optional fields that exist in Python AepRecord TypedDict: input_refs, output_refs, subject_id, argument_drift. These fields are present in the Python binding but not exposed to TypeScript consumers, creating cross-language inconsistency.",
"kind": "suggestion"
}
],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryNo blockers - clean addition of AEP record types, canonical-event schema, and comprehensive tests with proper TypeScript and Python typing. Severitynone Blocking findings
Verdict✅ Approved Merge risklow Audit
{
"approved": true,
"severity": "none",
"summary": "No blockers - clean addition of AEP record types, canonical-event schema, and comprehensive tests with proper TypeScript and Python typing.",
"findings": [
{
"file": "tests/fixtures/invalid/artifact-attestation/missing-required-field.json",
"line": 1,
"issue": "Test fixture for artifact-attestation added without corresponding schema entry in schemas/index.json within this diff - may be intentional or oversight, but causes no runtime errors as these are only fixture files",
"kind": "suggestion"
},
{
"file": "tests/fixtures/valid/artifact-attestation/basic.json",
"line": 1,
"issue": "Test fixture for artifact-attestation added without corresponding schema entry in schemas/index.json within this diff - may be intentional or oversight, but causes no runtime errors as these are only fixture files",
"kind": "suggestion"
}
],
"merge_risk": "low",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 2
} |
|
Merge gate failed: |
SummaryPython AepRecord TypedDict is missing fields present in TypeScript interface, creating cross-language inconsistency Severitymedium Blocking findings
Verdict❌ Rejected Merge riskmedium Audit
{
"approved": false,
"severity": "medium",
"summary": "Python AepRecord TypedDict is missing fields present in TypeScript interface, creating cross-language inconsistency",
"findings": [
{
"file": "src/wasmagent_protocol/__init__.py",
"line": 67,
"issue": "Python AepRecord TypedDict is missing 'input_refs' and 'output_refs' fields that are defined in the TypeScript AepRecord interface at index.d.ts:75-76. This creates an inconsistency between the two language bindings for the same protocol type.",
"kind": "blocker"
}
],
"merge_risk": "medium",
"Model": "opus",
"model": "claude-cli",
"effort": "high",
"tokens": {
"input_tokens": 0,
"output_tokens": 0
},
"same_verdict_count": 1
} |
Fixes #138
Generated by claude-bot-go worker.