{
  "file": "F15-git.md",
  "bullet": "Commit history (`F15.commits`).",
  "ids": [
    "F15.commits"
  ],
  "line": 459,
  "script": "control-agent-server api GET /api/git/commits --query path=\"$REPO\" --expect 200 --check commits len-eq 2 \\\n  --check has_more eq false --check commits.0.sha eq \"$C2\" --check commits.0.subject eq 'Add util' \\\n  --check commits.0.short_sha eq \"$(git -C \"$REPO\" log -1 --format=%h)\" --check commits.0.author eq 'QA Verify' \\\n  --check commits.0.timestamp matches '^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d(Z|[+-]\\d\\d:\\d\\d)$' \\\n  --check commits.1.sha eq \"$C1\" --check commits.1.subject eq 'Initial commit' --save F15.commits/all\ncontrol-agent-server api GET /api/git/commits --query path=\"$REPO\" --query limit=1 --expect 200 --check commits len-eq 1 \\\n  --check commits.0.sha eq \"$C2\" --check has_more eq true --save F15.commits/limit-1\ncontrol-agent-server api GET /api/git/commits --query path=\"$REPO\" --query limit=2 --expect 200 --check commits len-eq 2 \\\n  --check has_more eq false\ncontrol-agent-server api GET /api/git/commits --query path=\"$F/branch\" --query limit=200 --expect 200 --check commits len-eq 3 \\\n  --check commits.0.subject eq 'QA feat' --check has_more eq false\ntest \"$(git -C \"$REPO\" log --format=%H | head -1)\" = \"$C2\"\ncontrol-agent-server api GET /api/git/commits --query path=\"$REPO\" --query limit=0 --expect 422\ncontrol-agent-server api GET /api/git/commits --query path=\"$REPO\" --query limit=201 --expect 422\n",
  "exit_code": 0,
  "elapsed_ms": 2125,
  "failed_line": null,
  "failed_command": null,
  "stdout": "{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/git/commits\",\n    \"query\": [\n      [\n        \"path\",\n        \"/workspace/verification-artifacts/runs/20261013-031432-480c-map-f15/fixtures/qa-f15-repo\"\n      ]\n    ],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"336\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"commits\": [\n        {\n          \"sha\": \"26f9f95b786c048f8cf86fbe034fec8d3de152e3\",\n          \"short_sha\": \"26f9f95\",\n          \"subject\": \"Add util\",\n          \"author\": \"QA Verify\",\n          \"timestamp\": \"2026-10-13T03:14:40Z\"\n        },\n        {\n          \"sha\": \"325dd3af3ae03ade8551c8e123e181dc0c2ce39c\",\n          \"short_sha\": \"325dd3a\",\n          \"subject\": \"Initial commit\",\n          \"author\": \"QA Verify\",\n          \"timestamp\": \"2026-10-13T03:14:40Z\"\n        }\n      ],\n      \"has_more\": false\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 68,\n  \"checks\": [\n    {\n      \"check\": \"commits len-eq 2\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"sha\\\": \\\"26f9f95b786c048f8cf86fbe034fec8d3de152e3\\\", \\\"short_sha\\\": \\\"26f9f95\\\", \\\"subject\\\": \\\"Add util\\\", \\\"author\\\": \\\"QA Verify\\\", \\\"timestamp\\\": \\\"2026-10-13T03:14:40Z\\\"}, {\\\"sha\\\": \\\"325dd3af3ae03ade8551c8e123e181\\u2026\"\n    },\n    {\n      \"check\": \"has_more eq false\",\n      \"ok\": true,\n      \"actual\": \"false\"\n    },\n    {\n      \"check\": \"commits.0.sha eq 26f9f95b786c048f8cf86fbe034fec8d3de152e3\",\n      \"ok\": true,\n      \"actual\": \"26f9f95b786c048f8cf86fbe034fec8d3de152e3\"\n    },\n    {\n      \"check\": \"commits.0.subject eq Add util\",\n      \"ok\": true,\n      \"actual\": \"Add util\"\n    },\n    {\n      \"check\": \"commits.0.short_sha eq 26f9f95\",\n      \"ok\": true,\n      \"actual\": \"26f9f95\"\n    },\n    {\n      \"check\": \"commits.0.author eq QA Verify\",\n      \"ok\": true,\n      \"actual\": \"QA Verify\"\n    },\n    {\n      \"check\": \"commits.0.timestamp matches ^\\\\d{4}-\\\\d\\\\d-\\\\d\\\\dT\\\\d\\\\d:\\\\d\\\\d:\\\\d\\\\d(Z|[+-]\\\\d\\\\d:\\\\d\\\\d)$\",\n      \"ok\": true,\n      \"actual\": \"2026-10-13T03:14:40Z\"\n    },\n    {\n      \"check\": \"commits.1.sha eq 325dd3af3ae03ade8551c8e123e181dc0c2ce39c\",\n      \"ok\": true,\n      \"actual\": \"325dd3af3ae03ade8551c8e123e181dc0c2ce39c\"\n    },\n    {\n      \"check\": \"commits.1.subject eq Initial commit\",\n      \"ok\": true,\n      \"actual\": \"Initial commit\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-031432-480c-map-f15/evidence/F15.commits/all.json\"\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/git/commits\",\n    \"query\": [\n      [\n        \"path\",\n        \"/workspace/verification-artifacts/runs/20261013-031432-480c-map-f15/fixtures/qa-f15-repo\"\n      ],\n      [\n        \"limit\",\n        \"1\"\n      ]\n    ],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"179\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"commits\": [\n        {\n          \"sha\": \"26f9f95b786c048f8cf86fbe034fec8d3de152e3\",\n          \"short_sha\": \"26f9f95\",\n          \"subject\": \"Add util\",\n          \"author\": \"QA Verify\",\n          \"timestamp\": \"2026-10-13T03:14:40Z\"\n        }\n      ],\n      \"has_more\": true\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 56,\n  \"checks\": [\n    {\n      \"check\": \"commits len-eq 1\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"sha\\\": \\\"26f9f95b786c048f8cf86fbe034fec8d3de152e3\\\", \\\"short_sha\\\": \\\"26f9f95\\\", \\\"subject\\\": \\\"Add util\\\", \\\"author\\\": \\\"QA Verify\\\", \\\"timestamp\\\": \\\"2026-10-13T03:14:40Z\\\"}]\"\n    },\n    {\n      \"check\": \"commits.0.sha eq 26f9f95b786c048f8cf86fbe034fec8d3de152e3\",\n      \"ok\": true,\n      \"actual\": \"26f9f95b786c048f8cf86fbe034fec8d3de152e3\"\n    },\n    {\n      \"check\": \"has_more eq true\",\n      \"ok\": true,\n      \"actual\": \"true\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-031432-480c-map-f15/evidence/F15.commits/limit-1.json\"\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/git/commits\",\n    \"query\": [\n      [\n        \"path\",\n        \"/workspace/verification-artifacts/runs/20261013-031432-480c-map-f15/fixtures/qa-f15-repo\"\n      ],\n      [\n        \"limit\",\n        \"2\"\n      ]\n    ],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"336\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"commits\": [\n        {\n          \"sha\": \"26f9f95b786c048f8cf86fbe034fec8d3de152e3\",\n          \"short_sha\": \"26f9f95\",\n          \"subject\": \"Add util\",\n          \"author\": \"QA Verify\",\n          \"timestamp\": \"2026-10-13T03:14:40Z\"\n        },\n        {\n          \"sha\": \"325dd3af3ae03ade8551c8e123e181dc0c2ce39c\",\n          \"short_sha\": \"325dd3a\",\n          \"subject\": \"Initial commit\",\n          \"author\": \"QA Verify\",\n          \"timestamp\": \"2026-10-13T03:14:40Z\"\n        }\n      ],\n      \"has_more\": false\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 53,\n  \"checks\": [\n    {\n      \"check\": \"commits len-eq 2\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"sha\\\": \\\"26f9f95b786c048f8cf86fbe034fec8d3de152e3\\\", \\\"short_sha\\\": \\\"26f9f95\\\", \\\"subject\\\": \\\"Add util\\\", \\\"author\\\": \\\"QA Verify\\\", \\\"timestamp\\\": \\\"2026-10-13T03:14:40Z\\\"}, {\\\"sha\\\": \\\"325dd3af3ae03ade8551c8e123e181\\u2026\"\n    },\n    {\n      \"check\": \"has_more eq false\",\n      \"ok\": true,\n      \"actual\": \"false\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/git/commits\",\n    \"query\": [\n      [\n        \"path\",\n        \"/workspace/verification-artifacts/runs/20261013-031432-480c-map-f15/fixtures/qa-f15/branch\"\n      ],\n      [\n        \"limit\",\n        \"200\"\n      ]\n    ],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"485\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"commits\": [\n        {\n          \"sha\": \"44e4074b499445aef47552a351ab6b6f590c25dd\",\n          \"short_sha\": \"44e4074\",\n          \"subject\": \"QA feat\",\n          \"author\": \"QA Verify\",\n          \"timestamp\": \"2026-10-13T03:14:40Z\"\n        },\n        {\n          \"sha\": \"26f9f95b786c048f8cf86fbe034fec8d3de152e3\",\n          \"short_sha\": \"26f9f95\",\n          \"subject\": \"Add util\",\n          \"author\": \"QA Verify\",\n          \"timestamp\": \"2026-10-13T03:14:40Z\"\n        },\n        {\n          \"sha\": \"325dd3af3ae03ade8551c8e123e181dc0c2ce39c\",\n          \"short_sha\": \"325dd3a\",\n          \"subject\": \"Initial commit\",\n          \"author\": \"QA Verify\",\n          \"timestamp\": \"2026-10-13T03:14:40Z\"\n        }\n      ],\n      \"has_more\": false\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 55,\n  \"checks\": [\n    {\n      \"check\": \"commits len-eq 3\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"sha\\\": \\\"44e4074b499445aef47552a351ab6b6f590c25dd\\\", \\\"short_sha\\\": \\\"44e4074\\\", \\\"subject\\\": \\\"QA feat\\\", \\\"author\\\": \\\"QA Verify\\\", \\\"timestamp\\\": \\\"2026-10-13T03:14:40Z\\\"}, {\\\"sha\\\": \\\"26f9f95b786c048f8cf86fbe034fec8\\u2026\"\n    },\n    {\n      \"check\": \"commits.0.subject eq QA feat\",\n      \"ok\": true,\n      \"actual\": \"QA feat\"\n    },\n    {\n      \"check\": \"has_more eq false\",\n      \"ok\": true,\n      \"actual\": \"false\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"status\": 422,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/git/commits\",\n    \"query\": [\n      [\n        \"path\",\n        \"/workspace/verification-artifacts/runs/20261013-031432-480c-map-f15/fixtures/qa-f15-repo\"\n      ],\n      [\n        \"limit\",\n        \"0\"\n      ]\n    ],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 422,\n    \"headers\": {\n      \"content-length\": \"144\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"detail\": [\n        {\n          \"type\": \"greater_than_equal\",\n          \"loc\": [\n            \"query\",\n            \"limit\"\n          ],\n          \"msg\": \"Input should be greater than or equal to 1\",\n          \"input\": \"0\",\n          \"ctx\": {\n            \"ge\": 1\n          }\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 86\n}\n{\n  \"ok\": true,\n  \"status\": 422,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/git/commits\",\n    \"query\": [\n      [\n        \"path\",\n        \"/workspace/verification-artifacts/runs/20261013-031432-480c-map-f15/fixtures/qa-f15-repo\"\n      ],\n      [\n        \"limit\",\n        \"201\"\n      ]\n    ],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 422,\n    \"headers\": {\n      \"content-length\": \"144\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"detail\": [\n        {\n          \"type\": \"less_than_equal\",\n          \"loc\": [\n            \"query\",\n            \"limit\"\n          ],\n          \"msg\": \"Input should be less than or equal to 200\",\n          \"input\": \"201\",\n          \"ctx\": {\n            \"le\": 200\n          }\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 107\n}\n",
  "stderr": ""
}
