{
  "ticket": "U86 #123",
  "generatedAt": "2026-10-28T19:33:51.299166+08:00",
  "startedAt": "2026-10-28T19:33:09.012725+08:00",
  "runId": "1933099692",
  "input": "python3 labs/data-engine/run.py",
  "environment": {
    "os": "macOS-27.2-arm64-arm-64bit",
    "arch": "arm64",
    "jdk": "openjdk version \"21.0.11\" 2026-04-21 LTS",
    "mysql": "8.4.7",
    "spark": "/___/ .__/\\_,_/_/ /_/\\_\\   version 4.0.1",
    "sparkTarSha512Prefix": "9198602c6b931b46",
    "sparkTarState": "cached",
    "jupyter": "8.6.3 6.31.0",
    "externalServices": "MySQL 127.0.0.1:3306 独有库 study_u86_1933099692；Spark local[2] 本机；无 HDFS/YARN/集群"
  },
  "scenarios": [
    {
      "name": "spark-success-closed-loop",
      "startedAt": "2026-10-28T19:33:10.087262+08:00",
      "finishedAt": "2026-10-28T19:33:15.190690+08:00",
      "observed": [
        "U86 sparkOk exit=0 meta=SUCCESS result=success-payload rows=3 distinct=2"
      ]
    },
    {
      "name": "meta-success-result-missing",
      "startedAt": "2026-10-28T19:33:15.190756+08:00",
      "finishedAt": "2026-10-28T19:33:19.675867+08:00",
      "observed": [
        "U86 metaResultMissing exit=0 meta=SUCCESS resultRows=0",
        "U86 metaResultMissing conclusion=调度侧只看元表会误判成功；结果表才是权威产物"
      ]
    },
    {
      "name": "failed-but-meta-success",
      "startedAt": "2026-10-28T19:33:19.675932+08:00",
      "finishedAt": "2026-10-28T19:33:23.986821+08:00",
      "observed": [
        "U86 failedMeta exit=1 metaDuringRun=SUCCESS resultRows=0 metaAfterReconcile=FAILED",
        "U86 failedMeta conclusion=先写成功再执行会把失败伪装成成功；对账以进程退出码与结果存在性为准"
      ]
    },
    {
      "name": "spark-eventlog-states",
      "startedAt": "2026-10-28T19:33:23.986871+08:00",
      "finishedAt": "2026-10-28T19:33:29.832781+08:00",
      "observed": [
        "U86 sparkEventLog exit=0 file=events_1_local-1793187205118.zstd events=43",
        "U86 sparkEventLog jobs=4 jobResults=['JobSucceeded']",
        "U86 sparkEventLog stages=4 stageStates=['COMPLETED']",
        "U86 sparkEventLog tasks=5 taskStatuses=['SUCCESS']",
        "U86 sparkEventLog appEnd=True sqlEvents=1"
      ]
    },
    {
      "name": "kernel-lifecycle",
      "startedAt": "2026-10-28T19:33:29.832823+08:00",
      "finishedAt": "2026-10-28T19:33:33.548095+08:00",
      "observed": [
        "U86 kernelLifecycle kernel_pid_alive=True",
        "U86 kernelLifecycle exec_result=42",
        "U86 kernelLifecycle exec_status=ok",
        "U86 kernelLifecycle interrupt_status=error",
        "U86 kernelLifecycle interrupt_seconds=0.1",
        "U86 kernelLifecycle state_kept=True",
        "U86 kernelLifecycle state_stdout=kept",
        "U86 kernelLifecycle kernel_exitcode_after_shutdown=0"
      ]
    },
    {
      "name": "kernel-crash-state-lost",
      "startedAt": "2026-10-28T19:33:33.548146+08:00",
      "finishedAt": "2026-10-28T19:33:51.210215+08:00",
      "observed": [
        "U86 kernelCrash last_result=42",
        "U86 kernelCrash exit_after_kill=-9",
        "U86 kernelCrash is_alive_after_kill=False",
        "U86 kernelCrash session_record_still_says_success=True",
        "U86 kernelCrash session_record_cell_result=42",
        "U86 kernelCrash new_exec_status=error: Empty"
      ]
    }
  ],
  "observed": [
    "U86 preflight db=study_u86_1933099692 spark=/___/ .__/\\_,_/_/ /_/\\_\\   version 4.0.1 jupyter=8.6.3 6.31.0",
    "U86 scenarios completed"
  ],
  "exitCode": 0,
  "failure": null,
  "errors": [],
  "rawLogs": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u86/runtime/run-1933099692",
  "cleanup": {
    "processesSurviving": [],
    "databaseDropped": true,
    "dropError": null,
    "orphanDatabasesDropped": [],
    "labDatabasesRemaining": [],
    "runtimeDir": "/Users/gaochao/.cache/software-engineering-study/java-depth-impl/u86/runtime/run-1933099692"
  },
  "runnerSha256": "ed340043e10f1c8eaa9c7540c43718006bcc46386fba7e053382c81af09adf28",
  "limits": [
    "Spark 以 local[2] 单机模式运行；无 HDFS/YARN/Standalone 集群，集群模式行为不外推。",
    "Flink 与 Hive 未运行：提交/监控差异按固定版本官方文档与源码对照说明，在正文与账本单独标注。",
    "元数据/结果不一致通过本机 MySQL 元表构造：job_meta 模拟调度侧登记，job_results 模拟引擎产物；不是某个生产调度系统的真实 bug 复现。",
    "kernel 崩溃通过 SIGKILL 注入；只覆盖\"进程死→变量丢失\"，不代表 JupyterHub/网关的多用户行为。",
    "PySpark driver 进程经 pymysql 写回 MySQL 元表与结果表，不是 Spark JDBC 数据源写入；pymysql 版本见 environment。",
    "MySQL 为本机 DBngin 8.4.x 独有库，结束 DROP；所有任务数据为合成标签，不含用户数据。"
  ]
}
