{
  "checker": {
    "claims": [
      {
        "claim": "Examples run from a source checkout with the checkout's idl_parser and print the parsed union types",
        "command": "python3 examples/union_example.py",
        "evidence": "unions in module shapes: ['Shape', 'Value', 'Reading', 'OptionalDouble']\n\nunion shapes::Shape switch (ShapeKind)\n  case CIRCLE -> radius: primitive double\n  case RECTANGLE -> rect: struct shapes::Rect (members: top_left, width, height)\n  case POLYGON -> vertices: typedef shapes::PointSeq = sequence of Point2D\n  case POINT -> point: struct shapes::Point2D (members: x, y)\n\nunion shapes::Value switch (long)\n  case -1, 0 -> error_message: primitive string\n  case 1 -> integer_value: primitive long long\n  case 2 -> matrix: array double [3][3]\n  default -> raw_points: typedef shapes::PointSeq = seque",
        "expected": "prints unions in module shapes",
        "input": "examples/union_example.py",
        "kind": "claim",
        "outcome": "Real input produced the expected result: unions in module shapes",
        "returncode": 0,
        "source": "Run them with e.g. `python examples/union_example.py` (in a source checkout no install is needed).",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "example.py is the smallest example: it parses a module and an interface",
        "command": "python3 examples/example.py",
        "evidence": "interface my_module::Calculator\n  long add(in long a, in long b)\n  void reset()\n  boolean divide(in double a, in double b, out double result)\n",
        "expected": "prints interface my_module::Calculator",
        "input": "examples/example.py",
        "kind": "claim",
        "outcome": "Real input produced the expected result: interface my_module::Calculator",
        "returncode": 0,
        "source": "| [`example.py`](examples/example.py) | the smallest example: a module and an interface |",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README.md, pyproject.toml, docs/, examples/ and idl_parser/ sources. idl_parser is a parsing library with no cron, scheduler, loop-driven service, webhook, or --once/--now entry point; the only while True loops are parser iteration in enum.py, interface.py, struct.py, valuetype.py and definitions.py.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README.md, pyproject.toml, docs/, examples/ and idl_parser/ sources. idl_parser is a parsing library with no cron, scheduler, loop-driven service, webhook, or --once/--now entry point; the only while True loops are parser iteration in enum.py, interface.py, struct.py, valuetype.py and definitions.py.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "python3",
        "examples/union_example.py"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "unions in module shapes: ['Shape', 'Value', 'Reading', 'OptionalDouble']\n\nunion shapes::Shape switch (ShapeKind)\n  case CIRCLE -> radius: primitive double\n  case RECTANGLE -> rect: struct shapes::Rect (members: top_left, width, height)\n  case POLYGON -> vertices: typedef shapes::PointSeq = sequence of Point2D\n  case POINT -> point: struct shapes::Point2D (members: x, y)\n\nunion shapes::Value switch (long)\n  case -1, 0 -> error_message: primitive string\n  case 1 -> integer_value: primitive long long\n  case 2 -> matrix: array double [3][3]\n[excerpt truncated]",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Run the smallest documented example from a source checkout",
        "command": "python3 examples/example.py",
        "deferred": false,
        "evidence": "interface my_module::Calculator\n  long add(in long a, in long b)\n  void reset()\n  boolean divide(in double a, in double b, out double result)",
        "expected": "interface my_module::Calculator printed",
        "input": "examples/example.py",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md / examples/example.py",
        "verdict": "yes"
      },
      {
        "claim": "Run the struct example from the README examples table",
        "command": "python3 examples/struct_example.py",
        "deferred": false,
        "evidence": "structs in my_module: ['Time', 'Pose', 'Odometry']\n\nstruct my_module::Time\n  sec          long\n  nsec         long\n\nstruct my_module::Pose\n  position     array double [3]\n  orientation  array double [4]\n\nstruct my_module::Odometry\n  stamp        struct my_module::Time\n  frame_id     string\n  pose         struct my_module::Pose\n  covariance   sequence of double\n\nOdometry.stamp members: [('sec', 'long'), ('nsec', 'long')]",
        "expected": "structs listed for my_module",
        "input": "examples/struct_example.py",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md examples table (struct_example.py)",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "README 'sudo pip install idl_parser' failed under PEP 668 (externally-managed-environment) on the system Python; worked around by installing python3-venv via apt and installing into a venv at <guest-path>",
    "The venv install pulled idl_parser 0.6.1 from PyPI, which is not the pinned commit; the examples were run from the pinned checkout (examples/_path.py prefers the checkout package), so the checkout code is what was exercised.",
    "No CLI or MCP entry point exists, so probe and claims are cli runs of the README's documented example scripts instead of MCP tool calls.",
    "The sphinx docs build and unittest suite from CI were not run as evidence; they are not README commands."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Parse OMG IDL files with idl_parser and print the parsed modules, interfaces, unions and structs via the README's documented example scripts",
  "operation_scope": "Python 3.12.3 on Ubuntu (WSL2). Run from the pinned source checkout (84ddf43391382521e765729858bf704e2c579215) with no install, per README. A PyPI install (idl_parser 0.6.1, in <guest-path>) was also done per the README 'How to install' step. No MCP server, HTTP service or browser is involved.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "git init; git remote add origin https://github.com/sugarsweetrobotics/idl_parser; git fetch --depth 1 origin 84ddf43391382521e765729858bf704e2c579215; git reset --mixed FETCH_HEAD",
    "sudo -n pip install idl_parser (README 'How to install') -> blocked by PEP 668 externally-managed-environment error on Ubuntu 24.04",
    "sudo -n apt-get -o DPkg::Lock::Timeout=300 install -y python3-venv; python3 -m venv <guest-path>; <guest-path> install idl_parser",
    "python3 examples/example.py",
    "python3 examples/union_example.py",
    "python3 examples/struct_example.py"
  ],
  "stuck_step": null,
  "suggested_fix": "Make the README install step work on PEP 668 systems (e.g. document a venv or pipx install), and document that examples are run from a checkout."
}
