This repository was archived by the owner on Nov 11, 2026. It is now read-only.
Repository navigation
workflows: drop --joint-end; growth-plate trace checks warn - #613
Merged
Merged
Conversation
tibia_frame.py finds the joint end from where the femur lies, so the flag is gone. The trace checks in annotations.py and iioc.py return or warn with their sentence instead of exiting; plate_snap.py uses the returned sentence directly instead of catching SystemExit. Co-Authored-By: Claude <noreply@anthropic.com>
haowjy
marked this pull request as ready for review
November 5, 2026 01:30
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changelog
tibia_frame.py --joint-end. The joint end is the tibia's end that faces the femur.Why
#608 set the rule: a script refuses only when it cannot write a valid result. A check that judges the result warns, and the worker decides. This PR applies that rule to the growth-plate trace checks, whose limits were set on a few runs. One of them, the off-tibia check, stops 12 of the 45 lab hand traces (
workflows/mouse-oa/.context/TODO.md).--joint-endhad become redundant: after #608 the script used the end it detected over the flag.Design decisions
None, and the caller decides what to do with it.iioc.pyandmetaphysis_roi.pywarn (warn_on).plate_snap.pystill refuses a snap that breaks a rule the worker's own curves met: the snap is an optional tool, and the worker keeps their curves. This replacesplate_snap.py'spasses(), which caughtSystemExitto probe the old refusers.tibia_frame.py. Without the flag, the joint end comes only from where the femur lies.merge_labels.py's runaway-track check, since writing that merge would hand a big bone's voxels to a small structure's label. It already has--max-big-shareas the way past it. It's noted in the TODO. Faces that cross, an empty ROI-3, and grid mismatches also still refuse.Walkthrough
A trace problem no longer stops IIOC
iioc.pywith agrowth_plate_curvespoint off the tibia.warningsnames the section.What changed
annotations.py:refuse_off_tibia,refuse_gapsandrefuse_jumpsbecomecheck_*functions that return the problem sentence. Addswarn_on.eroded_markswarns.iioc.py:refuse_width_pointsandrefuse_cut_sidesbecomecheck_*functions that warn. The calls are wrapped inwarn_on.metaphysis_roi.py: the calls are wrapped inwarn_on.plate_snap.py: uses the returned sentences;passes()is deleted.tibia_frame.py:--joint-endis removed;check_bonereturns the detected end.oa-protocol.md, the docstrings,mouse-oa/.context/TODO.md,decisions.md.Risk and where to look
--joint-end(from an old habit; no doc names it any more) gets an argparse error naming the flag. A live run uses its own workflow snapshot, so it isn't affected.plate_snap.pycondition,not check(ann…) and (problem := check(new…)), and every caller of the renamed functions.Knowledge layers, docs and deletions
--joint-end,plate_snap.passes, and the second-pass TODO item.Contract changes
None.
Verification
sh workflows/test.sh(ruff, then 212 passed);ruff --fixsorted the imports.workflows/).Left out
merge_labels.py's track check:workflows/mouse-oa/.context/TODO.md.