{
  "checker": {
    "claims": [
      {
        "claim": "inspect a PySpark dataframe query plan",
        "command": "<guest-path> .coldpass/operation.py",
        "evidence": "Probe runs agent-written code rather than a documented product command.",
        "expected": "parsed plan containing Project",
        "input": "Spark dataframe with a+b column, matching Basic Usage",
        "kind": "claim",
        "outcome": "Probe runs agent-written code rather than a documented product command.",
        "source": "It converts analyzed Catalyst plans into Python data structures that can be queried programmatically.",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "blocked"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README, pyproject.toml, and package entry points; the library exposes inspect_dataframe and has no scheduling, loop, webhook, or cycle behavior.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README, pyproject.toml, and package entry points; the library exposes inspect_dataframe and has no scheduling, loop, webhook, or cycle behavior.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        ".venv/bin/spark-submit",
        "--master",
        "local[1]",
        "--conf",
        "spark.ui.enabled=false",
        "--conf",
        "spark.driver.extraJavaOptions=-XX:ActiveProcessorCount=2",
        ".coldpass/operation.py"
      ],
      "blocker": "product invocation failed: {\"argv\": [\".venv/bin/spark-submit\", \"--master\", \"local[1]\", \"--conf\", \"spark.ui.enabled=false\", \"--conf\", \"spark.driver.extraJavaOptions=-XX:ActiveProcessorCount=2\", \".coldpass/operation.py\"], \"returncode\": 127, \"stdout\": \"\", \"stderr\": \"Traceback (most recent call last):\\n  File \\\"<guest-path>\\\", line 95, in <module>\\n    print(_find_spark_home())\\n          ^^^^^^^^^^^^^^^^^^\\n  File \\\"<guest-path>\\\", line 59, in _find_spark_home\\n    module_home = os.path.dirname(find_spec(\\\"pyspark\\\").origin)\\n                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^\\nAttributeError: 'NoneType' object has no attribute 'origin'\\n.venv/bin/spark-submit: line 27: /bin/spark-class: No such file or directory\\n\", \"needs_credentials\": false, \"needs_browser\": false}",
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 127,
      "stderr": "Traceback (most recent call last):\n  File \"<guest-path>\", line 95, in <module>\n    print(_find_spark_home())\n          ^^^^^^^^^^^^^^^^^^\n  File \"<guest-path>\", line 59, in _find_spark_home\n    module_home = os.path.dirname(find_spec(\"pyspark\").origin)\n                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'origin'\n.venv/bin/spark-submit: line 27: /bin/spark-class: No such file or directory",
      "stdout": "",
      "working": false
    },
    "evidence_strength": "partly_checked",
    "example_checks": [
      {
        "claim": "README Basic Usage dataframe inspection",
        "command": "<guest-path> .coldpass/operation.py",
        "deferred": false,
        "evidence": "s/workspace/pyspark_inspect/api.py\", line 9, in inspect_dataframe\n    return parse_plan(load_catalyst_plan(get_dataframe_plan(df)))\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"<guest-path>\", line 246, in parse_plan\n    children = [parse_plan(c) for c in plan.children]\n                ^^^^^^^^^^^^^\n  File \"<guest-path>\", line 249, in parse_plan\n    raise ValueError(f'Unsupported plan: {plan.class_name}')\nValueError: Unsupported plan: org.apache.spark.sql.execution.LogicalRDD",
        "expected": "Parsed Catalyst plan",
        "input": "The README Spark dataframe expression with a+b column",
        "kind": "example",
        "outcome": "command output contains a crash diagnostic",
        "returncode": 1,
        "source": "README.md, Basic Usage",
        "verdict": "no"
      }
    ],
    "status": "FAIL"
  },
  "deviations": [
    "Initial editable install selected PySpark 4.2.1; the sample failed with Unsupported plan: org.apache.spark.sql.execution.LogicalRDD. Repeated with README-tested Spark 3.5.7 and observed the same error."
  ],
  "fault_owner": "repo",
  "main_blocker": "Unsupported plan: org.apache.spark.sql.execution.LogicalRDD",
  "operation": "Inspect a PySpark dataframe query plan using the README Basic Usage example",
  "operation_scope": "Python 3.12.3, PySpark 3.5.7, Java 21; editable install of pyspark-inspect",
  "outcome": "blocked",
  "plain_failure": "The README sample cannot inspect its dataframe: the parser stops with 'Unsupported plan: org.apache.spark.sql.execution.LogicalRDD' under both PySpark 4.2.1 and the documented tested Spark 3.5.7.",
  "steps": [
    "python3 -m venv .venv",
    ".venv/bin/python -m pip install -e .",
    "sudo -n apt-get -o DPkg::Lock::Timeout=300 update",
    "sudo -n apt-get -o DPkg::Lock::Timeout=300 install -y default-jre-headless",
    ".venv/bin/python -m pip install pyspark==3.5.7",
    "JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 JAVA_TOOL_OPTIONS='-XX:ActiveProcessorCount=2' .venv/bin/python .coldpass/operation.py"
  ],
  "stuck_step": "The documented Spark dataframe example calls inspect_dataframe, whose parser rejects the LogicalRDD created by spark.createDataFrame.",
  "suggested_fix": "Add parser support for Spark's LogicalRDD nodes, then rerun the README dataframe example on Spark 3.5."
}
