{
  "title": "LineStriper AI stall detector: sanitized golden-set evidence",
  "measuredAt": "2026-08",
  "modelVersion": "stall_point_batch15",
  "task": "physical stall-center detection",
  "splitPolicy": "Properties, not tiles, are assigned to train, validation, and golden partitions.",
  "imageryPolicy": "Native-resolution imagery with verified calibration; no fixed one-size resampling.",
  "dataset": {
    "approvedProperties": 73,
    "identifiedItems": 10947,
    "splitPercentByProperty": {
      "training": 52.05,
      "validation": 24.66,
      "golden": 23.29
    },
    "identifiedItemsBySplit": {
      "training": 4368,
      "validation": 2698,
      "golden": 3881
    },
    "goldenProperties": 17,
    "groundTruthStalls": 3881
  },
  "metrics": {
    "precision": 0.9633494528,
    "recall": 0.9752641072,
    "f1": 0.9692701665,
    "meanAbsoluteCountErrorPerProperty": 7.2941176471,
    "visibleRecall": 0.9940306993,
    "occludedOrInferredRecall": 0.7933884298
  },
  "definitions": {
    "precision": "Share of retained predicted stall centers matched to a reviewed physical stall.",
    "recall": "Share of reviewed physical stalls matched by a retained prediction.",
    "f1": "Harmonic mean of precision and recall.",
    "meanAbsoluteCountErrorPerProperty": "Mean absolute difference between predicted and reviewed stall count per golden property.",
    "visibleRecall": "Recall for reviewed stalls marked visible.",
    "occludedOrInferredRecall": "Recall for reviewed stalls marked occluded or inferred."
  },
  "limitations": [
    "These values apply to the stall-point task, not every marking family in the product.",
    "One zero-stall golden property produced 23 false detections.",
    "Occluded or inferred recall is materially lower than visible recall.",
    "Automatic row completion remains review-only.",
    "Resolution-specialist routing remains blocked until all safety gates pass."
  ]
}
