CI / ledger-and-tools (push) Successful in 20s
Containment (intersection over the smaller area) between human-drawn crystal pairs never exceeds 0.42, while the model-drawn duplicates sit at 0.96-1.0, so a rule at 0.9 cannot lose a real pair. On 231 unseen frames, v4: precision 0.831 -> 0.876, recall 0.881 -> 0.869, F1 0.855 -> 0.873, 46 outlines removed, 8 true positives lost where the less confident of two outlines was the one matching the label. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Training runs
Generated by python tools/ledger.py render; do not edit by hand.
| Run | Status | Dataset | Base | Version | F1 | Mask IoU | Gate | Last change |
|---|---|---|---|---|---|---|---|---|
| 2026-09-28_alc-v1 | promoted | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-2026-09-28 | 0.821 | 0.881 | yes | 2026-09-28T19:17 |
| 2026-09-28_alc-v1-800px | gate_failed | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-800px-2026-09-29 | 0.808 | 0.895 | no | 2026-09-29T00:31 |
| 2026-09-28_alc-v1-humanonly | gate_passed | dataset/2026-09-28_alc-v1-humanonly | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-humanonly-2026-09-28 | 0.820 | 0.877 | yes | 2026-09-28T20:44 |
| 2026-09-28_alc-v1-mask1 | gate_failed | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-mask1-2026-09-28 | 0.820 | 0.888 | no | 2026-09-28T23:54 |
| 2026-09-28_alc-v1-noflip | gate_passed | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-noflip-2026-09-28 | 0.835 | 0.881 | yes | 2026-09-28T21:30 |
| 2026-09-28_alc-v1-overlap | aborted | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | - | - | - | - | 2026-09-28T23:55 |
| 2026-09-29_alc-v1-noflip-mask1 | deployed | dataset/2026-09-28_alc-v1 | /home/jungfrau/AareLC/models/yolo26n-seg.pt | yolo26n-seg-alc-v1-noflip-mask1-2026-09-29 | 0.827 | 0.894 | yes | 2026-09-29T20:47 |
| 2026-09-29_v2-noflip-mask1 | aborted | dataset/2026-09-29_v2 | models/base/yolo26n-seg.pt | - | - | - | - | 2026-09-30T07:16 |
| 2026-09-29_v2-recipeA | gate_failed | dataset/2026-09-29_v2 | models/base/yolo26n-seg.pt | yolo26n-seg-v2-recipeA-2026-09-29 | 0.797 | 0.874 | no | 2026-09-29T17:56 |
| 2026-09-29_v3-noflip-mask1 | deployed | dataset/2026-09-29_v3 | models/base/yolo26n-seg.pt | yolo26n-seg-v3-noflip-mask1-2026-09-30 | 0.837 | 0.887 | yes | 2026-10-02T11:30 |
| 2026-09-29_v3-recipeA | gate_passed | dataset/2026-09-29_v3 | models/base/yolo26n-seg.pt | yolo26n-seg-v3-recipeA-2026-09-29 | 0.831 | 0.881 | yes | 2026-09-29T23:42 |
| 2026-09-30_v3-n-1024px | exported | dataset/2026-09-29_v3 | models/base/yolo26n-seg.pt | - | - | - | - | 2026-09-30T07:17 |
| 2026-09-30_v3-s-1024px | exported | dataset/2026-09-29_v3 | models/base/yolo26s-seg.pt | - | - | - | - | 2026-09-30T07:17 |
| 2026-09-30_v3-s-640px | gate_passed | dataset/2026-09-29_v3 | models/base/yolo26s-seg.pt | yolo26s-seg-v3-s-640px-2026-10-01 | 0.861 | 0.886 | yes | 2026-10-02T13:29 |
| 2026-10-01_v4-noflip-mask1 | promoted | dataset/2026-10-01_v4 | models/base/yolo26n-seg.pt | yolo26n-seg-v4-noflip-mask1-2026-10-02 | 0.852 | 0.891 | yes | 2026-10-02T13:25 |
| 2026-10-01_v4-recipeA | gate_failed | dataset/2026-10-01_v4 | models/base/yolo26n-seg.pt | yolo26n-seg-v4-recipeA-2026-10-02 | 0.832 | 0.884 | no | 2026-10-02T04:12 |
States: exported → queued → training → measured → gate_passed → gate_failed → promoted → deployed (or aborted).
2026-09-28_alc-v1
- 2026-09-28T16:51:45 · exported · jungfrau@mx-spark-01 — first loop run, on the Spark
- 2026-09-28T16:51:45 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-28T17:40:30 · measured · jungfrau@mx-spark-01
- 2026-09-28T17:40:30 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-overlap-false-2026-04-12/gold_report.json", "f1_delta": 0.0452, "mask_iou_delta": -0.0217, "class_f1_delta": {"loop_all": 0.0786, "pin": 0.0339}, "pass": false}
- 2026-09-28T19:17:44 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-28T19:17:49 · measured · jungfrau@mx-spark-01
- 2026-09-28T19:17:49 · gate_passed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-overlap-false-2026-04-12/gold_report.json", "f1_delta": 0.0452, "mask_iou_delta": 0.0327, "mask_score": 0.7103, "mask_score_baseline": 0.6775, "matched_only_iou_delta": -0.0217, "class_f1_delta": {"loop_all": 0.0786, "pin": 0.0339}, "pass": true}
- 2026-09-28T19:17:49 · promoted · jungfrau@mx-spark-01 — by the gate
2026-09-28_alc-v1-800px
- 2026-09-28T23:55:28 · exported · jungfrau@mx-spark-01 — training size 800 px; same dataset and gold as 2026-09-28_alc-v1
- 2026-09-28T23:55:28 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-29T00:31:00 · measured · jungfrau@mx-spark-01
- 2026-09-29T00:31:00 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json", "f1_delta": -0.0123, "mask_iou_delta": -0.0099, "mask_score": 0.7004, "mask_score_baseline": 0.7103, "matched_only_iou_delta": 0.0143, "class_f1_delta": {"loop_all": -0.0063, "pin": 0.0151}, "pass": false}
2026-09-28_alc-v1-humanonly
- 2026-09-28T20:01:45 · exported · jungfrau@mx-spark-01 — twin of 2026-09-28_alc-v1 without the 163 accepted-unchanged frames; to be trained on the cluster
- 2026-09-28T20:07:22 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-28T20:42:32 · measured · jungfrau@mx-spark-01
- 2026-09-28T20:42:32 · gate_passed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json", "f1_delta": -0.0004, "mask_iou_delta": 0.0113, "mask_score": 0.7215, "mask_score_baseline": 0.7103, "matched_only_iou_delta": -0.0033, "class_f1_delta": {"loop_all": 0.0292, "pin": 0.0042}, "pass": true}
- 2026-09-28T20:44:27 · gate_passed · jungfrau@mx-spark-01 — gate passed vs the beamline baseline; not promoted: on the 66 clean frames B ties A on F1 (0.851 vs 0.853), mask IoU no tighter (0.878 vs 0.883), crystal F1 0.40 vs 0.62; A stays the candidate
2026-09-28_alc-v1-mask1
- 2026-09-28T21:30:31 · exported · jungfrau@mx-spark-01 — full-resolution masks (mask_ratio=1); same dataset and gold as 2026-09-28_alc-v1
- 2026-09-28T21:30:31 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-28T23:54:44 · measured · jungfrau@mx-spark-01
- 2026-09-28T23:54:44 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json", "f1_delta": -0.0003, "mask_iou_delta": -0.0013, "mask_score": 0.709, "mask_score_baseline": 0.7103, "matched_only_iou_delta": 0.0072, "class_f1_delta": {"loop_all": -0.0063, "pin": 0.0196}, "pass": false}
2026-09-28_alc-v1-noflip
- 2026-09-28T21:03:25 · exported · jungfrau@mx-spark-01 — no horizontal flip (fliplr=0): the camera never shows the pin on the left; same dataset and gold as 2026-09-28_alc-v1
- 2026-09-28T21:03:25 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-28T21:30:30 · measured · jungfrau@mx-spark-01
- 2026-09-28T21:30:30 · gate_passed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json", "f1_delta": 0.0142, "mask_iou_delta": 0.0093, "mask_score": 0.7196, "mask_score_baseline": 0.7103, "matched_only_iou_delta": -0.0001, "class_f1_delta": {"loop_all": 0.0168, "pin": 0.0144}, "pass": true}
2026-09-28_alc-v1-overlap
- 2026-09-28T23:54:53 · exported · jungfrau@mx-spark-01 — overlap_mask on; same dataset and gold as 2026-09-28_alc-v1
- 2026-09-28T23:54:53 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-28T23:55:32 · aborted · jungfrau@mx-spark-01 — skipped on purpose: overlap_mask merges nested masks (crystal inside loop_face inside loop_all), so the setting cannot be right for these labels
2026-09-29_alc-v1-noflip-mask1
- 2026-09-29T07:31:18 · exported · jungfrau@mx-spark-01 — no horizontal flip + full-resolution masks (fliplr=0, mask_ratio=1); same dataset and gold as 2026-09-28_alc-v1
- 2026-09-29T07:31:18 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-29T10:36:12 · measured · jungfrau@mx-spark-01
- 2026-09-29T10:36:12 · gate_passed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-2026-09-28/gold_report.json", "f1_delta": 0.0062, "mask_iou_delta": 0.0249, "mask_score": 0.7352, "mask_score_baseline": 0.7103, "matched_only_iou_delta": 0.0133, "class_f1_delta": {"loop_all": 0.0084, "pin": -0.0167}, "pass": true}
- 2026-09-29T11:13:44 · promoted · jungfrau@mx-spark-01 — by decision after the A/B comparison on the unseen frames (gate had passed vs A)
- 2026-09-29T20:47:16 · deployed · jungfrau@mx-spark-01
2026-09-29_v2-noflip-mask1
- 2026-09-29T17:06:19 · exported · jungfrau@mx-spark-01 — default recipe (no flip, full-resolution masks) on dataset v2: to be trained on the cluster with sbatch slurm/train.sbatch
- 2026-09-30T07:16:27 · aborted · jungfrau@mx-spark-01 — superseded: dataset v3 exists, cluster runs registered on it instead
2026-09-29_v2-recipeA
- 2026-09-29T17:06:19 · exported · jungfrau@mx-spark-01 — settings A (fliplr 0.5, mask_ratio 4) on dataset v2, Spark
- 2026-09-29T17:06:19 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-29T17:56:27 · measured · jungfrau@mx-spark-01
- 2026-09-29T17:56:27 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-noflip-mask1-2026-09-29/gold_report.json", "f1_delta": -0.0123, "mask_iou_delta": -0.0039, "mask_score": 0.7298, "mask_score_baseline": 0.7337, "matched_only_iou_delta": -0.0168, "class_f1_delta": {"loop_all": 0.0089, "pin": 0.0021}, "pass": false}
2026-09-29_v3-noflip-mask1
- 2026-09-29T22:41:13 · exported · jungfrau@mx-spark-01 — promoted recipe (fliplr 0, mask_ratio 1) on dataset v3: candidate for the beamlines, Spark
- 2026-09-29T23:42:41 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-30T07:12:16 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-30T13:55:59 · measured · jungfrau@mx-spark-01
- 2026-09-30T13:55:59 · gate_passed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-noflip-mask1-2026-09-29/gold_report.json", "f1_delta": 0.0284, "mask_iou_delta": 0.0211, "mask_score": 0.7547, "mask_score_baseline": 0.7337, "matched_only_iou_delta": -0.0041, "class_f1_delta": {"loop_all": 0.0228, "pin": 0.0301}, "pass": true}
- 2026-09-30T13:55:59 · promoted · jungfrau@mx-spark-01 — by the gate
- 2026-10-02T11:30:41 · deployed · jungfrau@mx-spark-01 — deployed at the beamlines by the user (weights only), reported 2026-10-02; replaces yolo26n-seg-alc-v1-noflip-mask1-2026-09-29
2026-09-29_v3-recipeA
- 2026-09-29T22:41:12 · exported · jungfrau@mx-spark-01 — settings A (fliplr 0.5, mask_ratio 4) on dataset v3: quick signal, gate only, Spark
- 2026-09-29T22:41:13 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-29T22:46:24 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-29T22:48:37 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-09-29T23:42:37 · measured · jungfrau@mx-spark-01
- 2026-09-29T23:42:37 · gate_passed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-alc-v1-noflip-mask1-2026-09-29/gold_report.json", "f1_delta": 0.0221, "mask_iou_delta": 0.0074, "mask_score": 0.741, "mask_score_baseline": 0.7337, "matched_only_iou_delta": -0.0101, "class_f1_delta": {"loop_all": 0.0446, "pin": 0.0057}, "pass": true}
2026-09-30_v3-n-1024px
- 2026-09-30T07:17:45 · exported · jungfrau@mx-spark-01 — cluster: resolution lever, nano at 1024 px, default recipe (no flip, full-resolution masks)
2026-09-30_v3-s-1024px
- 2026-09-30T07:17:45 · exported · jungfrau@mx-spark-01 — cluster: both levers, small model at 1024 px, default recipe
2026-09-30_v3-s-640px
- 2026-09-30T07:17:45 · exported · jungfrau@mx-spark-01 — cluster: capacity lever, small model at 640 px, default recipe
- 2026-10-01T01:30:13 · queued · duan_j@gpu102
- 2026-10-01T01:30:13 · training · duan_j@gpu102 — train_run.py
- 2026-10-01T04:18:50 · measured · duan_j@gpu102
- 2026-10-01T04:18:50 · gate_failed · duan_j@gpu102 — {"baseline": "/data/user/duan_j/AareLC_train/models/registry/yolo26n-seg-v3-noflip-mask1-2026-09-30/gold_report.json", "f1_delta": 0.0024, "mask_iou_delta": -0.0492, "mask_score": 0.7056, "mask_score_baseline": 0.7547, "matched_only_iou_delta": -0.0215, "class_f1_delta": {"loop_all": -0.003, "pin": -0.0104}, "pass": false}
- 2026-10-02T13:29:54 · gate_passed · jungfrau@mx-spark-01 — re-gated on the Spark in one environment against yolo26n-seg-v3-noflip-mask1-2026-09-30 (the cluster verdict compared two environments); not promoted: four times the parameters, needs a latency check at a beamline
2026-10-01_v4-noflip-mask1
- 2026-10-01T23:52:09 · exported · jungfrau@mx-spark-01 — promoted recipe (fliplr 0, mask_ratio 1) on dataset v4: candidate for the beamlines, Spark
- 2026-10-02T04:13:26 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-10-02T13:25:34 · measured · jungfrau@mx-spark-01
- 2026-10-02T13:25:34 · gate_passed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v3-noflip-mask1-2026-09-30/gold_report.json", "f1_delta": 0.015, "mask_iou_delta": 0.0122, "mask_score": 0.767, "mask_score_baseline": 0.7547, "matched_only_iou_delta": 0.0042, "class_f1_delta": {"loop_all": 0.024, "pin": 0.0068}, "pass": true}
- 2026-10-02T13:25:34 · promoted · jungfrau@mx-spark-01 — by the gate
2026-10-01_v4-recipeA
- 2026-10-01T23:52:09 · exported · jungfrau@mx-spark-01 — settings A (fliplr 0.5, mask_ratio 4) on dataset v4: quick signal, gate only, Spark
- 2026-10-01T23:59:18 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-10-02T02:04:53 · measured · jungfrau@mx-spark-01
- 2026-10-02T02:04:53 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v3-noflip-mask1-2026-09-30/gold_report.json", "f1_delta": -0.0057, "mask_iou_delta": -0.0083, "mask_score": 0.7464, "mask_score_baseline": 0.7547, "matched_only_iou_delta": -0.0031, "class_f1_delta": {"loop_all": 0.0095, "pin": -0.0036}, "pass": false}
- 2026-10-02T02:05:55 · training · jungfrau@mx-spark-01 — train_run.py
- 2026-10-02T04:12:20 · measured · jungfrau@mx-spark-01
- 2026-10-02T04:12:20 · gate_failed · jungfrau@mx-spark-01 — {"baseline": "/home/jungfrau/AareLC_train/models/registry/yolo26n-seg-v3-noflip-mask1-2026-09-30/gold_report.json", "f1_delta": -0.0057, "mask_iou_delta": -0.0083, "mask_score": 0.7464, "mask_score_baseline": 0.7547, "matched_only_iou_delta": -0.0031, "class_f1_delta": {"loop_all": 0.0095, "pin": -0.0036}, "pass": false}