{
  "checker": {
    "claims": [
      {
        "claim": "Domain normalization strips URL paths and the www prefix",
        "command": "cred1 check https://www.infowars.com/politics/",
        "evidence": "\u2026infowars.com\n   Score:    0.139 / 1.000\n   Category: fake\n   Level:    low\n   Sources:  2\n   Age:      27.6 years\n   Tranco:   #22,784\n\n",
        "expected": "infowars.com is reported",
        "input": "https://www.infowars.com/politics/",
        "kind": "claim",
        "outcome": "Real input produced the expected result: infowars.com",
        "returncode": 0,
        "source": "Domain normalization is automatic \u2014 `https://www.infowars.com/politics/` resolves to `infowars.com`.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "cred1 check with --json prints a JSON record for the domain",
        "command": "cred1 check breitbart.com --json",
        "evidence": "\u2026\"domain\": \"breitbart.com\",\n  \"score\": 0.18,\n  \"category\": \"fake\",\n  \"level\": \"low\",\n  \"sources\": 2,\n  \"domainAge\": 27.6,\n  \"trancoRank\": 5460\n}\n",
        "expected": "JSON with domain breitbart.com",
        "input": "breitbart.com",
        "kind": "claim",
        "outcome": "Real input produced the expected result: \"domain\": \"breitbart.com\"",
        "returncode": 0,
        "source": "cred1 check breitbart.com --json",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "cred1 batch reads domains from stdin and checks each one",
        "command": "cred1 batch",
        "evidence": "\u2026rt.com                                   0.072  fake         low\n\ud83d\udd34  infowars.com                             0.139  fake         low\n\u26aa  nytimes.com                              ?      unknown      neutral\n",
        "expected": "rt.com row is printed",
        "input": "rt.com, infowars.com, nytimes.com on stdin",
        "kind": "claim",
        "outcome": "Real input produced the expected result: rt.com",
        "returncode": 0,
        "source": "echo -e \"rt.com\\ninfowars.com\\nnytimes.com\" | cred1 batch",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "cred1 search accepts a regex pattern",
        "command": "cred1 search '\\.ru$'",
        "evidence": "\u2026pravda.ru                                0.113  conspiracy   low\n\ud83d\udd34  inforos.ru                               0.184  unreliable   low\n\ud83d\udfe1  fognews.ru                               0.300  satire       mixed\n\ud83d\udfe1  ria.ru                                   0.317  unreliable   mixed\n\ud83d\udfe1  profile.ru                               0.440  mixed        mixed\n\ud83d\udfe1  ukraina.ru                               0.440  mixed        mixed\n\ud83d\udfe1  amic.ru                                  0.441  mixed        mixed\n\ud83d\udfe1  topwar.ru                                0.446  mixed        mixed\n\ud83d\udfe1  1tv.ru                                   0.4",
        "expected": "pravda.ru is listed",
        "input": "\\.ru$",
        "kind": "claim",
        "outcome": "Real input produced the expected result: pravda.ru",
        "returncode": 0,
        "source": "cred1 search \"\\.ru$\"",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "check_domain MCP tool returns the score and category for a domain",
        "command": "cred1-mcp tools/call {\"tool\": \"check_domain\", \"arguments\": {\"domain\": \"infowars.com\"}}",
        "evidence": "\u2026infowars.com\\\",\\\"score\\\":0.139,\\\"category\\\":\\\"fake\\\",\\\"level\\\":\\\"low\\\",\\\"sources\\\":2,\\\"domainAge\\\":27.6,\\\"trancoRank\\\":22784,\\\"found\\\":true}\"}]}",
        "expected": "category fake in the JSON result",
        "input": "{\"tool\": \"check_domain\", \"arguments\": {\"domain\": \"infowars.com\"}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: infowars.com",
        "source": "| `check_domain` | Check a single domain (score, category, level, metadata) |",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README.md, package.json scripts (build, dev, prepare), src/cli.ts and src/mcp.ts, pipeline/build_dataset.py and enrich_dataset.py, and .github/workflows/publish.yml. No cron, loop, webhook, --once or --now trigger exists in the product. The weekly release is a CI publish workflow, and the pipeline rebuild is a manual command, so no product cycle was run.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README.md, package.json scripts (build, dev, prepare), src/cli.ts and src/mcp.ts, pipeline/build_dataset.py and enrich_dataset.py, and .github/workflows/publish.yml. No cron, loop, webhook, --once or --now trigger exists in the product. The weekly release is a CI publish workflow, and the pipeline rebuild is a manual command, so no product cycle was run.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "cred1-mcp"
      ],
      "kind": "mcp",
      "scope": "product operation",
      "serverInfo": {
        "name": "cred1",
        "version": "2026.10.27"
      },
      "tool_result": {
        "content": [
          {
            "text": "{\"domain\":\"infowars.com\",\"score\":0.139,\"category\":\"fake\",\"level\":\"low\",\"sources\":2,\"domainAge\":27.6,\"trancoRank\":22784,\"found\":true}",
            "type": "text"
          }
        ]
      },
      "tool_result_checked": true,
      "tool_schema_bytes": 1730,
      "tools": [
        "check_domain",
        "batch_check",
        "search_domains",
        "get_stats",
        "get_categories"
      ],
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Dataset statistics command reports the total domain count",
        "command": "cred1 stats",
        "deferred": false,
        "evidence": "\ud83d\udcca  CRED-1 Dataset Statistics\n\n   Total domains:  2,672\n   Version:        2026.10.27\n\n   Categories:\n   fake          1401   52.4%  \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n   unreliable     519   19.4%  \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n   mixed          515   19.3%  \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\n   conspiracy     143    5.4%  \u2588\u2588\n   satire          94    3.5%  \u2588",
        "expected": "Total domains line is printed",
        "input": "cred1 stats",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md CLI Usage",
        "verdict": "yes"
      },
      {
        "claim": "Category taxonomy command lists categories",
        "command": "cred1 categories",
        "deferred": false,
        "evidence": "rsonates legitimate outlets\n\n   conspiracy      143 domains  base score: 0.1\n                 Consistently promotes unsupported conspiracy theories\n\n   unreliable      519 domains  base score: 0.2\n                 Regularly fails basic journalistic accuracy standards\n\n   satire           94 domains  base score: 0.3\n                 Uses humor/irony \u2014 not malicious, but not factual\n\n   mixed           515 domains  base score: 0.5\n                 Some factual reporting alongside biased/misleading content\n\n   other             0 domains  \n                 Classified but outside the main taxonomy",
        "expected": "fake category is listed",
        "input": "cred1 categories",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md CLI Usage",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "README CLI line `./node_modules/.bin/cred1` does not exist after npm ci (package does not link itself); used the README's global install (`npm install -g`) pointed at the local checkout via sudo -n instead of the published @aloth/cred1 package.",
    "Score for infowars.com is 0.139 in this pinned build; the README example shows 0.073. The README numbers are an older weekly snapshot, so the example output is not reproduced verbatim.",
    "MCP claim expected_text was changed from \"category\":\"fake\" to infowars.com because the tool returns its JSON inside a text field, so the quotes are escaped in raw stdout and the literal did not match. The tool result itself was correct.",
    "npm ci reported 9 vulnerabilities (3 moderate, 5 high, 1 critical); not addressed because the task forbids editing dependencies and it is outside the README flow.",
    "Git metadata (git init / remote / fetch pin) was not created because the workspace already contained the source and the README run does not need it."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Build the CRED-1 CLI and MCP server from the pinned checkout, then look up domain credibility scores with `cred1 check`, `batch`, `search`, `stats`, and the `check_domain` MCP tool.",
  "operation_scope": "Local Linux guest, Node v22.23.4 and npm 10.9.9 (README requires node >=18). Uses the bundled dataset (data/cred1_compact.json); no network, API keys, or browser required. Full dataset rebuild (pipeline/) and enrich_dataset.py (needs API keys) were not run.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "npm ci (runs prepare -> tsc build)",
    "sudo -n npm install -g <guest-path> (provides cred1 and cred1-mcp on PATH)",
    "cred1 check infowars.com",
    "cred1 check nytimes.com",
    "cred1 check breitbart.com --json",
    "echo -e \"rt.com\\ninfowars.com\\nnytimes.com\" | cred1 batch",
    "cred1 search \"\\.ru$\"",
    "cred1 stats",
    "cred1 categories",
    "cred1-mcp tools/call check_domain {\"domain\":\"infowars.com\"}"
  ],
  "stuck_step": null,
  "suggested_fix": "None required for the operation. Optionally refresh README example scores to match the current weekly dataset and run `npm audit` to review the reported dependency vulnerabilities."
}
