Found while working on #243. #236's contract says that at `Tolerance::ZERO` the report is always empty: the result is the exact boolean of the operands as given, or a named refusal. But a support reading whose f64 measure is exactly 0 while the exact predicate fails is recorded as a decision with linear 0.0. Seen: `PlanePerpendicularToAxis` with linear 0.0 under a general placement at ZERO.
Expected
At ZERO a reading the exact predicate rejects must not be taken. Either the exact answer is used (the configuration is decided exactly as not perpendicular) or the operation is refused by name. The report stays empty, and a test pins it.
Done when
A general-placement case that produced the linear-0 decision returns an empty report or a named refusal at ZERO. All report kinds are audited for the same pattern.
Found while working on #243. #236's contract says that at `Tolerance::ZERO` the report is always empty: the result is the exact boolean of the operands as given, or a named refusal. But a support reading whose f64 measure is exactly 0 while the exact predicate fails is recorded as a decision with linear 0.0. Seen: `PlanePerpendicularToAxis` with linear 0.0 under a general placement at ZERO.
Expected
At ZERO a reading the exact predicate rejects must not be taken. Either the exact answer is used (the configuration is decided exactly as not perpendicular) or the operation is refused by name. The report stays empty, and a test pins it.
Done when
A general-placement case that produced the linear-0 decision returns an empty report or a named refusal at ZERO. All report kinds are audited for the same pattern.