design: crease reference semantics after later folds and flips #28
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Named points are material — they track through every fold (
eval.ml:52-63). Named creases are frozen table-space lines, bound once and never updated by folds orflip(eval.ml:254). Two independent design reviews flagged this split as the core inconsistency of the current language.Consequences: after
flipor any later fold that moves the containing flap,--drefers to a line that no longer coincides with the physical mark. Spec §4.7's rationale for flip's internal canonical axis ("where the sheet lands is irrelevant") holds for material points and is false for frozen lines — results depend on an axis the spec declares arbitrary. Every planned feature that reuses creases across folds (unfold, reverse folds, sinks, layer selection) hits this.To decide (brainstorm, then ADR):
(a,b,c)line type can't represent this; likely wants first-class crease entities in the state (#26).Outcome: ADR + spec §4.7 correction + eval rework.
at,pinch#50Core decision — path (a), named creases are material — is implemented and merged in #43 (
7489ec7).eval.mlbinds a named crease asMaterial (crease_id, line)and pushes it through isometries like a point, so the frozen-line inconsistency is resolved.The remaining open piece — the broken-polyline "use as fold axis" question and the
#(...)/--( --d #(...) )restrict escape hatch — is superseded by #50, which folds it into theatoperator over the bundle model (ADR 0014).Closing as superseded by #50.