Rules
Rules are deterministic check functions grouped by validation area. Each rule returns Issue objects with severity, check name, message, optional file, optional row, and metadata.
Files
| Rule |
Severity |
Purpose |
check_required_files |
error |
Require metadata.json and calibration.json |
check_empty_files |
error |
Report empty CSV files |
check_missing_sensor_files |
error |
Ensure declared sensors have matching sensors/<name>.csv files |
check_broken_paths |
error |
Ensure CSV path references exist |
check_duplicate_filenames |
warning |
Report duplicate filenames in the dataset tree |
| Rule |
Severity |
Purpose |
check_metadata_schema |
error |
Validate metadata.json shape |
check_declared_sensors_exist |
error |
Ensure declared sensors are loaded |
check_duration_matches_timestamps |
warning |
Compare metadata duration to observed sensor timestamp span |
check_dataset_version_present |
warning |
Require a non-empty version string |
Timestamps
| Rule |
Severity |
Purpose |
check_monotonic_timestamps |
error |
Require monotonically increasing timestamps |
check_duplicate_timestamps |
warning |
Report duplicate timestamps |
check_large_timestamp_gaps |
warning |
Report gaps above timestamp_gap_threshold_sec |
When timestamp checks and sync checks run together, DatasetLint deduplicates overlapping burst-gap findings.
Sensors
| Rule |
Severity |
Purpose |
check_sensor_columns |
error |
Require sensor-specific columns |
check_sensor_dimensions |
error |
Validate camera width and height |
check_sensor_frequency |
warning |
Compare observed rate to expected_sensor_rates |
check_missing_frames |
warning |
Detect likely missing frames from timestamp gaps |
Column expectations:
- camera:
timestamp, path, width, height
- IMU:
timestamp, ax, ay, az, gx, gy, gz
- GPS:
timestamp, lat, lon, alt
- other sensors:
timestamp
Camera CSVs may use filename as a compatibility alias when path is absent.
Synchronization
| Rule |
Severity |
Purpose |
check_sensor_time_overlap |
error or warning |
Require overlapping sensor timestamp ranges and warn on low overlap ratio |
check_timestamp_offset |
warning |
Report stream start offsets above max_pairwise_sync_gap_sec |
check_pairwise_sync_gap |
warning |
Report pairwise median sync gaps above threshold |
check_missing_frame_bursts |
warning |
Report burst-sized timestamp gaps |
check_frequency_stability |
warning |
Report frame interval jitter above frequency_jitter_ratio |
Calibration
| Rule |
Severity |
Purpose |
check_calibration_exists |
error |
Require calibration entries for declared sensors |
check_intrinsics_shape |
error |
Require camera intrinsics to be 3x3 |
check_intrinsics_values |
error |
Require finite positive focal lengths |
check_extrinsics_shape |
error |
Require translation[3] and rotation_quat[4] |
check_quaternion_norm |
error |
Require normalized quaternions |
Labels
| Rule |
Severity |
Purpose |
check_label_columns |
error |
Require detection label columns |
check_label_confidence_range |
error |
Require confidence in [0, 1] |
check_label_geometry |
error |
Require positive width and height |
check_label_timestamps_match_sensor_range |
error |
Require labels inside observed sensor time range |
check_track_id_consistency |
warning |
Report track class switches above threshold |
check_label_bbox_jumps |
warning |
Report large bounding box center jumps |
check_label_missing_timestamps |
warning |
Report likely missing labels inside a track |
check_duplicate_track_id_timestamp |
error |
Report duplicate track_id at the same timestamp |
check_short_tracks |
warning |
Report tracks shorter than label_min_track_length |
check_label_size_changes |
warning |
Report abrupt bounding box size changes |
Detection labels require:
timestamp, track_id, class, x, y, width, height, confidence
Trajectories
| Rule |
Severity |
Purpose |
check_trajectory_columns |
error |
Require trajectory columns |
check_trajectory_finite_values |
error |
Require finite numeric values |
check_unrealistic_speed |
warning |
Report speeds above max_speed_mps |
check_unrealistic_acceleration |
warning |
Report acceleration above max_accel_mps2 |
check_yaw_range |
warning |
Require yaw in [-pi, pi] |
check_stationary_dataset |
warning |
Report nearly stationary trajectories |
Trajectory CSVs require:
timestamp, x, y, yaw, vx, vy
Configuration
Thresholds, per-rule enable/disable, and per-rule severity overrides are documented in Configuration. issue_regression_severity is separate and applies to diff regression classification.