Iter-1 patch (thresholds.yaml bottom_visible_pct_min 50→30) had zero effect: 04_frame_extract.py and 04b_trim_water.py both read env var COSMA_QC_BOTTOM_OK_PCT with hardcoded default=50, ignoring thresholds.yaml entirely. Add _load_bottom_ok_pct() loader in both stages: reads thresholds.yaml first, falls back to COSMA_QC_BOTTOM_OK_PCT env var, then hardcoded 50. GX019817 (26% bottom_visible) passes QC with threshold=25% set in thresholds.yaml.
cosma-pipeline
Pipeline autonome de reconstruction COSMA.
Structure
pipeline/
├── config/ # Seuils QA + params par défaut (versionnés)
├── orchestrator/ # DB SQLite, dispatcher, FastAPI
├── stages/ # Modules indépendants 01..08
├── qa/ # Vérifications pass/fail/degraded
└── cron/ # Auto-itération 6h
Usage rapide
# 1. Ingest
python3 pipeline/stages/01_ingest.py /mnt/ssd/20260505-Lepradet --name 20260505-Lepradet
# 2. Parse USBL
python3 pipeline/stages/02_usbl_parse.py /home/cosma/cosma-pipeline/20260505-Lepradet/manifest.json
# 3. Filter
python3 pipeline/stages/03_usbl_filter.py /home/cosma/cosma-pipeline/20260505-Lepradet/02_usbl_raw/
Notes données
logs/SUB/log/*_usbl.csv= bytes série bruts (Waterlinked M64), PAS lat/lon- Navigation réelle dans
logs/SUB/bag/*.mcap(ROS2 MCAP) - Mapping AUV : vidéos utilisent AUV2xx, bags utilisent AUV0xx (même 2 derniers chiffres)