{
  "report_type": "ryedore.benchmark.v1",
  "generated_utc": "2026-08-10T13:39:02Z",
  "source_results": "/tmp/cls_bakeoff/results.json",
  "environment": {
    "python": "3.11.15",
    "platform": "Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.35",
    "numpy": "1.26.4",
    "tensorflow": "2.20.0",
    "torch": "2.5.1+cu124",
    "xgboost": "3.2.0",
    "code_ref": "no_git"
  },
  "benchmark": {
    "benchmark": "hydraulic_condition_classification",
    "dataset": "UCI Hydraulic Systems condition monitoring (ZeMA, CC-BY) \u2014 multivariate time-series, 2205 cycles, eight 1 Hz sensors",
    "question": "On a real industrial TIME-SERIES classification task, how does Ryedore's temporal deep model stand against the classical ML (XGBoost / RandomForest) a customer would otherwise use?",
    "targets": [
      "cooler",
      "valve",
      "pump_leak",
      "accumulator"
    ],
    "metric_note": "macro-F1 is the honest headline under class imbalance; accuracy also reported.",
    "setup": {
      "sensors": [
        "TS1",
        "TS2",
        "TS3",
        "TS4",
        "VS1",
        "SE",
        "CE",
        "CP"
      ],
      "seq": "(60,8) raw 1 Hz",
      "split": "stratified 0.25 test",
      "classical_features": "per-cycle mean/std/min/max/last per channel (40)",
      "seeds": [
        42,
        43,
        44
      ],
      "device": "cpu"
    },
    "isolation": {
      "writes": "scratch only (/tmp/claude-1000/-mnt-c-Users-sysadmin-OneDrive-Desktop-work-AI-AI-AMCi-backend/99817c0c-28ca-4dfc-bca2-7a376b0fa050/scratchpad/cls_bakeoff)",
      "production_outputs_touched": false,
      "db_writes": false
    },
    "results": {
      "cooler:RandomForest": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 1.0, \"macro_f1\": 1.0}"
      },
      "cooler:XGBoost": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 1.0, \"macro_f1\": 1.0}"
      },
      "cooler:Ryedore temporal CNN (3-seed mean)": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 1.0, \"accuracy_std\": 0.0, \"macro_f1\": 1.0, \"macro_f1_std\": 0.0}"
      },
      "cooler:Ryedore family-bakeoff (val-selected)": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"winner\": \"RandomForest\", \"val_macro_f1\": 0.997, \"macro_f1\": 1.0, \"accuracy\": 1.0}"
      },
      "valve:RandomForest": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 0.8877, \"macro_f1\": 0.871}"
      },
      "valve:XGBoost": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 0.8587, \"macro_f1\": 0.8392}"
      },
      "valve:Ryedore temporal CNN (3-seed mean)": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 0.7953, \"accuracy_std\": 0.0026, \"macro_f1\": 0.707, \"macro_f1_std\": 0.0135}"
      },
      "valve:Ryedore family-bakeoff (val-selected)": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"winner\": \"RandomForest\", \"val_macro_f1\": 0.8545, \"macro_f1\": 0.871, \"accuracy\": 0.8877}"
      },
      "pump_leak:RandomForest": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 0.9946, \"macro_f1\": 0.9927}"
      },
      "pump_leak:XGBoost": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 0.9855, \"macro_f1\": 0.9799}"
      },
      "pump_leak:Ryedore temporal CNN (3-seed mean)": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 0.9879, \"accuracy_std\": 0.0023, \"macro_f1\": 0.9819, \"macro_f1_std\": 0.0034}"
      },
      "pump_leak:Ryedore family-bakeoff (val-selected)": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"winner\": \"RandomForest\", \"val_macro_f1\": 1.0, \"macro_f1\": 0.9927, \"accuracy\": 0.9946}"
      },
      "accumulator:RandomForest": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 0.9511, \"macro_f1\": 0.9452}"
      },
      "accumulator:XGBoost": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 0.9746, \"macro_f1\": 0.9711}"
      },
      "accumulator:Ryedore temporal CNN (3-seed mean)": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"accuracy\": 0.7228, \"accuracy_std\": 0.0185, \"macro_f1\": 0.7013, \"macro_f1_std\": 0.0244}"
      },
      "accumulator:Ryedore family-bakeoff (val-selected)": {
        "rmse": "n/a",
        "score": "n/a",
        "notes": "{\"winner\": \"XGBoost\", \"val_macro_f1\": 0.9519, \"macro_f1\": 0.9711, \"accuracy\": 0.9746}"
      }
    },
    "results_by_target": {
      "cooler": {
        "n_classes": 3,
        "test_n": 552,
        "RandomForest": {
          "accuracy": 1.0,
          "macro_f1": 1.0
        },
        "XGBoost": {
          "accuracy": 1.0,
          "macro_f1": 1.0
        },
        "Ryedore temporal CNN (3-seed mean)": {
          "accuracy": 1.0,
          "accuracy_std": 0.0,
          "macro_f1": 1.0,
          "macro_f1_std": 0.0
        },
        "Ryedore family-bakeoff (val-selected)": {
          "winner": "RandomForest",
          "val_macro_f1": 0.997,
          "macro_f1": 1.0,
          "accuracy": 1.0
        }
      },
      "valve": {
        "n_classes": 4,
        "test_n": 552,
        "RandomForest": {
          "accuracy": 0.8877,
          "macro_f1": 0.871
        },
        "XGBoost": {
          "accuracy": 0.8587,
          "macro_f1": 0.8392
        },
        "Ryedore temporal CNN (3-seed mean)": {
          "accuracy": 0.7953,
          "accuracy_std": 0.0026,
          "macro_f1": 0.707,
          "macro_f1_std": 0.0135
        },
        "Ryedore family-bakeoff (val-selected)": {
          "winner": "RandomForest",
          "val_macro_f1": 0.8545,
          "macro_f1": 0.871,
          "accuracy": 0.8877
        }
      },
      "pump_leak": {
        "n_classes": 3,
        "test_n": 552,
        "RandomForest": {
          "accuracy": 0.9946,
          "macro_f1": 0.9927
        },
        "XGBoost": {
          "accuracy": 0.9855,
          "macro_f1": 0.9799
        },
        "Ryedore temporal CNN (3-seed mean)": {
          "accuracy": 0.9879,
          "accuracy_std": 0.0023,
          "macro_f1": 0.9819,
          "macro_f1_std": 0.0034
        },
        "Ryedore family-bakeoff (val-selected)": {
          "winner": "RandomForest",
          "val_macro_f1": 1.0,
          "macro_f1": 0.9927,
          "accuracy": 0.9946
        }
      },
      "accumulator": {
        "n_classes": 4,
        "test_n": 552,
        "RandomForest": {
          "accuracy": 0.9511,
          "macro_f1": 0.9452
        },
        "XGBoost": {
          "accuracy": 0.9746,
          "macro_f1": 0.9711
        },
        "Ryedore temporal CNN (3-seed mean)": {
          "accuracy": 0.7228,
          "accuracy_std": 0.0185,
          "macro_f1": 0.7013,
          "macro_f1_std": 0.0244
        },
        "Ryedore family-bakeoff (val-selected)": {
          "winner": "XGBoost",
          "val_macro_f1": 0.9519,
          "macro_f1": 0.9711,
          "accuracy": 0.9746
        }
      }
    },
    "overall_macro_f1_mean_across_targets": {
      "RandomForest": 0.9522,
      "XGBoost": 0.9475,
      "Ryedore temporal CNN (3-seed mean)": 0.8476,
      "Ryedore family-bakeoff (val-selected)": 0.9587
    }
  },
  "integrity": {
    "sha256": "0c881d6afdf710fe76dbb526d70d4c91c6476adf20fba226cc65ec12fcc5ada4",
    "canonicalization": "json sort_keys, separators (',',':'), integrity block excluded",
    "signature_alg": "RSA-PSS/SHA-256",
    "signature_b64": "iXBSCUQCUNm+SdRaAk2I3m1eOiB0OFN/AHha7x7SYb6rn7gGtoi8sG3lrzdyeEJZBqwF0B4sdIEUjNOz5ayRTHUW8/85G3A8NhV1CUEtXGhVjVnbfbPK6dkwFnMWbcBBJ9afqRp919aiLej0pFnsHwR7kQUtlBrqwD5QFxZuPQKn7DsJPE+6yxW37Qd9p0sNmr0P0nojVGbsTW1HHXKNBkUHwye+VzyHCm5gFvnl7NVkd+C54Yx0R7INo7738mIIyywTW7VIVjp4nDmAYGFydwYOynzJ7VlJVqeOcPcN6lSn4AyNLhl0oZCnwpWsUZ5MUnp5OiRRLBjqSIJf3+7EBA==",
    "public_key_fingerprint_md5": "2bc036d1b625a16a8fe65648450c1031",
    "signed_utc": "2026-08-10T13:39:02Z",
    "verify": "python scripts/benchmark/generate_benchmark_report.py --verify <this file>",
    "note": "Recompute sha256 over the canonical payload (integrity excluded) and verify signature_b64 against storage/superadmin/keys/license_public.pem."
  }
}