Skip to content

Handle missing datum strips and correct RC6 slow tests - #2183

Merged
pzfreo merged 3 commits into
mainfrom
fix/2182-null-datum-strip
Oct 4, 2026
Merged

pzfreo merged 3 commits into
mainfrom
fix/2182-null-datum-strip

Conversation

@pzfreo

@pzfreo pzfreo commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Fixes #2182.

Change

Only rank coincident datum stems when their requested view side has a strip. A missing strip now reaches the existing corridor no-strip path, which runs the normal legal fallback and records pmi_dropped if the datum cannot be placed. Imported surface-normal datums remain restricted to their proven side.

Reproduction and checks

  • A public build_drawing(..., pmi="annotate") regression declares an imported side-view datum on the absent left strip and a separate PMI control frame. On unchanged main it raises the reported AttributeError at _gdt.py:792.
  • With this patch the drawing completes, the other PMI frame remains, the missing datum has a pmi_dropped issue, and the solve trace proves the left strip was None and the datum's outcome was no_strip.
  • All 47 tests in test_gdt_placement.py and test_strip_zones.py passed. scripts/pr-check --static and git diff --check passed.
  • The reporter's AP242 file is unavailable locally, so this verifies the exact failing renderer state through the public build path rather than claiming a replay of that file.

RC6 slow-gate correction

The post-merge main slow run for #2181 had two stale expectations:

  • TestTheCaseStudy still expected the automatic plate drawing to use A1. On current main, measured through build_drawing, both the automatic and explicitly two-principal-view builds use A2 at 1:1, have the same three views and 34 annotation names, and clean lint. The test now checks automatic/manual parity instead of the obsolete A1/A2 contrast.
  • The source-owned GRM-03 manufacturing test still expected automatic A4 at 2:1 with a detail. Current main selects A4 at 5:1 with no detail, keeps the manufacturing row and its three source bindings, and has no error or dropped-requirement lint. Its declared Sheet replay still chooses A4 at 2:1 with a placed detail and retains the manufacturing meaning; the test checks those two observed arrangements separately.

Both isolated slow nodes and static checks pass locally. These are test corrections for #2181's already merged behavior; they change no production layout code.

Architecture

ADR 1 keeps the same compiler and annotation pass. ADR 2 retains the shared corridor solver and its existing no-strip fallback. ADR 3 recognition and ADR 4 authored meaning are unchanged. ADR 5 reports an unplaceable sourced datum while keeping other PMI instead of aborting the build. No ADR boundary or invariant changes.

ADR 2 still contains the previously logged contradiction between its no-automatic-principal-removal sentence and the current thin-plate behavior. The record itself is unchanged pending maintainer sign-off; #1130 tracks it.

@pzfreo pzfreo changed the title Handle datum references with no target strip Handle missing datum strips and correct stale slow view test Oct 4, 2026
@pzfreo pzfreo changed the title Handle missing datum strips and correct stale slow view test Handle missing datum strips and correct RC6 slow tests Oct 4, 2026
@pzfreo
pzfreo merged commit f95fdad into main Oct 4, 2026
19 checks passed
@pzfreo
pzfreo deleted the fix/2182-null-datum-strip branch October 4, 2026 15:43
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.

render_gdt crashes when a datum_ref targets a view side with no strip (strip.anchor on None)

1 participant