{
  "checker": {
    "claims": [
      {
        "claim": "Open the <email>:3040 and it shows a Run task control",
        "command": "pnpm start",
        "evidence": "Run task<span class=\"shortcut\">\u2318 \u21b5</span></button></div></div><div class=\"suggestions\"><span>A place to start</span><div><button><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-smartphone\" aria-hidden=\"true\"><rect width=\"14\" height=\"20\" x=\"5\" y=\"2\" rx=\"2\" ry=\"2\"></rect><path d=\"M12 18h.01\"></path></svg>Find Android version<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strok",
        "expected": "studio page with Run task control",
        "input": "GET http://127.0.0.1:3040/ after pnpm start",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Run task",
        "source": "Open **http://127.0.0.1:3040**. Enter a goal and press **Run task**.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "pnpm check runs tests, lint, typecheck, formatting and production build",
        "command": "pnpm check",
        "evidence": "coldpass/workspace\n> eslint .\n\n\n> mobile-jev@0.1.0 typecheck <guest-path>\n> pnpm --filter @jev-mobile/studio typecheck\n\n\n> @jev-mobile/studio@0.1.0 typecheck <guest-path>\n> next typegen && tsc --noEmit\n\nGenerating route types...\n\u2713 Types generated successfully\n\n> mobile-jev@0.1.0 format <guest-path>\n> prettier . --check\n\nChecking formatting...\n\u2009ELIFECYCLE\u2009 Command failed with exit code 1.\n\u2009ELIFECYCLE\u2009 Command failed with exit code 1.\n[warn] .coldpass/observed.json\n[warn] Code style issues found in the above file. Run Prettier with --write to fix.",
        "expected": "formatting check and Next.js production build succeed",
        "input": "pnpm check",
        "kind": "claim",
        "outcome": "Probe stopped at a missing prerequisite: coldpass/workspace\n> eslint .\n\n\n> mobile-jev@0.1.0 typecheck <guest-path>\n> pnpm --filter @jev-mobile/studio typecheck\n\n\n> @jev-mobile/studio@0.1.0 typecheck <guest-path>\n> next typegen && tsc --noEmit\n\nGenerating route types...\n\u2713 Types generated successfully\n\n> mobile-jev@0.1.0 format <guest-path>\n> prettier . --check\n\nChecking formatting...\n\u2009ELIFECYCLE\u2009 Command failed with exit code 1.\n\u2009ELIFECYCLE\u2009 Command failed with exit code 1.\n[warn] .coldpass/observed.json\n[warn] Code style issues found in the above file. Run Prettier with --write to fix.",
        "returncode": 1,
        "source": "tests, lint, typecheck, formatting, production build",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "blocked"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: scripts/run.mjs, scripts/mobile-agent/cli.mjs, scripts/demo.mjs, apps/jev-studio/app/api/studio/[...path]/route.ts. The only timers are a UI clock (use-studio.ts setInterval) and an SSE heartbeat (route.ts setInterval). No cron, scheduler, --once/--now, or webhook. The agent loop runs only when a user invokes pnpm agent run --execute, and it needs live credentials.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: scripts/run.mjs, scripts/mobile-agent/cli.mjs, scripts/demo.mjs, apps/jev-studio/app/api/studio/[...path]/route.ts. The only timers are a UI clock (use-studio.ts setInterval) and an SSE heartbeat (route.ts setInterval). No cron, scheduler, --once/--now, or webhook. The agent loop runs only when a user invokes pnpm agent run --execute, and it needs live credentials.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "pnpm",
        "start"
      ],
      "bytes": 17877,
      "kind": "http",
      "response_checked": true,
      "response_excerpt": "Run task<span class=\"shortcut\">\u2318 \u21b5</span></button></div></div><div class=\"suggestions\"><span>A place to start</span><div><button><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-smartphone\" aria-hidden=\"true\"><rect width=\"14\" height=\"20\" x=\"5\" y=\"2\" rx=\"2\" ry=\"2\"></rect><path d=\"M12 18h.01\"></path></svg>Find Android version<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"11\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strok",
      "scope": "product operation",
      "status": 200,
      "url": "http://127.0.0.1:3040/",
      "working": false
    },
    "evidence_strength": "partly_checked",
    "example_checks": [
      {
        "claim": "Development: run the offline test suite",
        "command": "pnpm test",
        "deferred": false,
        "evidence": "n wait (1.14292ms)\n\u2714 transitional snapshots without a foreground app are polled before another model call (60.873548ms)\n\u2714 execution is logged before a failing post-action observation (1.061345ms)\n\u2714 stale decisions re-observe and re-predict; uncertain mutations never retry (1.388905ms)\n\u2714 model transport reuses connections, preserves JSON, measures timing, and never retries failures (59.472379ms)\n\u2714 metrics aggregate by endpoint, include failures, and exclude payloads and credentials (0.943217ms)\n\u2139 tests 55\n\u2139 suites 0\n\u2139 pass 55\n\u2139 fail 0\n\u2139 cancelled 0\n\u2139 skipped 0\n\u2139 todo 0\n\u2139 duration_ms 3474.548684",
        "expected": "55 tests pass, 0 fail",
        "input": "pnpm test",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Development (pnpm check)",
        "verdict": "yes"
      },
      {
        "claim": "Run it: list devices before setting MOBILERUN_DEVICE_ID",
        "command": "",
        "deferred": false,
        "evidence": "Requires MOBILERUN_API_KEY and a ready Mobilerun Android device; neither is available in this guest. Ran instead: pnpm agent devices, which failed with 'A valid API key is required.' (exit 1).",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Requires MOBILERUN_API_KEY and a ready Mobilerun Android device; neither is available in this guest. Ran instead: pnpm agent devices, which failed with 'A valid API key is required.' (exit 1).",
        "source": "README.md Run it (pnpm devices)",
        "verdict": "blocked"
      },
      {
        "claim": "Preview the next agent decision for a goal",
        "command": "",
        "deferred": false,
        "evidence": "Requires MOBILERUN_API_KEY, TYPESAFE_API_KEY and a ready device; no credentials are available in this guest, so no live model or device request was made.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Requires MOBILERUN_API_KEY, TYPESAFE_API_KEY and a ready device; no credentials are available in this guest, so no live model or device request was made.",
        "source": "README.md Use the CLI (pnpm agent run)",
        "verdict": "blocked"
      },
      {
        "claim": "Run the dark-theme demo",
        "command": "",
        "deferred": false,
        "evidence": "Requires live Mobilerun and TypeSafe credentials plus an Android device; not run. Deferred on purpose.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Requires live Mobilerun and TypeSafe credentials plus an Android device; not run. Deferred on purpose.",
        "source": "README.md Included demo (pnpm demo dark-theme --reset)",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "README does not give a Node installer; installed Node 24 from the official nodejs.org tarball because the guest had no node.",
    "First corepack call outside the project fetched pnpm 12.15.0; re-ran inside the project so pnpm 10.30.1 from packageManager was used. A 'corepack use' attempt that touched package.json was reverted with git checkout; git status clean.",
    "Live README commands (pnpm devices, pnpm doctor, pnpm agent run/observe/screenshot/profile, pnpm demo dark-theme --reset) were not run: they need MOBILERUN_API_KEY, TYPESAFE_API_KEY and a ready Mobilerun device, none supplied. Recorded as blocked examples.",
    "The checker writes .coldpass/observed.json; Prettier (run by pnpm check, format step) then flags it, which made pnpm check fail during replay. Removed the stale checker-generated file before the final validation run. Also ran prettier --write on this run's .coldpass/*.json files so they pass the repo format check.",
    "First claim used 'pnpm test' as the operation; the checker rejected it as a unit suite, so the claim was changed to the studio HTTP endpoint."
  ],
  "fault_owner": "prerequisite",
  "main_blocker": "No Mobilerun or TypeSafe API keys and no ready Android device are available in this disposable guest.",
  "operation": "Install and build the Mobile Jev studio from the README, verify the offline test/lint/typecheck/format/build suite, and start the local studio UI (pnpm start, http://127.0.0.1:3040). The headline operation (driving a real Android phone through Mobilerun and TypeSafe) was not exercised.",
  "operation_scope": "Offline: Linux Ubuntu 24.04 guest, Node 24.22.1, pnpm 10.30.1, no API keys, no Android device. Verified: pnpm install --frozen-lockfile, pnpm check (55 offline tests pass, lint, typecheck, prettier, production build), pnpm start serving the studio page with 'Run task'. Not verified: any live Mobilerun device operation, any TypeSafe model call, pnpm demo.",
  "outcome": "unverified",
  "plain_failure": "The app builds, passes its offline tests, and its web studio starts and loads. It cannot control a phone or run a task, because that needs a Mobilerun account key, a TypeSafe key, and a connected Android device, which this test machine does not have.",
  "steps": [
    "git init; git remote add origin https://github.com/droidrun/mobile-jev; git fetch --depth 1 origin 395fc222beac4f059f9a0beb337d114a2b066e99; git reset --mixed FETCH_HEAD",
    "Installed Node 24.22.1 (linux-x64 tarball from nodejs.org, sha256 verified against SHASUMS256.txt) into /tmp/node24",
    "corepack enable (with /tmp/node24/bin on PATH); pnpm 10.30.1 from packageManager field",
    "pnpm install --frozen-lockfile",
    "cp .env.example .env.local (no keys filled in)",
    "pnpm check (runs pnpm test, lint, typecheck, format, build) -> exit 0",
    "pnpm test -> 55 pass, 0 fail",
    "pnpm start -> studio on http://127.0.0.1:3040 returns the 'Run task' page (HTTP 200)",
    "pnpm agent devices -> fails with 'A valid API key is required.' (no MOBILERUN_API_KEY): documented credential-error check",
    "Stopped the studio server after probing; port 3040 confirmed free"
  ],
  "stuck_step": "pnpm devices / live agent and demo commands: need MOBILERUN_API_KEY, TYPESAFE_API_KEY and an Android device",
  "suggested_fix": "Re-run with MOBILERUN_API_KEY, TYPESAFE_API_KEY and MOBILERUN_DEVICE_ID set in .env.local (or exported): pnpm doctor, then pnpm agent run with --execute and pnpm demo dark-theme --reset. Separately, the repo's format check should exclude generated checker output (or the harness should write observed.json outside the repo) so pnpm check does not fail on it."
}
