{
  "file": "F25-skills.md",
  "bullet": "Hand-copied and hand-deleted directories (`F25.self-heal`).",
  "ids": [
    "F25.self-heal"
  ],
  "line": 543,
  "script": "mkdir -p \"$I/qa-f25-manual\"\nprintf -- '---\\nname: qa-f25-manual\\ndescription: QA manual copy\\n---\\nManual\\n' > \"$I/qa-f25-manual/SKILL.md\"\ncontrol-agent-server api GET /api/skills/installed/qa-f25-manual --expect 404\ncontrol-agent-server api GET /api/skills/installed --expect 200 --check skills contains '\"name\": \"qa-f25-manual\"' --save F25.self-heal/discovered\ncontrol-agent-server api GET /api/skills/installed/qa-f25-manual --expect 200 --check source eq local --check enabled eq true\ncontrol-agent-server state cat home/.openhands/skills/installed/.installed.json --check extensions.qa-f25-manual.source eq local\nrm -rf \"$I/qa-f25-manual\"\ncontrol-agent-server api GET /api/skills/installed --expect 200 --check skills not-contains qa-f25-manual\ncontrol-agent-server state cat home/.openhands/skills/installed/.installed.json --not-contains qa-f25-manual\n",
  "exit_code": 0,
  "elapsed_ms": 3254,
  "failed_line": null,
  "failed_command": null,
  "stdout": "{\n  \"ok\": true,\n  \"status\": 404,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/skills/installed/qa-f25-manual\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 404,\n    \"headers\": {\n      \"content-length\": \"51\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"detail\": \"Skill 'qa-f25-manual' is not installed\"\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 117\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/skills/installed\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"1744\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"skills\": [\n        {\n          \"name\": \"qa-f25-skill\",\n          \"version\": \"1.0.0\",\n          \"description\": \"QA fixture skill v2\",\n          \"enabled\": true,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/skills/qa-f25-skill\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T02:59:30.760813+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-skill\"\n        },\n        {\n          \"name\": \"qa-f25-src-skill\",\n          \"version\": \"1.0.0\",\n          \"description\": \"QA fixture skill qa-f25-src-skill; mention QA_SKILL_MARKER when asked about qa-f25-src-skill.\",\n          \"enabled\": true,\n          \"source\": \"file:///workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/git/qa-f25-src\",\n          \"resolved_ref\": \"85439e5d678379453aa37a3e0a4f1aec0b0c4e82\",\n          \"repo_path\": \"skills/qa-f25-src-skill\",\n          \"installed_at\": \"2026-10-13T02:59:38.682828+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-src-skill\"\n        },\n        {\n          \"name\": \"qa-f25-gone\",\n          \"version\": \"1.0.0\",\n          \"description\": \"QA source that disappears\",\n          \"enabled\": true,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/qa-f25/tmp/qa-f25-gone\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T02:59:39.266132+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-gone\"\n        },\n        {\n          \"name\": \"qa-f25-manual\",\n          \"version\": \"1.0.0\",\n          \"description\": \"QA manual copy\",\n          \"enabled\": true,\n          \"source\": \"local\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T02:59:50.957783+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-manual\"\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 92,\n  \"checks\": [\n    {\n      \"check\": \"skills contains \\\"name\\\": \\\"qa-f25-manual\\\"\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-f25-skill\\\", \\\"version\\\": \\\"1.0.0\\\", \\\"description\\\": \\\"QA fixture skill v2\\\", \\\"enabled\\\": true, \\\"source\\\": \\\"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/skills/qa-f\\u2026\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/evidence/F25.self-heal/discovered.json\"\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/skills/installed/qa-f25-manual\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"324\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"name\": \"qa-f25-manual\",\n      \"version\": \"1.0.0\",\n      \"description\": \"QA manual copy\",\n      \"enabled\": true,\n      \"source\": \"local\",\n      \"resolved_ref\": null,\n      \"repo_path\": null,\n      \"installed_at\": \"2026-10-13T02:59:50.957783+00:00\",\n      \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-manual\"\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 69,\n  \"checks\": [\n    {\n      \"check\": \"source eq local\",\n      \"ok\": true,\n      \"actual\": \"local\"\n    },\n    {\n      \"check\": \"enabled eq true\",\n      \"ok\": true,\n      \"actual\": \"true\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"path\": \"home/.openhands/skills/installed/.installed.json\",\n  \"bytes\": 2284,\n  \"mode\": \"0o600\",\n  \"content\": {\n    \"extensions\": {\n      \"qa-f25-skill\": {\n        \"name\": \"qa-f25-skill\",\n        \"version\": \"1.0.0\",\n        \"description\": \"QA fixture skill v2\",\n        \"enabled\": true,\n        \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/skills/qa-f25-skill\",\n        \"requested_ref\": null,\n        \"resolved_ref\": null,\n        \"repo_path\": null,\n        \"installed_at\": \"2026-10-13T02:59:30.760813+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-skill\"\n      },\n      \"qa-f25-src-skill\": {\n        \"name\": \"qa-f25-src-skill\",\n        \"version\": \"1.0.0\",\n        \"description\": \"QA fixture skill qa-f25-src-skill; mention QA_SKILL_MARKER when asked about qa-f25-src-skill.\",\n        \"enabled\": true,\n        \"source\": \"file:///workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/git/qa-f25-src\",\n        \"requested_ref\": \"qa-f25-no-such-ref\",\n        \"resolved_ref\": \"85439e5d678379453aa37a3e0a4f1aec0b0c4e82\",\n        \"repo_path\": \"skills/qa-f25-src-skill\",\n        \"installed_at\": \"2026-10-13T02:59:38.682828+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-src-skill\"\n      },\n      \"qa-f25-gone\": {\n        \"name\": \"qa-f25-gone\",\n        \"version\": \"1.0.0\",\n        \"description\": \"QA source that disappears\",\n        \"enabled\": true,\n        \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/qa-f25/tmp/qa-f25-gone\",\n        \"requested_ref\": null,\n        \"resolved_ref\": null,\n        \"repo_path\": null,\n        \"installed_at\": \"2026-10-13T02:59:39.266132+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-gone\"\n      },\n      \"qa-f25-manual\": {\n        \"name\": \"qa-f25-manual\",\n        \"version\": \"1.0.0\",\n        \"description\": \"QA manual copy\",\n        \"enabled\": true,\n        \"source\": \"local\",\n        \"requested_ref\": null,\n        \"resolved_ref\": null,\n        \"repo_path\": null,\n        \"installed_at\": \"2026-10-13T02:59:50.957783+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-manual\"\n      }\n    }\n  },\n  \"checks\": [\n    {\n      \"check\": \"extensions.qa-f25-manual.source eq local\",\n      \"ok\": true,\n      \"actual\": \"local\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/skills/installed\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"body\": null,\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"1419\",\n      \"content-type\": \"application/json\"\n    },\n    \"body\": {\n      \"skills\": [\n        {\n          \"name\": \"qa-f25-skill\",\n          \"version\": \"1.0.0\",\n          \"description\": \"QA fixture skill v2\",\n          \"enabled\": true,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/skills/qa-f25-skill\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T02:59:30.760813+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-skill\"\n        },\n        {\n          \"name\": \"qa-f25-src-skill\",\n          \"version\": \"1.0.0\",\n          \"description\": \"QA fixture skill qa-f25-src-skill; mention QA_SKILL_MARKER when asked about qa-f25-src-skill.\",\n          \"enabled\": true,\n          \"source\": \"file:///workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/git/qa-f25-src\",\n          \"resolved_ref\": \"85439e5d678379453aa37a3e0a4f1aec0b0c4e82\",\n          \"repo_path\": \"skills/qa-f25-src-skill\",\n          \"installed_at\": \"2026-10-13T02:59:38.682828+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-src-skill\"\n        },\n        {\n          \"name\": \"qa-f25-gone\",\n          \"version\": \"1.0.0\",\n          \"description\": \"QA source that disappears\",\n          \"enabled\": true,\n          \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/qa-f25/tmp/qa-f25-gone\",\n          \"resolved_ref\": null,\n          \"repo_path\": null,\n          \"installed_at\": \"2026-10-13T02:59:39.266132+00:00\",\n          \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-gone\"\n        }\n      ]\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 55,\n  \"checks\": [\n    {\n      \"check\": \"skills not-contains qa-f25-manual\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"qa-f25-skill\\\", \\\"version\\\": \\\"1.0.0\\\", \\\"description\\\": \\\"QA fixture skill v2\\\", \\\"enabled\\\": true, \\\"source\\\": \\\"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/skills/qa-f\\u2026\"\n    }\n  ]\n}\n{\n  \"ok\": true,\n  \"path\": \"home/.openhands/skills/installed/.installed.json\",\n  \"bytes\": 1831,\n  \"mode\": \"0o600\",\n  \"content\": {\n    \"extensions\": {\n      \"qa-f25-skill\": {\n        \"name\": \"qa-f25-skill\",\n        \"version\": \"1.0.0\",\n        \"description\": \"QA fixture skill v2\",\n        \"enabled\": true,\n        \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/skills/qa-f25-skill\",\n        \"requested_ref\": null,\n        \"resolved_ref\": null,\n        \"repo_path\": null,\n        \"installed_at\": \"2026-10-13T02:59:30.760813+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-skill\"\n      },\n      \"qa-f25-src-skill\": {\n        \"name\": \"qa-f25-src-skill\",\n        \"version\": \"1.0.0\",\n        \"description\": \"QA fixture skill qa-f25-src-skill; mention QA_SKILL_MARKER when asked about qa-f25-src-skill.\",\n        \"enabled\": true,\n        \"source\": \"file:///workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/git/qa-f25-src\",\n        \"requested_ref\": \"qa-f25-no-such-ref\",\n        \"resolved_ref\": \"85439e5d678379453aa37a3e0a4f1aec0b0c4e82\",\n        \"repo_path\": \"skills/qa-f25-src-skill\",\n        \"installed_at\": \"2026-10-13T02:59:38.682828+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-src-skill\"\n      },\n      \"qa-f25-gone\": {\n        \"name\": \"qa-f25-gone\",\n        \"version\": \"1.0.0\",\n        \"description\": \"QA source that disappears\",\n        \"enabled\": true,\n        \"source\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/fixtures/qa-f25/tmp/qa-f25-gone\",\n        \"requested_ref\": null,\n        \"resolved_ref\": null,\n        \"repo_path\": null,\n        \"installed_at\": \"2026-10-13T02:59:39.266132+00:00\",\n        \"install_path\": \"/workspace/verification-artifacts/runs/20261013-025747-be38-map-f25/home/.openhands/skills/installed/qa-f25-gone\"\n      }\n    }\n  }\n}\n",
  "stderr": ""
}
