{
  "test": "Test 3.2",
  "ticket": "SAIL-166",
  "experiment": "CLRerNet fine-tune",
  "generated_at": "2026-09-07T14:19:06.119158+00:00",
  "status": "incomplete",
  "product_question": "Does CLRerNet find more faint and bottom sail stripes than our current finder?",
  "bottom_line": "Not measured \u2014 training and scoring are incomplete; no yes/no result or recall delta is available.",
  "beats_both_baselines": null,
  "holdout": {
    "file": "server/inference/test-holdout-ids-canonical.json",
    "frozen": "2026-08-25",
    "count": 332,
    "sha256": "a49d9139d6eac54951c4c3e257770855192a75f8c941799ef4141c49a4c11243",
    "training_overlap": 0
  },
  "gate": {
    "test": "0.8",
    "double_back_percent": 1.28,
    "status": "cleared"
  },
  "dataset": {
    "train_count": 1500,
    "val_count": 150,
    "holdout_overlap": 0,
    "holdout_sha256": "a49d9139d6eac54951c4c3e257770855192a75f8c941799ef4141c49a4c11243",
    "labels_sha256": {
      "server/inference/training-data": "1fa954893f49fdf7f9fc84d1915b0b2d0d582ab5fd88f4fdd4a647ae3d64b94b"
    },
    "exclusions_sha256": "e90e20579b69f0891846bfd2ed22c5c910c0010f182492c701474e47cf5a1784",
    "rejected": {
      "nonmonotone_photo": 43,
      "holdout": 209,
      "rated_bad": 633,
      "upright_aspect_mismatch": 23
    },
    "rotation": "EXIF transpose then clockwise 90; (x,y)->(1-y,x)",
    "image_size": [
      800,
      320
    ],
    "nonmonotone_policy": "reject entire training photo; holdout stays intact",
    "manifest_path": "server/inference/runs/sail166-clrernet/dataset-manifest.json"
  },
  "config": {
    "upstream": "https://github.com/hirotomusiker/CLRerNet",
    "commit": "dae038f67da57e292e5293a68c9c1c2922de13c2",
    "epochs": 15,
    "batch_size": 16,
    "learning_rate": 0.0001,
    "seed": 166,
    "confidence_threshold": 0.41,
    "max_stripes": 8,
    "input_size": [
      800,
      320
    ],
    "rotation": "EXIF-upright then clockwise 90",
    "crop": "none",
    "validation": "150 nonholdout photos, no model selection",
    "checkpoint_selection": "fixed final epoch"
  },
  "execution": {
    "provider": "RunPod",
    "pod_id": "oso24h8ji70264",
    "gpu": "NVIDIA A40 48GB",
    "parallel_arms_on_one_gpu": true,
    "venv": "/workspace/sail166/venv",
    "pod_cleanup": "pending",
    "training_on_mac": false
  },
  "arms": {
    "imagenet": {
      "status": "not_scored",
      "license_path": "ImageNet only; no CULane initialization",
      "checkpoint_sha256": null
    },
    "culane": {
      "status": "not_scored",
      "license_path": "CULane research-only",
      "checkpoint_sha256": null
    }
  },
  "scores": {
    "v26": {
      "all": {
        "matched": 1028,
        "total": 1094,
        "recall": 0.9396709323583181
      },
      "bottom": {
        "matched": 303,
        "total": 332,
        "recall": 0.9126506024096386
      },
      "faint_proxy": {
        "matched": 244,
        "total": 274,
        "recall": 0.8905109489051095
      },
      "missed_by_v26": {
        "matched": 0,
        "total": 66,
        "recall": 0
      },
      "missed_by_deep20": {
        "matched": 7,
        "total": 64,
        "recall": 0.109375
      }
    },
    "deep20": {
      "all": {
        "matched": 1030,
        "total": 1094,
        "recall": 0.9414990859232175
      },
      "bottom": {
        "matched": 305,
        "total": 332,
        "recall": 0.9186746987951807
      },
      "faint_proxy": {
        "matched": 246,
        "total": 274,
        "recall": 0.8978102189781022
      },
      "missed_by_v26": {
        "matched": 9,
        "total": 66,
        "recall": 0.13636363636363635
      },
      "missed_by_deep20": {
        "matched": 0,
        "total": 64,
        "recall": 0
      }
    }
  },
  "delta_percentage_points": {},
  "scoring": {
    "method": "prod_baseline_score.mjs exact max-cardinality/min-cost matcher; direction-invariant 20-point resample",
    "cap_percent_diagonal": 3,
    "coverage": {
      "v26": {
        "status": "complete",
        "scored": 332,
        "expected": 332,
        "skipped": 0,
        "modelVersions": [
          "v26"
        ],
        "note": "complete single-version run"
      },
      "deep20": {
        "status": "complete",
        "scored": 332,
        "expected": 332,
        "skipped": 0,
        "modelVersions": [
          "deep20"
        ],
        "note": "complete single-version run"
      }
    },
    "faint_definition": "Lowest quartile of median absolute grayscale center-versus-flanks contrast at +/-0.5% diagonal; proxy only, not human faint labels",
    "false_positives": {
      "v26": {
        "precision": 0.799,
        "perfect_scans": {
          "lines": 215,
          "linesRate": 0.648,
          "note": "metric quality = error distributions only (no pass/fail tolerance, Nate 2026-08-25)"
        }
      },
      "deep20": {
        "precision": 0.776,
        "perfect_scans": {
          "lines": 189,
          "linesRate": 0.569,
          "note": "metric quality = error distributions only (no pass/fail tolerance, Nate 2026-08-25)"
        }
      }
    }
  },
  "limitations": [
    "Faint stripes have no human tags in the staged data. Faint-proxy results use the fixed lowest contrast quartile (274 of 1,094 stripes), not human-confirmed faint-stripe recall.",
    "Training uses local North archive labels and the saved 647-ID exclusions snapshot. Live exclusions refresh returned 401 locally and 403 with Railway credentials; fresh R2 human corrections were not loaded.",
    "This is a fixed 15-epoch, 1,500-photo experiment at upstream confidence 0.41. The 150 validation photos were withheld but not used to tune thresholds or pick epochs; a negative result is not an architecture-wide verdict.",
    "Predictions are raw detector proposals scored with holdout_suite-style geometry matching, not the full production filtering pipeline. API metric accuracy and repeated-inference determinism are not certified.",
    "CULane-pretrained weights remain research-only. The ImageNet arm never loads CULane weights; commercial rights to ImageNet/North data still require separate review."
  ],
  "artifacts": {
    "directory": "server/inference/runs/sail166-clrernet",
    "implementation": "server/inference/experiments/clrernet",
    "dependency_lock": "server/inference/experiments/clrernet/requirements.resolved.txt",
    "baseline_provenance": {
      "v26": {
        "responses": 332,
        "sha256_sorted_filenames_and_bytes": "bb955c1cb8dad4c4b288679aff54cf2cc3b6a033d9d27e8300540ae99bf5385a",
        "source_directory": "runs/hybrid-sam3-v26-deep20-20260902/v26-responses",
        "scope": "cached raw sidecar proposals; model weights not independently reloaded in this experiment"
      },
      "deep20": {
        "responses": 332,
        "sha256_sorted_filenames_and_bytes": "449eb51119aa0189a0a2faab12afb2ff4b9a408b8a99cc50accb50e617280087",
        "source_directory": "runs/hybrid-sam3-v26-deep20-20260902/deep20-responses",
        "scope": "cached raw sidecar proposals; model weights not independently reloaded in this experiment"
      }
    }
  },
  "sources": [
    "https://xingangpan.github.io/projects/CULane.html",
    "https://github.com/hirotomusiker/CLRerNet",
    "https://storage.openvinotoolkit.org/repositories/open_model_zoo/public/2022.1/dla-34/"
  ],
  "deployment": false,
  "promotion": false,
  "git_commit": false
}
