Stopped the active full-cohort kuberun client before it could submit an Argo workflow and cancelled its monitoring heartbeat.
Checked out clean cleanup-vits at b93f31b5 and discovered that it does not yet contain current unify-vits; the combined tree is origin/merge-unify-vits-into-cleanup-vits at 8bd0cb76.
Audited the final ISUP implementation against the combined tree with calldiff and two independent code-path reviews.
Confirmed that the data-pipeline consolidation and Pixi Docker changes are already superseded by cleanup-vits and should be dropped rather than replayed.
Identified required API adaptations for frozen typed configs, data discriminators, trainer settings, loss discriminators, moved logits helpers, the renamed ve2e.vxdata_pipeline package, and the target’s src/ve2e/inference.py module layout.
Confirmed that core ClearML EMA loading, exact-one-study validation, PHI filtering, unified Lightning forward, patient/result association, alternate biopsy/RPE evaluation, and private JSON output remain necessary custom glue.
Lessons Learned: Pitfalls
A branch described conceptually as “on top of” another may still be awaiting its merge. Verify ancestry and inspect the integration branch before rebasing.
Cleanup-vits uses frozen Pydantic configs. Deep-copying and mutating checkpoint config fields will fail; nested model_copy(update=...) is required.
The standard vxData pipeline cannot be reused unchanged for unbiased inference because select_primary_study ranks by lesion-mask source and ISUP.
Previously validated old-config ClearML checkpoints must be revalidated after the cleanup config/model refactor; the old embedded config class may no longer import.
Lessons Learned: Improvements
Replay only the focused final ISUP behavior onto the cleanup-plus-unify tree instead of preserving feature history.
Add a small named inference pipeline composition that reuses standard steps but omits label-based study selection and unused lesion generation.
Preserve canonical split labels; do not rewrite the cohort to val_nb merely to enter the validation dataloader.
Decide explicitly whether the implementation targets cleanup-vits after its merge or the current integration branch before writing code.