{
  "checker": {
    "claims": [
      {
        "claim": "CLI fetches a page and extracts metadata.",
        "command": "",
        "evidence": "",
        "expected": "200 OK",
        "input": "http://example.com",
        "kind": "claim",
        "outcome": "Claim needs an exact quote from source_file (default README.md).",
        "source": "*extruct* provides a command line tool that allows you to fetch a page and",
        "source_checked": false,
        "source_file": "README.md",
        "verdict": "blocked"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "README and CLI entry point describe one-shot page extraction; no scheduler or recurring cycle exists.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "README and CLI entry point describe one-shot page extraction; no scheduler or recurring cycle exists.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "/tmp/extruct-venv/bin/extruct",
        "http://example.com"
      ],
      "blocker": "product invocation failed: {\"argv\": [\"/tmp/extruct-venv/bin/extruct\", \"http://example.com\"], \"returncode\": 1, \"stdout\": \"\", \"stderr\": \"{\\n  \\\"dublincore\\\": [\\n    {\\n      \\\"elements\\\": [],\\n      \\\"namespaces\\\": {},\\n      \\\"terms\\\": []\\n    }\\n  ],\\n  \\\"json-ld\\\": [],\\n  \\\"microdata\\\": [],\\n  \\\"microformat\\\": [],\\n  \\\"opengraph\\\": [],\\n  \\\"rdfa\\\": [],\\n  \\\"status\\\": \\\"200 OK\\\",\\n  \\\"url\\\": \\\"http://example.com\\\"\\n}\\n\", \"needs_credentials\": false, \"needs_browser\": false}",
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 1,
      "stderr": "{\n  \"dublincore\": [\n    {\n      \"elements\": [],\n      \"namespaces\": {},\n      \"terms\": []\n    }\n  ],\n  \"json-ld\": [],\n  \"microdata\": [],\n  \"microformat\": [],\n  \"opengraph\": [],\n[excerpt truncated]",
      "stdout": "",
      "working": false
    },
    "evidence_strength": "partly_checked",
    "example_checks": [
      {
        "claim": "Use the documented CLI URL command",
        "command": "/tmp/extruct-venv/bin/extruct http://example.com",
        "deferred": false,
        "evidence": "{\n  \"dublincore\": [\n    {\n      \"elements\": [],\n      \"namespaces\": {},\n      \"terms\": []\n    }\n  ],\n  \"json-ld\": [],\n  \"microdata\": [],\n  \"microformat\": [],\n  \"opengraph\": [],\n  \"rdfa\": [],\n  \"status\": \"200 OK\",\n  \"url\": \"http://example.com\"\n}",
        "expected": "JSON metadata with HTTP status",
        "input": "http://example.com",
        "kind": "example",
        "outcome": "command exited with code 1",
        "returncode": 1,
        "source": "README.rst, Command Line Tool / Usage",
        "verdict": "no"
      }
    ],
    "status": "FAIL"
  },
  "deviations": [],
  "fault_owner": null,
  "main_blocker": "product invocation failed: {\"argv\": [\"/tmp/extruct-venv/bin/extruct\", \"http://example.com\"], \"returncode\": 1, \"stdout\": \"\", \"stderr\": \"{\\n  \\\"dublincore\\\": [\\n    {\\n      \\\"elements\\\": [],\\n      \\\"namespaces\\\": {},\\n      \\\"terms\\\": []\\n    }\\n  ],\\n  \\\"json-ld\\\": [],\\n  \\\"microdata\\\": [],\\n  \\\"microformat\\\": [],\\n  \\\"opengraph\\\": [],\\n  \\\"rdfa\\\": [],\\n  \\\"status\\\": \\\"200 OK\\\",\\n  \\\"url\\\": \\\"http://example.com\\\"\\n}\\n\", \"needs_credentials\": false, \"needs_browser\": false}",
  "operation": "Extract embedded metadata from a URL with the extruct CLI",
  "operation_scope": "Python 3.12 virtual environment with CLI extra installed",
  "outcome": "blocked",
  "plain_failure": null,
  "steps": [
    "Created /tmp/extruct-venv",
    "Installed project with CLI extra",
    "Ran CLI against http://example.com and observed HTTP 200"
  ],
  "stuck_step": "/tmp/extruct-venv/bin/extruct http://example.com",
  "suggested_fix": null
}
