{
  "file": "F28-canvas-extensions.md",
  "bullet": "Discovery by listing (`F28.list-discovery`).",
  "ids": [
    "F28.list-discovery"
  ],
  "line": 407,
  "script": "cp -r \"$FX\" \"$INST/qa-f28-hand\"\nsed -i 's/\"name\": \"qa-canvas\"/\"name\": \"qa-f28-hand\"/' \"$INST/qa-f28-hand/canvas-extension.json\"\ncontrol-agent-server api GET /api/canvas-extensions/installed/qa-f28-hand --expect 404\ncontrol-agent-server api GET /api/canvas-extensions/installed --expect 200 --check canvas_extensions len-eq 4 \\\n  --check canvas_extensions.3.name eq qa-f28-hand --check canvas_extensions.3.source eq local \\\n  --check canvas_extensions.3.enabled eq false --save F28.list-discovery/discovered\ncontrol-agent-server api GET /api/canvas-extensions/installed/qa-f28-hand --expect 200 --check source eq local\ncontrol-agent-server state cat home/.openhands/canvas-extensions/installed/.installed.json --check extensions.qa-f28-hand.enabled eq false\nrm -rf \"$INST/qa-f28-hand\"\ncontrol-agent-server api GET /api/canvas-extensions/installed/qa-f28-hand --expect 404\ncontrol-agent-server api GET /api/canvas-extensions/installed --check canvas_extensions len-eq 3 \\\n  --check canvas_extensions not-contains qa-f28-hand --save F28.list-discovery/pruned\ncontrol-agent-server state cat home/.openhands/canvas-extensions/installed/.installed.json --check extensions.qa-f28-hand missing\n",
  "exit_code": 0,
  "elapsed_ms": 2903,
  "failed_line": null,
  "failed_command": null,
  "stdout": "{\n  \"ok\": true,\n  \"status\": 404,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/canvas-extensions/installed/qa-f28-hand\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 404,\n    \"headers\": {\n      \"content-length\": \"60\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"detail\": \"Canvas extension 'qa-f28-hand' is not installed\"\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 89\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/canvas-extensions/installed\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"3751\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"canvas_extensions\": [\n        {\n          \"name\": \"qa-canvas\",\n          \"version\": \"0.1.0\",\n          \"description\": \"QA fixture Canvas app\",\n          \"enabled\": false,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-canvas\",\n          \"requested_ref\": null,\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T02:42:21.953802+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-canvas\",\n          \"manifest\": {\n            \"schema_version\": 1,\n            \"name\": \"qa-canvas\",\n            \"display_name\": \"QA qa-canvas\",\n            \"version\": \"0.1.0\",\n            \"description\": \"QA fixture Canvas app\",\n            \"entrypoint\": \"dist/index.js\",\n            \"contributes\": {\n              \"pages\": [\n                {\n                  \"id\": \"main\",\n                  \"title\": \"QA qa-canvas\",\n                  \"path\": \"/qa-canvas\"\n                }\n              ]\n            },\n            \"icon\": \"assets/icon.svg\"\n          }\n        },\n        {\n          \"name\": \"qa-backend\",\n          \"version\": \"0.1.0\",\n          \"description\": \"QA fixture Canvas app\",\n          \"enabled\": false,\n          \"source\": \"file:///workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-backend\",\n          \"requested_ref\": null,\n          \"resolved_ref\": \"f3946ddff93a691d5cf27c3d02095311b16a572c\",\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T02:42:25.198765+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-backend\",\n          \"manifest\": {\n            \"schema_version\": 1,\n            \"name\": \"qa-backend\",\n            \"display_name\": \"QA qa-backend\",\n            \"version\": \"0.1.0\",\n            \"description\": \"QA fixture Canvas app\",\n            \"entrypoint\": \"dist/index.js\",\n            \"contributes\": {\n              \"pages\": [\n                {\n                  \"id\": \"main\",\n                  \"title\": \"QA qa-backend\",\n                  \"path\": \"/qa-backend\"\n                }\n              ]\n            },\n            \"backend\": {\n              \"schema_version\": 1,\n              \"artifacts\": {\n                \"linux-amd64\": {\n                  \"path\": \"backend/linux.tar.gz\",\n                  \"url\": null,\n                  \"sha256\": \"39e8f5ed1afd16b7b618794bdd2a526ace8258b5cb804272ccebff4dea0e17cf\",\n                  \"strip_components\": 0\n                },\n                \"linux-arm64\": {\n                  \"path\": \"backend/linux.tar.gz\",\n                  \"url\": null,\n                  \"sha256\": \"39e8f5ed1afd16b7b618794bdd2a526ace8258b5cb804272ccebff4dea0e17cf\",\n                  \"strip_components\": 0\n                }\n              },\n              \"argv\": [\n                \"{artifact_dir}/server.py\",\n                \"{port}\",\n                \"{data_dir}\"\n              ],\n              \"health\": {\n                \"path\": \"/health\",\n                \"timeout_seconds\": 15.0,\n                \"interval_seconds\": 0.1\n              },\n              \"inherit_environment\": []\n            },\n            \"icon\": \"assets/icon.svg\"\n          }\n        },\n        {\n          \"name\": \"qa-f28-logs\",\n          \"version\": \"0.1.0\",\n          \"description\": \"\",\n          \"enabled\": false,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/f28\",\n          \"requested_ref\": null,\n          \"resolved_ref\": null,\n          \"repo_path\": \"qa-f28-logs\",\n          \"installed_at\": \"2026-10-13T02:42:29.519367+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-f28-logs\",\n          \"manifest\": {\n            \"schema_version\": 1,\n            \"name\": \"qa-f28-logs\",\n            \"display_name\": \"qa-f28-logs\",\n            \"version\": \"0.1.0\",\n            \"description\": \"\",\n            \"entrypoint\": \"dist/index.js\",\n            \"contributes\": {\n              \"pages\": []\n            },\n            \"backend\": {\n              \"schema_version\": 1,\n              \"artifacts\": {\n                \"linux-amd64\": {\n                  \"path\": \"backend/linux.tar.gz\",\n                  \"url\": null,\n                  \"sha256\": \"a24cc42d4ad9ce0b8b6c469d7761a039505c4254988eb7c229d8a9db403f7ffc\",\n                  \"strip_components\": 0\n                },\n                \"linux-arm64\": {\n                  \"path\": \"backend/linux.tar.gz\",\n                  \"url\": null,\n                  \"sha256\": \"a24cc42d4ad9ce0b8b6c469d7761a039505c4254988eb7c229d8a9db403f7ffc\",\n                  \"strip_components\": 0\n                }\n              },\n              \"argv\": [\n                \"{artifact_dir}/run.sh\",\n                \"{port}\"\n              ],\n              \"health\": {\n                \"path\": \"/health\",\n                \"timeout_seconds\": 30.0,\n                \"interval_seconds\": 0.2\n              },\n              \"inherit_environment\": []\n            }\n          }\n        },\n        {\n          \"name\": \"qa-f28-hand\",\n          \"version\": \"0.1.0\",\n          \"description\": \"QA fixture Canvas app\",\n          \"enabled\": false,\n          \"source\": \"local\",\n          \"requested_ref\": null,\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T02:42:48.940697+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-f28-hand\",\n          \"manifest\": {\n            \"schema_version\": 1,\n            \"name\": \"qa-f28-hand\",\n            \"display_name\": \"QA qa-canvas\",\n            \"version\": \"0.1.0\",\n            \"description\": \"QA fixture Canvas app\",\n            \"entrypoint\": \"dist/index.js\",\n            \"contributes\": {\n              \"pages\": [\n                {\n                  \"id\": \"main\",\n                  \"title\": \"QA qa-canvas\",\n                  \"path\": \"/qa-canvas\"\n                }\n              ]\n            },\n            \"icon\": \"assets/icon.svg\"\n          }\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 89,\n  \"checks\": [\n    {\n      \"check\": \"canvas_extensions len-eq 4\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-canvas\\\", \\\"version\\\": \\\"0.1.0\\\", \\\"description\\\": \\\"QA fixture Canvas app\\\", \\\"enabled\\\": false, \\\"source\\\": \\\"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-c\\u2026\"\n    },\n    {\n      \"check\": \"canvas_extensions.3.name eq qa-f28-hand\",\n      \"ok\": true,\n      \"actual\": \"qa-f28-hand\"\n    },\n    {\n      \"check\": \"canvas_extensions.3.source eq local\",\n      \"ok\": true,\n      \"actual\": \"local\"\n    },\n    {\n      \"check\": \"canvas_extensions.3.enabled eq false\",\n      \"ok\": true,\n      \"actual\": \"false\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/evidence/F28.list-discovery/discovered.json\"\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/canvas-extensions/installed/qa-f28-hand\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"636\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"name\": \"qa-f28-hand\",\n      \"version\": \"0.1.0\",\n      \"description\": \"QA fixture Canvas app\",\n      \"enabled\": false,\n      \"source\": \"local\",\n      \"requested_ref\": null,\n      \"resolved_ref\": null,\n      \"repo_path\": null,\n      \"installed_at\": \"2026-10-13T02:42:48.940697+00:00\",\n      \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-f28-hand\",\n      \"manifest\": {\n        \"schema_version\": 1,\n        \"name\": \"qa-f28-hand\",\n        \"display_name\": \"QA qa-canvas\",\n        \"version\": \"0.1.0\",\n        \"description\": \"QA fixture Canvas app\",\n        \"entrypoint\": \"dist/index.js\",\n        \"contributes\": {\n          \"pages\": [\n            {\n              \"id\": \"main\",\n              \"title\": \"QA qa-canvas\",\n              \"path\": \"/qa-canvas\"\n            }\n          ]\n        },\n        \"icon\": \"assets/icon.svg\"\n      }\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 90,\n  \"checks\": [\n    {\n      \"check\": \"source eq local\",\n      \"ok\": true,\n      \"actual\": \"local\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"path\": \"home/.openhands/canvas-extensions/installed/.installed.json\",\n  \"bytes\": 2164,\n  \"mode\": \"0o600\",\n  \"content\": {\n    \"extensions\": {\n      \"qa-canvas\": {\n        \"name\": \"qa-canvas\",\n        \"version\": \"0.1.0\",\n        \"description\": \"QA fixture Canvas app\",\n        \"enabled\": false,\n        \"source\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-canvas\",\n        \"requested_ref\": null,\n        \"resolved_ref\": null,\n        \"repo_path\": null,\n        \"installed_at\": \"2026-10-13T02:42:21.953802+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-canvas\"\n      },\n      \"qa-backend\": {\n        \"name\": \"qa-backend\",\n        \"version\": \"0.1.0\",\n        \"description\": \"QA fixture Canvas app\",\n        \"enabled\": false,\n        \"source\": \"file:///workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-backend\",\n        \"requested_ref\": null,\n        \"resolved_ref\": \"f3946ddff93a691d5cf27c3d02095311b16a572c\",\n        \"repo_path\": null,\n        \"installed_at\": \"2026-10-13T02:42:25.198765+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-backend\"\n      },\n      \"qa-f28-logs\": {\n        \"name\": \"qa-f28-logs\",\n        \"version\": \"0.1.0\",\n        \"description\": \"\",\n        \"enabled\": false,\n        \"source\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/f28\",\n        \"requested_ref\": null,\n        \"resolved_ref\": null,\n        \"repo_path\": \"qa-f28-logs\",\n        \"installed_at\": \"2026-10-13T02:42:29.519367+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-f28-logs\"\n      },\n      \"qa-f28-hand\": {\n        \"name\": \"qa-f28-hand\",\n        \"version\": \"0.1.0\",\n        \"description\": \"QA fixture Canvas app\",\n        \"enabled\": false,\n        \"source\": \"local\",\n        \"requested_ref\": null,\n        \"resolved_ref\": null,\n        \"repo_path\": null,\n        \"installed_at\": \"2026-10-13T02:42:48.940697+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-f28-hand\"\n      }\n    }\n  },\n  \"checks\": [\n    {\n      \"check\": \"extensions.qa-f28-hand.enabled eq false\",\n      \"ok\": true,\n      \"actual\": \"false\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"status\": 404,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/canvas-extensions/installed/qa-f28-hand\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 404,\n    \"headers\": {\n      \"content-length\": \"60\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"detail\": \"Canvas extension 'qa-f28-hand' is not installed\"\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 55\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/canvas-extensions/installed\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"3114\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"canvas_extensions\": [\n        {\n          \"name\": \"qa-canvas\",\n          \"version\": \"0.1.0\",\n          \"description\": \"QA fixture Canvas app\",\n          \"enabled\": false,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-canvas\",\n          \"requested_ref\": null,\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T02:42:21.953802+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-canvas\",\n          \"manifest\": {\n            \"schema_version\": 1,\n            \"name\": \"qa-canvas\",\n            \"display_name\": \"QA qa-canvas\",\n            \"version\": \"0.1.0\",\n            \"description\": \"QA fixture Canvas app\",\n            \"entrypoint\": \"dist/index.js\",\n            \"contributes\": {\n              \"pages\": [\n                {\n                  \"id\": \"main\",\n                  \"title\": \"QA qa-canvas\",\n                  \"path\": \"/qa-canvas\"\n                }\n              ]\n            },\n            \"icon\": \"assets/icon.svg\"\n          }\n        },\n        {\n          \"name\": \"qa-backend\",\n          \"version\": \"0.1.0\",\n          \"description\": \"QA fixture Canvas app\",\n          \"enabled\": false,\n          \"source\": \"file:///workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-backend\",\n          \"requested_ref\": null,\n          \"resolved_ref\": \"f3946ddff93a691d5cf27c3d02095311b16a572c\",\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T02:42:25.198765+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-backend\",\n          \"manifest\": {\n            \"schema_version\": 1,\n            \"name\": \"qa-backend\",\n            \"display_name\": \"QA qa-backend\",\n            \"version\": \"0.1.0\",\n            \"description\": \"QA fixture Canvas app\",\n            \"entrypoint\": \"dist/index.js\",\n            \"contributes\": {\n              \"pages\": [\n                {\n                  \"id\": \"main\",\n                  \"title\": \"QA qa-backend\",\n                  \"path\": \"/qa-backend\"\n                }\n              ]\n            },\n            \"backend\": {\n              \"schema_version\": 1,\n              \"artifacts\": {\n                \"linux-amd64\": {\n                  \"path\": \"backend/linux.tar.gz\",\n                  \"url\": null,\n                  \"sha256\": \"39e8f5ed1afd16b7b618794bdd2a526ace8258b5cb804272ccebff4dea0e17cf\",\n                  \"strip_components\": 0\n                },\n                \"linux-arm64\": {\n                  \"path\": \"backend/linux.tar.gz\",\n                  \"url\": null,\n                  \"sha256\": \"39e8f5ed1afd16b7b618794bdd2a526ace8258b5cb804272ccebff4dea0e17cf\",\n                  \"strip_components\": 0\n                }\n              },\n              \"argv\": [\n                \"{artifact_dir}/server.py\",\n                \"{port}\",\n                \"{data_dir}\"\n              ],\n              \"health\": {\n                \"path\": \"/health\",\n                \"timeout_seconds\": 15.0,\n                \"interval_seconds\": 0.1\n              },\n              \"inherit_environment\": []\n            },\n            \"icon\": \"assets/icon.svg\"\n          }\n        },\n        {\n          \"name\": \"qa-f28-logs\",\n          \"version\": \"0.1.0\",\n          \"description\": \"\",\n          \"enabled\": false,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/f28\",\n          \"requested_ref\": null,\n          \"resolved_ref\": null,\n          \"repo_path\": \"qa-f28-logs\",\n          \"installed_at\": \"2026-10-13T02:42:29.519367+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-f28-logs\",\n          \"manifest\": {\n            \"schema_version\": 1,\n            \"name\": \"qa-f28-logs\",\n            \"display_name\": \"qa-f28-logs\",\n            \"version\": \"0.1.0\",\n            \"description\": \"\",\n            \"entrypoint\": \"dist/index.js\",\n            \"contributes\": {\n              \"pages\": []\n            },\n            \"backend\": {\n              \"schema_version\": 1,\n              \"artifacts\": {\n                \"linux-amd64\": {\n                  \"path\": \"backend/linux.tar.gz\",\n                  \"url\": null,\n                  \"sha256\": \"a24cc42d4ad9ce0b8b6c469d7761a039505c4254988eb7c229d8a9db403f7ffc\",\n                  \"strip_components\": 0\n                },\n                \"linux-arm64\": {\n                  \"path\": \"backend/linux.tar.gz\",\n                  \"url\": null,\n                  \"sha256\": \"a24cc42d4ad9ce0b8b6c469d7761a039505c4254988eb7c229d8a9db403f7ffc\",\n                  \"strip_components\": 0\n                }\n              },\n              \"argv\": [\n                \"{artifact_dir}/run.sh\",\n                \"{port}\"\n              ],\n              \"health\": {\n                \"path\": \"/health\",\n                \"timeout_seconds\": 30.0,\n                \"interval_seconds\": 0.2\n              },\n              \"inherit_environment\": []\n            }\n          }\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 66,\n  \"checks\": [\n    {\n      \"check\": \"canvas_extensions len-eq 3\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-canvas\\\", \\\"version\\\": \\\"0.1.0\\\", \\\"description\\\": \\\"QA fixture Canvas app\\\", \\\"enabled\\\": false, \\\"source\\\": \\\"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-c\\u2026\"\n    },\n    {\n      \"check\": \"canvas_extensions not-contains qa-f28-hand\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-canvas\\\", \\\"version\\\": \\\"0.1.0\\\", \\\"description\\\": \\\"QA fixture Canvas app\\\", \\\"enabled\\\": false, \\\"source\\\": \\\"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-c\\u2026\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/evidence/F28.list-discovery/pruned.json\"\n}\n{\n  \"ok\": true,\n  \"path\": \"home/.openhands/canvas-extensions/installed/.installed.json\",\n  \"bytes\": 1698,\n  \"mode\": \"0o600\",\n  \"content\": {\n    \"extensions\": {\n      \"qa-canvas\": {\n        \"name\": \"qa-canvas\",\n        \"version\": \"0.1.0\",\n        \"description\": \"QA fixture Canvas app\",\n        \"enabled\": false,\n        \"source\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-canvas\",\n        \"requested_ref\": null,\n        \"resolved_ref\": null,\n        \"repo_path\": null,\n        \"installed_at\": \"2026-10-13T02:42:21.953802+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-canvas\"\n      },\n      \"qa-backend\": {\n        \"name\": \"qa-backend\",\n        \"version\": \"0.1.0\",\n        \"description\": \"QA fixture Canvas app\",\n        \"enabled\": false,\n        \"source\": \"file:///workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/canvas/qa-backend\",\n        \"requested_ref\": null,\n        \"resolved_ref\": \"f3946ddff93a691d5cf27c3d02095311b16a572c\",\n        \"repo_path\": null,\n        \"installed_at\": \"2026-10-13T02:42:25.198765+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-backend\"\n      },\n      \"qa-f28-logs\": {\n        \"name\": \"qa-f28-logs\",\n        \"version\": \"0.1.0\",\n        \"description\": \"\",\n        \"enabled\": false,\n        \"source\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/fixtures/f28\",\n        \"requested_ref\": null,\n        \"resolved_ref\": null,\n        \"repo_path\": \"qa-f28-logs\",\n        \"installed_at\": \"2026-10-13T02:42:29.519367+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-024207-5ac2-map-f28/home/.openhands/canvas-extensions/installed/qa-f28-logs\"\n      }\n    }\n  },\n  \"checks\": [\n    {\n      \"check\": \"extensions.qa-f28-hand missing\",\n      \"ok\": true,\n      \"actual\": \"null\"\n    }\n  ]\n}\n",
  "stderr": ""
}
