{
  "run_id": "Btike--bulk-bg-remove-claude-haiku-5-5-1793150620837881741",
  "checker": {
    "claims": [
      {
        "claim": "Each photo is cut out into a new output folder (tested with -o, since the default <name>-no-bg location is not an argv destination)",
        "command": "<guest-path> <guest-path> -o <guest-path> -y",
        "evidence": "\u20261 done \u00b7 0 failed \u00b7 0 already done \u00b7 13s\n               ! showcase.png: edge <email> MP to fit free RAM\n               output \u2192 \n<guest-path>\n",
        "expected": "one image processed into the new folder <guest-path>",
        "input": "<guest-path>",
        "kind": "claim",
        "outcome": "Real input produced the expected result: 1 done",
        "returncode": 0,
        "source": "Output goes to a new `<name>-no-bg/` folder next to the input.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "--dry-run --json plans the run as JSON with the model chosen",
        "command": "<guest-path> <guest-path> --dry-run --json",
        "evidence": "\u2026\"model\": \"silueta\", \"model_choice\": {\"profile\": \"uniform\", \"model\": \"silueta\", \"score\": 8.1, \"best_model\": \"birefnet-general-lite\", \"best_score\": 8.6, \"best_needs_gb\": 11.7, \"needs_gb\": 3.0, \"fits\": true, \"gap\": 0.5}, \"edges\": \"matte\", \"output_format\": \"png\", \"finish\": null, \"already_done\": 0}\n",
        "expected": "JSON plan event naming the auto-chosen model silueta",
        "input": "<guest-path>",
        "kind": "claim",
        "outcome": "Real input produced the expected result: \"model\": \"silueta\"",
        "returncode": 0,
        "source": "scan and plan only; one JSON event per line for agents",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "--shop plans a white square 2000 px JPEG output",
        "command": "<guest-path> <guest-path> --shop --dry-run --json",
        "evidence": "\u2026\"output_format\": \"jpg\", \"finish\": {\"background\": \"#FFFFFF\", \"square\": true, \"pad\": 7.5, \"size\": 2000}, \"already_done\": 0}\n",
        "expected": "plan with output_format jpg",
        "input": "<guest-path>",
        "kind": "claim",
        "outcome": "Real input produced the expected result: \"output_format\": \"jpg\"",
        "returncode": 0,
        "source": "`--shop` puts every product on white, square, 2000 px and ready to",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected (README, src/bulk_bg_remove cli.py and the ui server). The product is a one-shot CLI run per folder; no cron, scheduler, --once/--now, or webhook loop was found. The only while-True loop is the local UI server's event stream (src/bulk_bg_remove/ui/server.py:343), which is not a product cycle.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected (README, src/bulk_bg_remove cli.py and the ui server). The product is a one-shot CLI run per folder; no cron, scheduler, --once/--now, or webhook loop was found. The only while-True loop is the local UI server's event stream (src/bulk_bg_remove/ui/server.py:343), which is not a product cycle.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "<guest-path>",
        "-o",
        "<guest-path>",
        "-y"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": " \u2584\u2584\u2584 BULK-BG-REMOVE \u2584\u2584\u2584\n v0.1.0 \u00b7 100% local \u00b7 subject pixels untouched\n\n [1/4 SCAN]    x86_64 \u00b7 1 perf cores \u00b7 3.5 GB free RAM \u00b7 cpu\n               1 images (WebP 1) \u00b7 0 MB \u00b7 0 skipped\n [2/4 PLAN]    1 to process \u00b7 1 worker, one image at a time (limited by RAM) \u00b7 \nETA ~2s\n               model silueta \u00b7 edges matte \u00b7 needs 3.0 GB free RAM\n               auto: silueta fits your free RAM (8.1/10 on uniform images; best \nbirefnet-general-lite 8.6)\n               output \u2192 \n<guest-path>\n[excerpt truncated]",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Documented folder run with --format webp for smaller lossless files",
        "command": "<guest-path> <guest-path> -o <guest-path> --format webp -y",
        "deferred": false,
        "evidence": " by RAM) \u00b7 \nETA ~2s\n               model silueta \u00b7 edges matte \u00b7 needs 3.0 GB free RAM\n               auto: silueta fits your free RAM (8.1/10 on uniform images; best \nbirefnet-general-lite 8.6)\n               output \u2192 \n<guest-path>\n [3/4 RUN]     loading model in each worker\u2026\n               worker 0 ready\n               \u2713 demo.webp  1280\u00d7720  1.6s\n\n [4/4 VERIFY]  checking 1 outputs\u2026\n               GAME CLEAR \u00b7 1 done \u00b7 0 failed \u00b7 0 already done \u00b7 5s\n               output \u2192 \n<guest-path>",
        "expected": "one image processed into <guest-path> as webp",
        "input": "<guest-path> --format webp",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Options table: --format webp|jpg",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
