[Tool] tighten constraints on tool parameters
This commit is contained in:
parent
306f0b4c83
commit
09b131026f
1 changed files with 16 additions and 0 deletions
|
|
@ -15,6 +15,15 @@ jog is left of travel; returned endpoint ports describe the primitive output in
|
||||||
that same local frame. The planner transforms selected endpoints into layout
|
that same local frame. The planner transforms selected endpoints into layout
|
||||||
coordinates only after a complete route has been chosen.
|
coordinates only after a complete route has been chosen.
|
||||||
|
|
||||||
|
Primitive parameters are also the basis for route-failure diagnostics. Tools
|
||||||
|
must keep endpoint topology stable across each offer domain: length-like
|
||||||
|
Straight/Bend offers use a finite, attained, nonnegative minimum and advance
|
||||||
|
their local x coordinate by the selected length; S/U offers move their local y
|
||||||
|
coordinate by the selected jog. Endpoint rotation and output ptype must not
|
||||||
|
vary with the parameter and must agree with the concrete offer kind and its
|
||||||
|
declared `out_ptype`. These are Tool contract requirements rather than
|
||||||
|
exhaustively runtime-checked properties.
|
||||||
|
|
||||||
Tool authors should treat offer planning callbacks as pure descriptions. The
|
Tool authors should treat offer planning callbacks as pure descriptions. The
|
||||||
solver may call `endpoint_at()`, `cost_at()`, and `bbox_at()` many times while
|
solver may call `endpoint_at()`, `cost_at()`, and `bbox_at()` many times while
|
||||||
enumerating candidate compositions, ptype adapters, and parameter solutions.
|
enumerating candidate compositions, ptype adapters, and parameter solutions.
|
||||||
|
|
@ -166,6 +175,13 @@ class PrimitiveOffer(ABC):
|
||||||
Parameter domains are half-open `[min, max)` ranges, except `(value, value)`
|
Parameter domains are half-open `[min, max)` ranges, except `(value, value)`
|
||||||
is a closed singleton for fixed-size primitives. `None` and `"unk"` ptypes
|
is a closed singleton for fixed-size primitives. `None` and `"unk"` ptypes
|
||||||
are wildcards; incompatible concrete ptypes are rejected by `Pather`.
|
are wildcards; incompatible concrete ptypes are rejected by `Pather`.
|
||||||
|
|
||||||
|
Custom offers must have stable endpoint ptype and rotation throughout their
|
||||||
|
domain. Straight/Bend length domains must have a finite, attained,
|
||||||
|
nonnegative minimum and produce local `x == parameter`; S/U offers produce
|
||||||
|
local `y == parameter`. The planner relies on these invariants when it
|
||||||
|
diagnoses whether a failed constrained route has a preferred minimum-length
|
||||||
|
alternative or is unsupported at every legal length.
|
||||||
"""
|
"""
|
||||||
in_ptype: str | None
|
in_ptype: str | None
|
||||||
out_ptype: str | None
|
out_ptype: str | None
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue