[
  {
    "_note": "Hypothesis 1 — ImageNet pretraining is OOD for fundus; freezing low-level filters helps. Keep tiny but freeze 60% of stages (stem + first 2 of 4 stages).",
    "run_name": "experiments/convnext/baseline_convnextv2_tiny_freeze60",
    "reps": 3,
    "tower_overrides": {
      "img": {
        "args": {
          "backbone": "convnextv2_tiny",
          "freeze_ratio": 0.6
        }
      }
    }
  },

  {
    "_note": "Hypothesis 2 — model too big for 330 patients; try the smallest variant.",
    "run_name": "experiments/convnext/baseline_convnextv2_atto",
    "reps": 3,
    "tower_overrides": {
      "img": {
        "args": {
          "backbone": "convnextv2_atto",
          "freeze_ratio": 0.0
        }
      }
    }
  },

  {
    "_note": "Hypothesis 3 — LR too high for the bigger model from ImageNet init; halve LR with the tiny backbone unfrozen.",
    "run_name": "experiments/convnext/baseline_convnextv2_tiny_lr5e5",
    "reps": 3,
    "overrides": {
      "training": { "lr": 5e-5 }
    },
    "tower_overrides": {
      "img": {
        "args": {
          "backbone": "convnextv2_tiny",
          "freeze_ratio": 0.0
        }
      }
    }
  }
]
