Skip to content

fix(0131-FaceNoseTipCenterOffset): measured nose_tip Y as tip; compare vs front surface - #133

Merged
Ryan-AI-Studios merged 1 commit into
mainfrom
feature/0131-FaceNoseTipCenterOffset
Aug 24, 2026
Merged

fix(0131-FaceNoseTipCenterOffset): measured nose_tip Y as tip; compare vs front surface#133
Ryan-AI-Studios merged 1 commit into
mainfrom
feature/0131-FaceNoseTipCenterOffset

Conversation

@Ryan-AI-Studios

@Ryan-AI-Studios Ryan-AI-Studios commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Summary

  • Measured finite nose_tip y_m now writes ellipsoid center = tip + nose_ry (Loomis parity) so the front surface seats on the captured tip.
  • blockout-face-compare Y for nose_tip compares against front surface center[1] - ry_m when ry_m is finite; missing/non-finite ry_m falls back to center (no NaN).
  • _delta_mm(..., role_id) — production call passes lid (B17). JSON recipe.center stays the ellipsoid center (no schema bump).

Honesty (N6)

FACE_COMPARE_HONESTY / RECIPE_HONESTY — authoring QA only; green compare ≠ print success. No remake/D7 (Loomis path unchanged; Default Package A still lacks measured nose Y).

Test plan

  • T1 measured Y → center = y_m + ry_m; ry_m == NOSE_RY_FRAC_H * H
  • T2 Loomis test_face__nose_tip_y_freeze
  • T3 surface match → |delta.y| < 1 mm / hold_priors
  • T4 0102 + nose fracs; T5 eye Y as center; T6 MCP 53; T7 missing ry fallback
  • Four gates: ruff / format --check / basedpyright / pytest
  • Codex R1: implementation PASS (review.md at ship)

Out of scope

0137 num_faces max; 0132–0136 leftovers; MCP 54; remake.


Note

Low Risk
Authoring-only face recipe/compare geometry; no schema, auth, or print-path changes. Wrong Y offset would only skew QA deltas and nose placement.

Overview
Treats measured nose_tip Y as the tip, not the ellipsoid center, so the nose soft mass seats with its front surface on the captured landmark.

When y_m is finite, RECIPE_nose_soft center is now tip + nose_ry (same offset as the Loomis fallback). Face-compare Y for nose_tip uses center[1] - ry_m when ry_m is finite; missing/NaN ry_m falls back to center with no NaN. JSON recipe.center is unchanged (still the ellipsoid center).

Scale constants (NOSE_RY_FRAC_H, NOSE_TIP_Y_FRAC_RY) stay frozen. Authoring QA only.

Reviewed by Cursor Bugbot for commit 8b100a8. Bugbot is set up for automated code reviews on this repo. Configure here.

Measured finite nose_tip y_m now seats RECIPE_nose_soft center at
y_m + nose_ry (Loomis parity). blockout-face-compare Y for nose_tip
uses center[1] - ry_m when ry_m is finite; missing/non-finite ry_m
falls back to center. MCP stay 53; no remake.
@Ryan-AI-Studios
Ryan-AI-Studios merged commit 05fab40 into main Aug 24, 2026
3 checks passed
@Ryan-AI-Studios
Ryan-AI-Studios deleted the feature/0131-FaceNoseTipCenterOffset branch August 24, 2026 04:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant