{
  "file": "F33-sdk-remote-client.md",
  "bullet": "File round trip (`F33.workspace-files`).",
  "ids": [
    "F33.workspace-files"
  ],
  "line": 377,
  "script": "head -c 70000 /dev/urandom > \"$F33/qa-f33-upload.bin\"\ncontrol-agent-server exec --env PYTHONPATH=\"$F33\" --save F33.workspace-files/probe -- .venv/bin/python - <<'PY'\nimport os\nimport f33\n\nws = f33.workspace(\"files\")\nsrc = os.path.join(f33.DIR, \"qa-f33-upload.bin\")\nremote = os.path.join(ws.working_dir, \"sub\", \"qa-f33-upload.bin\")\nup = ws.file_upload(src, remote)\nassert up.success and up.destination_path == remote, up\ndown = ws.file_download(remote, os.path.join(f33.DIR, \"qa-f33-download.bin\"))\nassert down.success and down.file_size == os.path.getsize(src), down\nmem = ws.file_upload(b\"qa-f33-bytes\\n\", os.path.join(ws.working_dir, \"qa-f33-bytes.txt\"))\nassert mem.success, mem\nmissing = ws.file_download(os.path.join(ws.working_dir, \"qa-f33-missing.bin\"), os.path.join(f33.DIR, \"qa-f33-missing.bin\"))\nassert not missing.success and \"404\" in missing.error, missing\nrelative = ws.file_upload(b\"qa-f33-relative\\n\", \"qa-f33-relative.txt\")\nassert not relative.success and \"400\" in relative.error, relative\nf33.emit(\"files\", remote=remote, size=down.file_size)\nPY\ncmp \"$F33/qa-f33-upload.bin\" \"$F33/qa-f33-download.bin\"\ncontrol-agent-server api GET /api/file/download --query path=\"$F33/files/sub/qa-f33-upload.bin\" --expect 200 \\\n  --raw-out \"$F33/qa-f33-rest.bin\" --quiet --save F33.workspace-files/rest-download\ncmp \"$F33/qa-f33-upload.bin\" \"$F33/qa-f33-rest.bin\"\ntest \"$(cat \"$F33/files/qa-f33-bytes.txt\")\" = qa-f33-bytes\ntest ! -e \"$F33/qa-f33-missing.bin\"\ntest ! -e \"$AGENT_SERVER_VERIFY_RUN/server/qa-f33-relative.txt\"\n",
  "exit_code": 0,
  "elapsed_ms": 38247,
  "failed_line": null,
  "failed_command": null,
  "stdout": "{\n  \"ok\": true,\n  \"exit_code\": 0,\n  \"elapsed_ms\": 33932,\n  \"stdout_tail\": \"{\\\"remote\\\": \\\"/workspace/verification-artifacts/runs/20261013-021957-adb9-map-f33/fixtures/qa-f33/files/sub/qa-f33-upload.bin\\\", \\\"size\\\": 70000}\\n\",\n  \"stderr_tail\": \"                                         \\n                             For more information                               \\n                             check:                                             \\n                             https://developer.moz                              \\n                             illa.org/en-US/docs/W                              \\n                             eb/HTTP/Status/404                                 \\n[10/13/26 02:23:50] ERROR    Remote file upload    remote_workspace_mixin.py:341\\n                             failed: Client error                               \\n                             '400 Bad Request' for                              \\n                             url                                                \\n                             'http://127.0.0.1:356                              \\n                             09/api/file/upload?pa                              \\n                             th=qa-f33-relative.tx                              \\n                             t'                                                 \\n                             For more information                               \\n                             check:                                             \\n                             https://developer.moz                              \\n                             illa.org/en-US/docs/W                              \\n                             eb/HTTP/Status/400                                 \\n\",\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-021957-adb9-map-f33/evidence/F33.workspace-files/probe.json\"\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/file/download\",\n    \"query\": [\n      [\n        \"path\",\n        \"/workspace/verification-artifacts/runs/20261013-021957-adb9-map-f33/fixtures/qa-f33/files/sub/qa-f33-upload.bin\"\n      ]\n    ],\n    \"auth\": \"header\",\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-type\": \"application/octet-stream\",\n      \"content-disposition\": \"attachment; filename=\\\"qa-f33-upload.bin\\\"\",\n      \"content-length\": \"70000\",\n      \"etag\": \"\\\"2d8974386cad0d37d70c80fd9335387b\\\"\"\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 444,\n  \"raw_out\": \"/workspace/verification-artifacts/runs/20261013-021957-adb9-map-f33/fixtures/qa-f33/qa-f33-rest.bin\",\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-021957-adb9-map-f33/evidence/F33.workspace-files/rest-download.json\"\n}\n",
  "stderr": ""
}
