feat(0125-TorsoChestBackLandmarkSpecsCaptureCompare): torso landmark capture, compare, and placement consume - #127
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit c5df10a. Configure here.
| scap_rear_past_m=scap_past, | ||
| scap_ry_over_rx=_ry_over_rx(scap), | ||
| mid_back_rear_past_m=mid_past, | ||
| chest_clav_pride_m=pride, |
There was a problem hiding this comment.
Stale chest-derived torso metrics
Medium Severity
build_torso_metrics computes breast_rear_vs_chest_front_m and chest_clav_pride_m from recipe chest-front Y, then later overwrites chest_front_y_m with measured chest_front without refreshing those derived values. On packages with left depth, breast_disconnected / chest_clav_pride form-read and the sidecar metrics disagree with the reported chest-front Y.
Reviewed by Cursor Bugbot for commit c5df10a. Configure here.
| if measured_mid_y is None: | ||
| measured_mid_y = y_fields.get("mid_back_r") | ||
| if measured_mid_y is not None and waist_rear is not None: | ||
| mid_past = measured_mid_y - waist_rear |
There was a problem hiding this comment.
Measured past uses center not surface
Medium Severity
When measured scap/mid_back Y is present, scap_rear_past_m / mid_back_rear_past_m subtract chest/waist rear surface from the landmark Y. Soft consume writes that same Y onto the plate center, while the recipe-only path measures past from center plus ry_m. Measured past is therefore short by about plate ry, so compare metrics disagree with placement semantics.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit c5df10a. Configure here.


What
Product path for torso/chest/back form-read specs: frozen assist ids → fuse XYZ (left Y overlay; back X/Z) → sidecar
torso_metrics.json→ CLIproportion blockout-torso-compare(photo vs RECIPE vs optional scene) → agent-facing deltas. MCP catalog 48→49 (mesh_proportion_blockout_torso_compare). Soft new-id placement only: measured scap/mid_back Y/Z when finite; otherwise 0105/0090/0066/0074/0118 priors.Why
Package A has bust/waist + chest/breast depth, not sternum/scap/mid_back. Agents were guessing from H-frac priors. Dual-source compare is authoring QA only.
Honesty
TORSO_COMPARE_HONESTY=proportion_torso_compare_not_mesh_or_print_success. Green compare is not mesh or print success. No remake/D7 (Package A lacks new ids → emit identical). Report stay 1.2.0. Recipe stay 1.4.0. No Pose/Holistic pin. No DEPTH_PAIRS consume into oval/breast consts.Tests
tests/test_proportion_torso_landmarks.pyA1–A6 + back X/Z + left Y.tests/test_proportion_torso_compare.pyB/C/D/F + sidecar unlink + hold_priors on frozen knobs.tests/test_proportion_torso_soft_consume.pyE1–E5 + B32. Catalog pin-retarget 48→49.Note
Medium Risk
Touches multi-view XYZ fuse and RECIPE scap/mid-back placement, so bad landmarks can shift blockout geometry. Scope is authoring QA with fail-closed dumps and no auth/data-path changes.
Overview
Adds track 0125 torso/chest/back form-read: new assist ids (
sternum_mid, costals, scap/mid-back), fuse XYZ from left (Y) and back (X/Z) without inventing missing axes, and authoring QAblockout-torso-compare(CLI + MCP; catalog 48→49).Compare writes
torso_compare.jsonplus optional sidecartorso_metrics.json(report stays 1.2.0). Roles get signed mm deltas, form-read tokens (three-tire, saucer plates, breast gap, clav pride), and a closed suggestion set. Frozen oval/breast knobs stayhold_priors; only finite scap/mid-back Y/Z overlay RECIPE plate centers after existing equalize (no abs of measured Y).Honesty:
TORSO_COMPARE_HONESTY— not mesh or print success. No new DEPTH_PAIRS and no retune of 0105/0090/0066/0074/0118 consts.Reviewed by Cursor Bugbot for commit c5df10a. Bugbot is set up for automated code reviews on this repo. Configure here.