{
  "file": "F26-plugins.md",
  "bullet": "Unfetchable refresh (`F26.refresh-unfetchable`), known bug.",
  "ids": [
    "F26.refresh-unfetchable"
  ],
  "line": 516,
  "script": "mkdir -p \"$F/tmp/qa-f26-gone/.plugin\" \"$F/tmp/qa-f26-broken/.plugin\"\nprintf '{\"name\": \"qa-f26-gone\", \"version\": \"0.1.0\"}\\n' > \"$F/tmp/qa-f26-gone/.plugin/plugin.json\"\nprintf '{\"name\": \"qa-f26-broken\", \"version\": \"0.1.0\"}\\n' > \"$F/tmp/qa-f26-broken/.plugin/plugin.json\"\ncontrol-agent-server api POST /api/plugins/install --json '{\"source\": \"'\"$F/tmp/qa-f26-gone\"'\"}' --expect 200\ncontrol-agent-server api POST /api/plugins/install --json '{\"source\": \"'\"$F/tmp/qa-f26-broken\"'\"}' --expect 200\ncp -r \"$(control-agent-server fixture plugin --name qa-f26-adopted --print-path)\" \"$I/\"\ncontrol-agent-server api GET /api/plugins/installed --expect 200 --check plugins contains '\"name\": \"qa-f26-adopted\"'\ncontrol-agent-server api GET /api/plugins/installed/qa-f26-adopted --expect 200 --check source eq local\nrm -rf \"$F/tmp/qa-f26-gone\"\nprintf '{bad json' > \"$F/tmp/qa-f26-broken/.plugin/plugin.json\"\ncontrol-agent-server api POST /api/plugins/installed/qa-f26-gone/refresh --expect 400,422 --save F26.refresh-unfetchable/vanished  # bug\ncontrol-agent-server api GET /api/plugins/installed/qa-f26-gone --expect 200 --check enabled eq true\ncontrol-agent-server api POST /api/plugins/installed/qa-f26-broken/refresh --expect 422 --save F26.refresh-unfetchable/invalid  # bug\ncontrol-agent-server api GET /api/plugins/installed/qa-f26-broken --expect 200 --check version eq 0.1.0\ncontrol-agent-server api POST /api/plugins/installed/qa-f26-adopted/refresh --expect 400,422 --save F26.refresh-unfetchable/local  # bug\ncontrol-agent-server api GET /api/plugins/installed/qa-f26-adopted --expect 200 --check source eq local\n",
  "exit_code": 1,
  "elapsed_ms": 9300,
  "failed_line": 11,
  "failed_command": "control-agent-server api POST /api/plugins/installed/qa-f26-gone/refresh --expect 400,422 --save F26.refresh-unfetchable/vanished",
  "stdout": "{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"/api/plugins/install\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"source\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/qa-f26/tmp/qa-f26-gone\"\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"445\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"name\": \"qa-f26-gone\",\n      \"version\": \"0.1.0\",\n      \"description\": \"\",\n      \"enabled\": true,\n      \"source\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/qa-f26/tmp/qa-f26-gone\",\n      \"resolved_ref\": null,\n      \"repo_path\": null,\n      \"installed_at\": \"2026-10-13T03:02:53.764225+00:00\",\n      \"install_path\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/home/.openhands/plugins/installed/qa-f26-gone\",\n      \"skills\": [],\n      \"files\": [\n        \".plugin/plugin.json\"\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 183\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"/api/plugins/install\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": {\n      \"source\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/qa-f26/tmp/qa-f26-broken\"\n    },\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"451\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"name\": \"qa-f26-broken\",\n      \"version\": \"0.1.0\",\n      \"description\": \"\",\n      \"enabled\": true,\n      \"source\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/qa-f26/tmp/qa-f26-broken\",\n      \"resolved_ref\": null,\n      \"repo_path\": null,\n      \"installed_at\": \"2026-10-13T03:02:54.894456+00:00\",\n      \"install_path\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/home/.openhands/plugins/installed/qa-f26-broken\",\n      \"skills\": [],\n      \"files\": [\n        \".plugin/plugin.json\"\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 148\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/plugins/installed\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"4566\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"plugins\": [\n        {\n          \"name\": \"qa-f26-inst\",\n          \"version\": \"0.1.0\",\n          \"description\": \"QA local plugin v2\",\n          \"enabled\": true,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/plugins/qa-f26-inst\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T03:02:37.835192+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/home/.openhands/plugins/installed/qa-f26-inst\",\n          \"skills\": [\n            {\n              \"name\": \"qa-f26-inst-skill\",\n              \"description\": \"QA fixture skill qa-f26-inst-skill; mention QA_SKILL_MARKER when asked about qa-f26-inst-skill.\"\n            },\n            {\n              \"name\": \"qa-f26-inst:qa-hello\",\n              \"description\": \"Say hello from the QA plugin\"\n            }\n          ],\n          \"files\": [\n            \".plugin/plugin.json\",\n            \"commands/qa-hello.md\",\n            \"hooks/hooks.json\",\n            \"skills/qa-f26-inst-skill/SKILL.md\"\n          ]\n        },\n        {\n          \"name\": \"qa-f26-ap\",\n          \"version\": \"0.2.0\",\n          \"description\": \"QA Agent Plugins layout\",\n          \"enabled\": true,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/qa-f26/qa-f26-ap\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T03:01:23.673210+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/home/.openhands/plugins/installed/qa-f26-ap\",\n          \"skills\": [\n            {\n              \"name\": \"qa-f26-ap-skill\",\n              \"description\": \"QA Agent Plugins skill\"\n            },\n            {\n              \"name\": \"qa-f26-ap:run\",\n              \"description\": \"QA Agent Plugins command\"\n            }\n          ],\n          \"files\": [\n            \"dev.openhands/commands/run.md\",\n            \"plugin.json\",\n            \"skills/qa-f26-ap-skill/SKILL.md\"\n          ]\n        },\n        {\n          \"name\": \"qa-f26-src-plugin\",\n          \"version\": \"0.1.0\",\n          \"description\": \"QA git plugin v2\",\n          \"enabled\": true,\n          \"source\": \"file:///workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/git/qa-f26-src\",\n          \"resolved_ref\": \"05f4ea95f48bdc12484d9289c951f0c4fa108f5d\",\n          \"repo_path\": \"plugins/qa-f26-src-plugin\",\n          \"installed_at\": \"2026-10-13T03:02:42.201742+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/home/.openhands/plugins/installed/qa-f26-src-plugin\",\n          \"skills\": [\n            {\n              \"name\": \"qa-f26-src-plugin-skill\",\n              \"description\": \"QA fixture skill qa-f26-src-plugin-skill; mention QA_SKILL_MARKER when asked about qa-f26-src-plugin-skill.\"\n            },\n            {\n              \"name\": \"qa-f26-src-plugin:qa-hello\",\n              \"description\": \"Say hello from the QA plugin\"\n            }\n          ],\n          \"files\": [\n            \".plugin/plugin.json\",\n            \"commands/qa-hello.md\",\n            \"hooks/hooks.json\",\n            \"skills/qa-f26-src-plugin-skill/SKILL.md\"\n          ]\n        },\n        {\n          \"name\": \"qa-f26-healed\",\n          \"version\": \"0.1.0\",\n          \"description\": \"QA fixture plugin qa-f26-healed\",\n          \"enabled\": true,\n          \"source\": \"local\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T03:02:51.168439+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/home/.openhands/plugins/installed/qa-f26-healed\",\n          \"skills\": [\n            {\n              \"name\": \"qa-f26-healed-skill\",\n              \"description\": \"QA fixture skill qa-f26-healed-skill; mention QA_SKILL_MARKER when asked about qa-f26-healed-skill.\"\n            },\n            {\n              \"name\": \"qa-f26-healed:qa-hello\",\n              \"description\": \"Say hello from the QA plugin\"\n            }\n          ],\n          \"files\": [\n            \".plugin/plugin.json\",\n            \"commands/qa-hello.md\",\n            \"hooks/hooks.json\",\n            \"skills/qa-f26-healed-skill/SKILL.md\"\n          ]\n        },\n        {\n          \"name\": \"qa-f26-gone\",\n          \"version\": \"0.1.0\",\n          \"description\": \"\",\n          \"enabled\": true,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/qa-f26/tmp/qa-f26-gone\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T03:02:53.764225+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/home/.openhands/plugins/installed/qa-f26-gone\",\n          \"skills\": [],\n          \"files\": [\n            \".plugin/plugin.json\"\n          ]\n        },\n        {\n          \"name\": \"qa-f26-broken\",\n          \"version\": \"0.1.0\",\n          \"description\": \"\",\n          \"enabled\": true,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/qa-f26/tmp/qa-f26-broken\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T03:02:54.894456+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/home/.openhands/plugins/installed/qa-f26-broken\",\n          \"skills\": [],\n          \"files\": [\n            \".plugin/plugin.json\"\n          ]\n        },\n        {\n          \"name\": \"qa-f26-adopted\",\n          \"version\": \"0.1.0\",\n          \"description\": \"QA fixture plugin qa-f26-adopted\",\n          \"enabled\": true,\n          \"source\": \"local\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T03:02:57.193562+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/home/.openhands/plugins/installed/qa-f26-adopted\",\n          \"skills\": [\n            {\n              \"name\": \"qa-f26-adopted-skill\",\n              \"description\": \"QA fixture skill qa-f26-adopted-skill; mention QA_SKILL_MARKER when asked about qa-f26-adopted-skill.\"\n            },\n            {\n              \"name\": \"qa-f26-adopted:qa-hello\",\n              \"description\": \"Say hello from the QA plugin\"\n            }\n          ],\n          \"files\": [\n            \".plugin/plugin.json\",\n            \"commands/qa-hello.md\",\n            \"hooks/hooks.json\",\n            \"skills/qa-f26-adopted-skill/SKILL.md\"\n          ]\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 1067,\n  \"checks\": [\n    {\n      \"check\": \"plugins contains \\\"name\\\": \\\"qa-f26-adopted\\\"\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-f26-inst\\\", \\\"version\\\": \\\"0.1.0\\\", \\\"description\\\": \\\"QA local plugin v2\\\", \\\"enabled\\\": true, \\\"source\\\": \\\"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/plugins/qa-f2\\u2026\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/plugins/installed/qa-f26-adopted\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"699\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"name\": \"qa-f26-adopted\",\n      \"version\": \"0.1.0\",\n      \"description\": \"QA fixture plugin qa-f26-adopted\",\n      \"enabled\": true,\n      \"source\": \"local\",\n      \"resolved_ref\": null,\n      \"repo_path\": null,\n      \"installed_at\": \"2026-10-13T03:02:57.193562+00:00\",\n      \"install_path\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/home/.openhands/plugins/installed/qa-f26-adopted\",\n      \"skills\": [\n        {\n          \"name\": \"qa-f26-adopted-skill\",\n          \"description\": \"QA fixture skill qa-f26-adopted-skill; mention QA_SKILL_MARKER when asked about qa-f26-adopted-skill.\"\n        },\n        {\n          \"name\": \"qa-f26-adopted:qa-hello\",\n          \"description\": \"Say hello from the QA plugin\"\n        }\n      ],\n      \"files\": [\n        \".plugin/plugin.json\",\n        \"commands/qa-hello.md\",\n        \"hooks/hooks.json\",\n        \"skills/qa-f26-adopted-skill/SKILL.md\"\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 343,\n  \"checks\": [\n    {\n      \"check\": \"source eq local\",\n      \"ok\": true,\n      \"actual\": \"local\"\n    }\n  ]\n}\n{\n  \"ok\": false,\n  \"status\": 500,\n  \"request\": {\n    \"method\": \"POST\",\n    \"path\": \"/api/plugins/installed/qa-f26-gone/refresh\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 500,\n    \"headers\": {\n      \"content-length\": \"231\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"detail\": \"Internal Server Error\",\n      \"exception\": \"Local extension path does not exist: /workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/fixtures/qa-f26/tmp/qa-f26-gone\",\n      \"error_id\": \"012a2951fbfe4e5cb513b968379642a1\"\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 1462,\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-030021-e114-map-f26/evidence/F26.refresh-unfetchable/vanished.json\",\n  \"hint\": \"expected 400,422, got 500\"\n}\n",
  "stderr": ""
}
