{
  "file": "F29-app-backend-bridge.md",
  "bullet": "Root `path` parameter (`F29.proxy-root-path-query`), known bug.",
  "ids": [
    "F29.proxy-root-path-query"
  ],
  "line": 519,
  "script": "RP=$(control-agent-server api POST <redacted:session-cookie>/session --header 'Origin: http://localhost:3000' --expect 200 --print-header set-cookie | sed -n 's/^oh_app_backend_session=\\([^;]*\\);.*/\\1/p')\ntest -n \"$RP\"\ncontrol-agent-server api GET <redacted:session-cookie> --query view=main --auth none \\\n  --cookie \"oh_app_backend_session=$RP\" --expect 200 --check path eq / --check query.view eq main\ncontrol-agent-server api GET <redacted:session-cookie>/ --query path=echo --auth none \\\n  --cookie \"oh_app_backend_session=$RP\" --expect 200 --check path eq / --check query.path eq echo\ncontrol-agent-server api GET <redacted:session-cookie> --query path=echo --auth none \\\n  --cookie \"oh_app_backend_session=$RP\" --expect 200 --check path eq / --check query.path eq echo \\\n  --save F29.proxy-root-path-query/get  # bug\ncontrol-agent-server api GET <redacted:session-cookie> --query 'path=..' --auth none \\\n  --cookie \"oh_app_backend_session=$RP\" --expect 200 --check path eq / --check query.path eq ..  # bug\ncontrol-agent-server ws listen <redacted:session-cookie> --query path=ws --auth none --header \"Origin: $S\" \\\n  --header \"Cookie: oh_app_backend_session=$RP\" --send qa-f29-root --duration 5 --expect-close 1011 --expect-frames 0  # bug\n",
  "exit_code": 1,
  "elapsed_ms": 1161,
  "failed_line": 7,
  "failed_command": "control-agent-server api GET <redacted:session-cookie> --query path=echo --auth none --cookie \"oh_app_backend_session=$RP\" --expect 200 --check path eq / --check query.path eq echo --save F29.proxy-root-path-query/get",
  "stdout": "{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"<redacted:session-cookie>\",\n    \"query\": [\n      [\n        \"view\",\n        \"main\"\n      ]\n    ],\n    \"auth\": \"none\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-type\": \"application/json; charset=utf-8\"\n    },\n    \"body\": {\n      \"app\": \"qa-backend\",\n      \"method\": \"GET\",\n      \"path\": \"/\",\n      \"query\": {\n        \"view\": \"main\"\n      },\n      \"body\": \"\",\n      \"data_dir\": \"/workspace/verification-artifacts/runs/20261013-031857-df62-map-f29/home/.openhands/canvas-extensions/backends/data/qa-backend\",\n      \"cookie_forwarded\": false\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 63,\n  \"checks\": [\n    {\n      \"check\": \"path eq /\",\n      \"ok\": true,\n      \"actual\": \"/\"\n    },\n    {\n      \"check\": \"query.view eq main\",\n      \"ok\": true,\n      \"actual\": \"main\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"<redacted:session-cookie>/\",\n    \"query\": [\n      [\n        \"path\",\n        \"echo\"\n      ]\n    ],\n    \"auth\": \"none\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-type\": \"application/json; charset=utf-8\"\n    },\n    \"body\": {\n      \"app\": \"qa-backend\",\n      \"method\": \"GET\",\n      \"path\": \"/\",\n      \"query\": {\n        \"path\": \"echo\"\n      },\n      \"body\": \"\",\n      \"data_dir\": \"/workspace/verification-artifacts/runs/20261013-031857-df62-map-f29/home/.openhands/canvas-extensions/backends/data/qa-backend\",\n      \"cookie_forwarded\": false\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 67,\n  \"checks\": [\n    {\n      \"check\": \"path eq /\",\n      \"ok\": true,\n      \"actual\": \"/\"\n    },\n    {\n      \"check\": \"query.path eq echo\",\n      \"ok\": true,\n      \"actual\": \"echo\"\n    }\n  ]\n}\n{\n  \"ok\": false,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"<redacted:session-cookie>\",\n    \"query\": [\n      [\n        \"path\",\n        \"echo\"\n      ]\n    ],\n    \"auth\": \"none\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-type\": \"application/json; charset=utf-8\"\n    },\n    \"body\": {\n      \"app\": \"qa-backend\",\n      \"method\": \"GET\",\n      \"path\": \"/echo\",\n      \"query\": {\n        \"path\": \"echo\"\n      },\n      \"body\": \"\",\n      \"data_dir\": \"/workspace/verification-artifacts/runs/20261013-031857-df62-map-f29/home/.openhands/canvas-extensions/backends/data/qa-backend\",\n      \"cookie_forwarded\": false\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 63,\n  \"checks\": [\n    {\n      \"check\": \"path eq /\",\n      \"ok\": false,\n      \"actual\": \"/echo\"\n    },\n    {\n      \"check\": \"query.path eq echo\",\n      \"ok\": true,\n      \"actual\": \"echo\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-031857-df62-map-f29/evidence/F29.proxy-root-path-query/get.json\",\n  \"hint\": \"failed check: path eq /\"\n}\n",
  "stderr": ""
}
