{
  "checker": {
    "claims": [
      {
        "claim": "Ferry validate reports export counts",
        "command": "<guest-path> validate tests/fixtures",
        "evidence": "Channels       \u2502     7 \u2502\n\u2502 Categories     \u2502     3 \u2502\n\u2502 Roles          \u2502     3 \u2502\n\u2502 Messages       \u2502    30 \u2502\n\u2502 Attachments    \u2502     2 \u2502\n\u2502 Custom Emoji   \u2502     1 \u2502\n\u2502 Threads/Forums \u2502     2 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\nWarnings (3):\n  - Channel 'edge-cases': attachment 'expired_file.png' has an HTTP URL \u2014 media \nwas not downloaded locally\n  - Channel 'rendered-markdown': 1 message(s) have mentions written as plain \ntext instead of raw IDs, so they will arrive as text, with no link back to the \nuser.\n  - 1 attachment URL(s) have expired. Re-export with --media flag to download \nfiles locally.\n\n30 m",
        "expected": "reports channel counts for fixture exports",
        "input": "tests/fixtures",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Channels",
        "returncode": 1,
        "source": "`ferry validate`**, check an export before migrating: counts, warnings, and a time estimate. No network calls.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README and CLI reference entry points; the documented product operations are invoked manually, with no product scheduler or cycle mechanism described.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README and CLI reference entry points; the documented product operations are invoked manually, with no product scheduler or cycle mechanism described.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "validate",
        "tests/fixtures"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 1,
      "scope": "product operation",
      "stderr": "",
      "stdout": "Discord Ferry \u2014 validating export for Discord Ferry Test\n\n      Export Summary      \n\u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n\u2503 Item           \u2503 Count \u2503\n\u2521\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2529\n\u2502 Channels       \u2502     7 \u2502\n\u2502 Categories     \u2502     3 \u2502\n\u2502 Roles          \u2502     3 \u2502\n\u2502 Messages       \u2502    30 \u2502\n\u2502 Attachments    \u2502     2 \u2502\n\u2502 Custom Emoji   \u2502     1 \u2502\n[excerpt truncated]",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Validate a clean export folder and report counts",
        "command": "",
        "deferred": false,
        "evidence": "A clean standalone DCE export fixture is not available; tests/fixtures contains multiple samples and the documented mentions warning, so the exercised validation output is recorded in probe and claim.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "A clean standalone DCE export fixture is not available; tests/fixtures contains multiple samples and the documented mentions warning, so the exercised validation output is recorded in probe and claim.",
        "source": "docs/guides/cli-reference.md, ferry validate",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "The validation command returns 1 because the fixture includes a message whose mentions are plain text; the CLI reference documents this behavior."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "ferry validate tests/fixtures",
  "operation_scope": "Offline export validation with Python 3.12.3 and pipx-installed discord-ferry 3.1.6",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "Read README and CLI reference",
    "Installed pipx and python3-venv with apt",
    "Installed project using pipx install .",
    "Ran ferry validate tests/fixtures; reported 7 channels, 3 categories, 3 roles, 30 messages, 2 attachments, 1 custom emoji, and 2 threads/forums"
  ],
  "stuck_step": null,
  "suggested_fix": null
}
