feat(0127-LegAnkleFootLandmarkSpecsCaptureCompare): leg/ankle/foot landmark capture, compare, and placement consume - #129
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 8d80d1b. Configure here.
| return "hold_priors" | ||
| if max(vals) < 1.0: | ||
| return "hold_priors" | ||
| return "soft_adjust" |
There was a problem hiding this comment.
Gastroc soft_adjust never clears
Medium Severity
_suggest treats any large delta.y or delta.z as soft_adjust for all soft-adjust ids, but consume is axis-specific (gastroc_med_* writes only Y onto capsule p0; arch_apex_* writes only Z). Capsule p0 sits at knee height while photo gastroc Z is belly height, so delta.z stays large after a successful Y consume and soft_adjust never settles to hold_priors.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit 8d80d1b. Configure here.
| dest = [float(cyl.p1[0]), float(cyl.p1[1]), float(cyl.p1[2])] | ||
| if dest is not None: | ||
| mid = _calf_split_mid(list(cyl.p0), dest) | ||
| cyl.p1 = list(mid) |
There was a problem hiding this comment.
Legacy calf capsule shortened
Low Severity
When no calf_taper_dist exists, _apply_measured_calf_cyl_y still runs _calf_split_mid and writes the result into calf_cyl.p1. That turns a full-shank one-cyl capsule into a proximal 42% stub and leaves a gap to the ankle. Sibling thigh-adduction logic correctly leaves legacy p1 at the ankle and only moves p0.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 8d80d1b. Configure here.


What
Track 0127: frozen form-read gastroc/malleolus/arch/ball/Achilles ids → fuse XYZ (left Y overlay + back X/Z, no new DEPTH_PAIRS) → sidecar
leg_foot_metrics.json→ CLIblockout-leg-foot-compare+ MCP 51 (mesh_proportion_blockout_leg_foot_compare) → new-id calf_cyl p0 Y after B6 + arch_soft Z only.Why
Package A has knee/ankle + calf diameters + calf DEPTH, but not gastroc/malleoli/arch/ball/Achilles form-read. Agents were guessing calf belly Y and arch Z from 0108/0096 H-frac priors.
Honesty (N6)
LEG_FOOT_COMPARE_HONESTY=proportion_leg_foot_compare_not_mesh_or_print_success. Compare is authoring QA only — not mesh or print success. Capsule_delta_mmuses p0 (live calf_cylcenter=null). Y/Z-only_suggestignoresdelta.x. Hold 0108/0096/0071/0042/0056. No remake/D7 (Package A lacks new ids). Report stay 1.2.0. Recipe stay 1.4.0.Tests
A–F suites + pin-retarget catalog 50→51 (61 asserts / 52 files). Four gates green locally (
ledgerful verify).Note
Medium Risk
Touches fuse XYZ and recipe calf/arch placement, so wrong consume could shift blockout geometry. Scope is authoring QA with hold-priors for most ids and no schema bump.
Overview
Adds track 0127 form-read landmarks (gastroc, malleoli, arch, Achilles, ball) through capture, fuse, authoring compare, and limited recipe consume.
New
blockout-leg-foot-compare(CLI + MCP, catalog 51) writesleg_foot_compare.jsonand optionalleg_foot_metrics.json. Compare is authoring QA only (LEG_FOOT_COMPARE_HONESTY); suggestions stay in a closed set, with soft_adjust only for gastroc Y and arch Z. Capsule deltas use p0; X is ignored.Fuse overlays left-view Y and back-view X/Z for the new ids (no new DEPTH_PAIRS, no invented Y). Recipe consume is narrow: measured
gastroc_med_*Y ontocalf_cylp0 after B6 (then split mid), and measuredarch_apex_*Z ontoarch_soft. Existing 0108/0096 priors and report/recipe schemas stay 1.2.0 / 1.4.0.Reviewed by Cursor Bugbot for commit 8d80d1b. Bugbot is set up for automated code reviews on this repo. Configure here.