{
  "run_id": "donaldrichard19-LVD--pattern-mcp-claude-haiku-5-5-1792972918462330428",
  "checker": {
    "claims": [
      {
        "claim": "register_design_system registers a components folder as the candidate pool",
        "command": "node <guest-path> tools/call {\"tool\": \"register_design_system\", \"arguments\": {\"project_id\": \"pattern-check-app\", \"directory_path\": \"website/components\"}}",
        "evidence": "pattern-check-app\\\",\\\"source_kind\\\":\\\"directory_scan\\\",\\\"source_path\\\":\\\"website/components\\\",\\\"registered_at\\\":\\\"2026-10-26T00:03:39.368Z\\\",\\\"candidate_count\\\":44,\\\"candidates_omitted\\\":44,\\\"candidates_preview\\\":[\\\"AskBeforeBuilding\\\",\\\"AvoidsMistakes\\\",\\\"Close\\\",\\\"Cost\\\",\\\"DesignSource\\\",\\\"Faq\\\",\\\"FounderNote\\\",\\\"Grid\\\",\\\"Guidance\\\",\\\"Hero\\\"],\\\"hint\\\":\\\"Full candidate list omitted to save context; pass include_candidates: true to get it. The registration is stored in full.\\\"},\\\"resolved\\\":{\\\"project_root\\\":\\\"<guest-path>\\\",\\\"design_systems_path\\\":\\\"<guest-path>",
        "expected": "status registered with the project_id echoed back",
        "input": "{\"tool\": \"register_design_system\", \"arguments\": {\"project_id\": \"pattern-check-app\", \"directory_path\": \"website/components\"}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: pattern-check-app",
        "source": "Registers *this project's own* design system as the candidate pool",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Pattern is an stdio MCP server with no daemon or scheduler of its own (src/index.ts:5350: each server invocation is transient and the batch sweep tool is meant to be run by an external cron job or CI step). No --once/--now or loop entry point exists in the README or bin entries, so no product cycle was triggered.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Pattern is an stdio MCP server with no daemon or scheduler of its own (src/index.ts:5350: each server invocation is transient and the batch sweep tool is meant to be run by an external cron job or CI step). No --once/--now or loop entry point exists in the README or bin entries, so no product cycle was triggered.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "node",
        "<guest-path>"
      ],
      "kind": "mcp",
      "scope": "product operation",
      "serverInfo": {
        "name": "pattern-mcp",
        "version": "0.24.1"
      },
      "tool_result": {
        "content": [
          {
            "text": "{\"status\":\"registered\",\"registration\":{\"project_id\":\"pattern-check-app\",\"source_kind\":\"directory_scan\",\"source_path\":\"website/components\",\"registered_at\":\"2026-10-26T00:03:39.184Z\",\"candidate_count\":44,\"candidates_omitted\":44,\"candidates_preview\":[\"AskBeforeBuilding\",\"AvoidsMistakes\",\"Close\",\"Cost\",\"DesignSource\",\"Faq\",\"FounderNote\",\"Grid\",\"Guidance\",\"Hero\"],\"hint\":\"Full candidate list omitted to save context; pass include_candidates: true to get it. The registration is stored in full.\"},\"resolved\":{\"project_root\":\"<guest-path>\",\"design_systems_path\":\"<guest-path>\"},\"summaries\":{\"skipped\":\"ANTHROPIC_API_KEY is not set, so no capability summaries were written (nothing was sent anywhere).\"}}",
            "type": "text"
          }
        ]
      },
      "tool_result_checked": true,
      "tool_schema_bytes": 19711,
      "tools": [
        "recommend_component",
        "extract_requirements",
        "record_component_decision",
        "verify_component",
        "register_design_system"
      ],
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "offline ledger boundary check from the Ledger integrity section",
        "command": "node scripts/verify-ledger-boundary.mjs",
        "deferred": false,
        "evidence": " from the verified scoring_fetch, not the raw Mobbin reference\n  ok: coverage_pct parsed correctly from the coverage string\n  ok: serialized output contains no raw HTML blob\n  ok: serialized output contains no evidence text\n  ok: serialized output is small (< 500 bytes)\n2. distillCandidate returns null for a custom_build verdict (no existing candidate)\n  ok: returned null\n3. assertDistilledCandidateShape rejects a raw (non-distilled) object\n  ok: threw on an object with a disallowed key\n4. assertDistilledCandidateShape accepts a properly distilled object\n  ok: did not throw\n\nAll checks passed.",
        "expected": "All checks passed.",
        "input": "none",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Ledger integrity and decision provenance section",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
