{
  "checker": {
    "claims": [
      {
        "claim": "Sync adds the project's existing artifacts to the viewer and exits",
        "command": "uigraph sync <guest-path>",
        "evidence": "1 services \u00b7 0 endpoints \u00b7 0 dependencies \u00b7 2 diagrams\n\u2714 Registered with the viewer (http://127.0.0.1:8447/)\n",
        "expected": "prints the artifact counts of the project",
        "input": "uigraph sync <guest-path>",
        "kind": "claim",
        "outcome": "Real input produced the expected result: 1 services",
        "returncode": 0,
        "source": "Adds the project's existing artifacts to the viewer and exits.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "Lens starts an agent using your own login",
        "command": "",
        "evidence": "Requires a Claude login or ANTHROPIC_API_KEY, which the guest does not have. Ran uigraph lens --base HEAD~1 --target HEAD --agent claude --no-open; the map stage failed with 'Claude authentication failed'. Later stages were skipped.",
        "expected": "",
        "input": "",
        "kind": "claim",
        "outcome": "Requires a Claude login or ANTHROPIC_API_KEY, which the guest does not have. Ran uigraph lens --base HEAD~1 --target HEAD --agent claude --no-open; the map stage failed with 'Claude authentication failed'. Later stages were skipped.",
        "source": "The skill runs inside your agent. Lens starts an agent itself, using your own login for the one you pick:",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "blocked"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README.md and src/*.ts. The viewer runs when started and re-reads files on each page load. No cron, schedule, loop, webhook, --once or --now entry point was found. Only setTimeout helpers in bin.ts and banner.ts exist, and they are not scheduler loops.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README.md and src/*.ts. The viewer runs when started and re-reads files on each page load. No cron, schedule, loop, webhook, --once or --now entry point was found. Only setTimeout helpers in bin.ts and banner.ts exist, and they are not scheduler loops.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "uigraph",
        "start",
        "--port",
        "8447"
      ],
      "bytes": 1907,
      "kind": "http",
      "response_checked": true,
      "response_excerpt": "<title>UIGraph</title>\n    <meta\n      name=\"description\"\n      content=\"A read-only snapshot of a repository's services, APIs, dependencies and architecture diagrams.\"\n    />\n    <meta name=\"application-name\" content=\"UIGraph\" />\n\n    <style>\n      :root {\n        --font-inter: 'Inter', sans-serif;\n        --font-poppins: 'Poppins', sans-serif;\n        --font-fira-code: 'Fira Code', monospace;\n      }\n    </style>\n    <script type=\"module\" crossorigin src=\"/assets/index-hBbAInHC.js\"></script>\n    <link rel=\"modulepreload\" crossorigin href=\"/assets/index-bHLlonN1.js\">\n    <link rel=\"moduleprel",
      "scope": "product operation",
      "status": 200,
      "url": "http://127.0.0.1:8447/",
      "working": false
    },
    "evidence_strength": "partly_checked",
    "example_checks": [
      {
        "claim": "Stop the viewer when it is not running",
        "command": "uigraph stop",
        "deferred": false,
        "evidence": "UIGraph viewer is not running.",
        "expected": "reports the viewer is not running",
        "input": "uigraph stop",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Viewer: start, status, stop, restart",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "Node/npm were not installed in the guest. Installed Node v22.23.4 and npm 10.9.9 from https://nodejs.org/dist/v22.23.4 into /opt/node22 with sudo, and symlinked node, npm and npx into /usr/local/bin.",
    "npm install -g needed sudo because the npm global prefix is root-owned under /opt/node22. Ran `sudo -E env PATH=$PATH npm install -g uigraph@latest`, which installed uigraph 1.0.6 from npm. The first sudo npm run left root-owned files in <guest-path>, fixed with `sudo chown -R 1000:1000 <guest-path>",
    "The product was installed from the npm registry, not built from the pinned checkout, because the README installs the published package.",
    "Git metadata set up as the task specifies: git init, git remote add origin https://github.com/uigraph-oss/uigraph, git fetch --depth 1 origin c95782f2a532c141dc8097156bcd53f56fe98843, git reset --mixed FETCH_HEAD. Then ran git fetch --deepen=1 origin so that HEAD~1 exists for the Lens branch review.",
    "Probe URL: the checker follows the URL the server announces in its log (http://127.0.0.1:8447/), so the probe reads the viewer root page and checks its <title>UIGraph</title>. The project list endpoint /api/projects was checked by hand and returned the workspace root and service UIGraph, but the checker does not fetch it.",
    "Lens branch review failed. The map stage reported 'Claude authentication failed. Sign in with the `claude` CLI ... or set ANTHROPIC_API_KEY'. Later stages were skipped. The run was saved under ~/.uigraph/lens/runs. No Claude login or API key was available, so Lens was not verified.",
    "The first checker validate attempt failed because the probe URL was /api/projects; fixed by changing the probe to the root URL and the expected <title>UIGraph</title>. The final validate run passed.",
    "Installer prompts: none appeared for uigraph; telemetry prompts were not seen. No browser was opened (--no-open)."
  ],
  "fault_owner": null,
  "main_blocker": "The saved checks do not fully confirm documented product behavior.",
  "operation": "Run the UIGraph local viewer for a project, show its existing artifacts, and read them back over HTTP",
  "operation_scope": "Node.js 20+ and the published uigraph@1.0.6 package from npm, run in the pinned uigraph checkout (c95782f). Covers the viewer (uigraph, uigraph start, uigraph stop), uigraph sync, and the viewer's project list. Not covered: the Lens PR review and the /uigraph skill's artifact generation, which need a Claude login or ANTHROPIC_API_KEY that this guest does not have.",
  "outcome": "unverified",
  "plain_failure": null,
  "steps": [
    "Install Node 22.23.4 from nodejs.org tarball (README requires Node 20 or later)",
    "npm install -g uigraph@latest (README Install section)",
    "uigraph --no-open (run in the project; starts the viewer in the background)",
    "uigraph status",
    "uigraph sync <guest-path>",
    "uigraph start --port 8447 (foreground viewer; probed with HTTP GET http://127.0.0.1:8447/)",
    "uigraph stop",
    "uigraph lens --base HEAD~1 --target HEAD --agent claude --no-open (blocked: needs Claude login)"
  ],
  "stuck_step": "uigraph start --port 8447",
  "suggested_fix": "None for the viewer. To verify Lens, provide a Claude login (run claude /login) or ANTHROPIC_API_KEY in the guest and re-run uigraph lens."
}
