Umbrella: #615
claimId: 615-g
meso: fork / validity (Operation/Valid/ arc-aware path; Curves/* IsValid surface)
Blocked by: #619
Goal
Open the strict-ISO validity lane (confirmed decisions 1+3: the lane is un-bounded; this is rung 1). Honest shape: definite-false detection — a curve value violating a cheap clause rule returns IsValid == false with a message naming the clause; a value passing all cheap rules but needing the not-yet-built machinery (simplicity/arc-arc) stays fail-closed (throws, message naming the missing rung) rather than returning a true that wasn't checked. Cheap rules in rung 1: per-arc-segment start≠end (§7.3.1 Desc 6 — the constructs-but-invalid case pinned by 615-c), well-formedness counts (already intake, re-asserted at validity level), CurvePolygon ring closure, compound contiguity.
Plan
Read. How IsValidOp/IsSimpleOp currently fail closed for curves (IsSimpleOp.cs:165); where an arc-aware branch attaches without disturbing the polygonal path; the five-point full-circle idiom cases.
Green (TDD). CIRCULARSTRING (0 0, 1 1, 0 0).IsValid == false citing Desc 6; a Desc-6-clean open arc still throws (fail-closed) with the rung-2 message — the test pins that true is NOT returned unchecked; five-point full circle likewise throws-not-false (it is Desc-6-clean); a CurvePolygon whose ring is Desc-6-dirty → false propagates through the ring walk.
Refactor. Document the definite-false / fail-closed split in the ADR's consequences section (615-a) and the full-circle idiom (§4.2.7: whole circles are ST_Circle's job — parked) where users will look. Research-doc §6.2 row updated.
Witness
The pair of tests: one value provably invalid (false, clause named), one value not-yet-provable (throws, rung named) — the lane's honesty contract in executable form.
Definition of Done: fork suites green; ADR consequence recorded; the rung-2 ticket #624 (ring simplicity via arc-arc intersection) is linked from the fail-closed message's doc comment.
topics: arc, wkt
Umbrella: #615
claimId:
615-gmeso: fork / validity (
Operation/Valid/arc-aware path;Curves/*IsValid surface)Blocked by: #619
Goal
Open the strict-ISO validity lane (confirmed decisions 1+3: the lane is un-bounded; this is rung 1). Honest shape: definite-false detection — a curve value violating a cheap clause rule returns
IsValid == falsewith a message naming the clause; a value passing all cheap rules but needing the not-yet-built machinery (simplicity/arc-arc) stays fail-closed (throws, message naming the missing rung) rather than returning atruethat wasn't checked. Cheap rules in rung 1: per-arc-segment start≠end (§7.3.1 Desc 6 — the constructs-but-invalid case pinned by 615-c), well-formedness counts (already intake, re-asserted at validity level), CurvePolygon ring closure, compound contiguity.Plan
Read. How
IsValidOp/IsSimpleOpcurrently fail closed for curves (IsSimpleOp.cs:165); where an arc-aware branch attaches without disturbing the polygonal path; the five-point full-circle idiom cases.Green (TDD).
CIRCULARSTRING (0 0, 1 1, 0 0).IsValid == false citing Desc 6; a Desc-6-clean open arc still throws (fail-closed) with the rung-2 message — the test pins thattrueis NOT returned unchecked; five-point full circle likewise throws-not-false (it is Desc-6-clean); a CurvePolygon whose ring is Desc-6-dirty → false propagates through the ring walk.Refactor. Document the definite-false / fail-closed split in the ADR's consequences section (615-a) and the full-circle idiom (§4.2.7: whole circles are ST_Circle's job — parked) where users will look. Research-doc §6.2 row updated.
Witness
The pair of tests: one value provably invalid (false, clause named), one value not-yet-provable (throws, rung named) — the lane's honesty contract in executable form.
Definition of Done: fork suites green; ADR consequence recorded; the rung-2 ticket #624 (ring simplicity via arc-arc intersection) is linked from the fail-closed message's doc comment.
topics: arc, wkt