{
  "file": "F06-conversation-events.md",
  "bullet": "Message validation (`F06.send-validation`).",
  "ids": [
    "F06.send-validation"
  ],
  "line": 302,
  "script": "control-agent-server api POST \"<redacted:session-cookie>/$CID/events\" \\\n  --json '{\"role\":\"qa-invalid\",\"content\":[{\"type\":\"text\",\"text\":\"QA_F06_BADROLE\"}]}' --expect 422 \\\n  --check detail.0.loc contains role --save F06.send-validation/role\ncontrol-agent-server api POST \"<redacted:session-cookie>/$CID/events\" --json '{\"content\":\"QA_F06_PLAIN\"}' --expect 422 \\\n  --check detail.0.loc contains content\ncontrol-agent-server api POST \"<redacted:session-cookie>/$CID/events\" \\\n  --json '{\"content\":[{\"type\":\"qa-unknown\",\"text\":\"QA_F06_BADTYPE\"}]}' --expect 422\ncontrol-agent-server api POST \"<redacted:session-cookie>/$CID/events\" --expect 422 --check detail.0.loc contains body\ncontrol-agent-server api GET \"<redacted:session-cookie>/$CID/events/count\" --check . eq 5\n",
  "exit_code": 0,
  "elapsed_ms": 8987,
  "failed_line": null,
  "failed_command": null,
  "stdout": "{\n  \"ok\": true,\n  \"status\": 422,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"<redacted:session-cookie>/d97a4857-6ca9-4dd3-b375-45fbd47f2623/events\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"role\": \"qa-invalid\",\n      \"content\": [\n        {\n          \"type\": \"text\",\n          \"text\": \"QA_F06_BADROLE\"\n        }\n      ]\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 422,\n    \"headers\": {\n      \"content-length\": \"205\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"detail\": [\n        {\n          \"type\": \"literal_error\",\n          \"loc\": [\n            \"body\",\n            \"role\"\n          ],\n          \"msg\": \"Input should be 'user', 'system', 'assistant' or 'tool'\",\n          \"input\": \"qa-invalid\",\n          \"ctx\": {\n            \"expected\": \"'user', 'system', 'assistant' or 'tool'\"\n          }\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 349,\n  \"checks\": [\n    {\n      \"check\": \"detail.0.loc contains role\",\n      \"ok\": true,\n      \"actual\": \"[\\\"body\\\", \\\"role\\\"]\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-030025-5cd8-map-f06/evidence/F06.send-validation/role.json\"\n}\n{\n  \"ok\": true,\n  \"status\": 422,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"<redacted:session-cookie>/d97a4857-6ca9-4dd3-b375-45fbd47f2623/events\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"content\": \"QA_F06_PLAIN\"\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 422,\n    \"headers\": {\n      \"content-length\": \"118\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"detail\": [\n        {\n          \"type\": \"list_type\",\n          \"loc\": [\n            \"body\",\n            \"content\"\n          ],\n          \"msg\": \"Input should be a valid list\",\n          \"input\": \"QA_F06_PLAIN\"\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 246,\n  \"checks\": [\n    {\n      \"check\": \"detail.0.loc contains content\",\n      \"ok\": true,\n      \"actual\": \"[\\\"body\\\", \\\"content\\\"]\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"status\": 422,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"<redacted:session-cookie>/d97a4857-6ca9-4dd3-b375-45fbd47f2623/events\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"content\": [\n        {\n          \"type\": \"qa-unknown\",\n          \"text\": \"QA_F06_BADTYPE\"\n        }\n      ]\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 422,\n    \"headers\": {\n      \"content-length\": \"472\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"detail\": [\n        {\n          \"type\": \"literal_error\",\n          \"loc\": [\n            \"body\",\n            \"content\",\n            0,\n            \"TextContent\",\n            \"type\"\n          ],\n          \"msg\": \"Input should be 'text'\",\n          \"input\": \"qa-unknown\",\n          \"ctx\": {\n            \"expected\": \"'text'\"\n          }\n        },\n        {\n          \"type\": \"literal_error\",\n          \"loc\": [\n            \"body\",\n            \"content\",\n            0,\n            \"ImageContent\",\n            \"type\"\n          ],\n          \"msg\": \"Input should be 'image'\",\n          \"input\": \"qa-unknown\",\n          \"ctx\": {\n            \"expected\": \"'image'\"\n          }\n        },\n        {\n          \"type\": \"missing\",\n          \"loc\": [\n            \"body\",\n            \"content\",\n            0,\n            \"ImageContent\",\n            \"image_urls\"\n          ],\n          \"msg\": \"Field required\",\n          \"input\": {\n            \"type\": \"qa-unknown\",\n            \"text\": \"QA_F06_BADTYPE\"\n          }\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 221\n}\n{\n  \"ok\": true,\n  \"status\": 422,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"<redacted:session-cookie>/d97a4857-6ca9-4dd3-b375-45fbd47f2623/events\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 422,\n    \"headers\": {\n      \"content-length\": \"82\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"detail\": [\n        {\n          \"type\": \"missing\",\n          \"loc\": [\n            \"body\"\n          ],\n          \"msg\": \"Field required\",\n          \"input\": null\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 363,\n  \"checks\": [\n    {\n      \"check\": \"detail.0.loc contains body\",\n      \"ok\": true,\n      \"actual\": \"[\\\"body\\\"]\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"<redacted:session-cookie>/d97a4857-6ca9-4dd3-b375-45fbd47f2623/events/count\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"1\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": 5,\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 200,\n  \"checks\": [\n    {\n      \"check\": \". eq 5\",\n      \"ok\": true,\n      \"actual\": \"5\"\n    }\n  ]\n}\n",
  "stderr": ""
}
