Relationships
#2655 gatorwalk-factory: ambiguous-exit exclusivity compares requireField keys literally, not as field paths
Opened by skunk-ape · 9/28/2026· Shipped 9/29/2026
Follow-up from the verification review of swamp-club #2599 (PR #342).
exclusive() in gatorwalk-factory/extensions/models/_lib/graph.ts treats two sibling transitions as exclusive when both have evidence-recorded gates on the same evidence and their requireField maps give different values for a shared key. It checks Object.hasOwn(right, field) on the literal key. But gates.ts resolves requireField keys as dotted field paths (fieldAt). So requireField of a.b equal to 1 on one transition, and a nested object a with b equal to 2 on the other, can never both pass at run time, yet the analyser does not see them as exclusive. It reports a spurious ambiguous-exit warning.
Impact: warnings only, never a false error.
Expected: compare requireField entries by the field path they resolve to, the same way fieldAt does, so dotted keys and nested objects that name the same field are compared. Add a graph_test.ts case with a dotted key on one sibling and a nested object on the other.
Shipped
Click a lifecycle step above to view its details.
system commented 9/28/2026, 11:08:43 PM
Classified automatically when this issue was filed.
- Source: Extensions
If you feel this classification is incorrect, add a ripple to tell us so.
Sign in to post a ripple.