#![cfg(all(feature = "std", feature = "paper_lock"))]
use std::path::PathBuf;
use dsfb_robotics::datasets::DatasetId;
use dsfb_robotics::paper_lock::{run_real_data_with_csv_path, serialize_report};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let candidates = [
PathBuf::from("data/processed/panda_gaz_published.csv"),
PathBuf::from("data/processed/panda_gaz.csv"),
PathBuf::from("crates/dsfb-robotics/data/processed/panda_gaz_published.csv"),
PathBuf::from("crates/dsfb-robotics/data/processed/panda_gaz.csv"),
];
let csv = candidates
.into_iter()
.find(|p| p.is_file())
.unwrap_or_else(|| PathBuf::from("data/processed/panda_gaz.csv"));
if !csv.is_file() {
eprintln!(
"skipping: residual CSV not found at {} (run \
python3 scripts/preprocess_datasets.py first)",
csv.display()
);
return Ok(());
}
let report = match run_real_data_with_csv_path(DatasetId::PandaGaz, false, &csv) {
Ok(r) => r,
Err(e) => {
eprintln!("paper-lock: {} ({})", e.dataset.slug(), e.instructions);
return Ok(());
}
};
let json = serialize_report(&report)?;
print!("{json}");
Ok(())
}