Skip to content

615-g · IsValid rung 1: arc-aware definite-invalid detection for the cheap clause rules #623

Description

@grootstebozewolf

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ImmediateHighest priority - blocking or critical for current RGR/curve work

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions