Predicate And Overlay Robustness Strategy¶
Context¶
The repo now has explicit precision dispatch and null/empty contracts, but those do not by themselves guarantee correct predicate signs or topology-safe overlay results. Nearly-collinear, nearly-cocircular, and ambiguous segment intersection cases need a separate robustness strategy before predicate and constructive kernels expand.
Decision¶
Use staged exactness.
coarse and metric kernels may remain bounded-error
predicate kernels must provide an exact sign guarantee
constructive kernels must preserve topology and use exact-style fallback for ambiguous intersection decisions
ambiguous rows should be compacted and sent to exact-style fallback, rather than running exact arithmetic on every row
The chosen default exact-style fallback is:
expansion-arithmetic style exact predicates for ambiguous predicate rows
rational-reconstruction or equivalent exact-style intersection fallback for constructive kernels
Consequences¶
Kernel docs must state guarantee level, not just dtype or tolerance.
Performance work has to measure ambiguity-rate and fallback cost, not only fast-path throughput.
Later overlay work can build on one shared exactness policy instead of ad hoc epsilon fixes.
Alternatives Considered¶
fp64 alone as the final robustness strategy
fixed epsilon thresholds as the final decision rule
universal snap-rounding as the only topology policy
exact arithmetic on every row
Acceptance Notes¶
The first landed policy encodes guarantee levels and fallback classes, while deferring the actual GPU predicate kernels and Shewchuk-style stress corpus to later implementation work.