E.18.NET:4.3 - Recurse through finite member paths
The selected direct-member nesting is acyclic. No direct or transitive member path from a network resolves back to that network, and every member path used by a reference is finite. This permits build-the-builder and supply-network recursion without inventing level-1, level-2, or level-3 network kinds.
Cycles among selected cross-flow relation occurrences remain possible when their applicable predicates and constraints permit them. Feedback from operation or evaluation to development is therefore compatible with acyclic membership: the cycle is among those relation occurrences, not in network containment.
E.18 defines the complete FlowPositionRef identity. Import that tuple unchanged; E.18.NET defines only the ExposedFlowPositionRef extension needed for a boundary position reached through one finite member path:
FlowPositionRef := <
transformationFlowStructureRef,
localFlowPositionId
>
ExposedFlowPositionRef := <
networkStructureRef,
memberPath[],
leafFlowPositionRef
>
Every hop in memberPath[] resolves through the preceding network’s direct members. Its final member is the TFS named by leafFlowPositionRef. When the path crosses a nested network, the leaf position must be one of the boundary positions that nested network exposes for the current higher-level use. Two different paths to the same leaf TFS position are two different exposures.
The parent network may compose the finite path and use the exposed boundary. It may not copy or silently flatten the nested member’s internal structure. FlowValuation, PathSliceId, actual fillings, and DesignRunTag qualify use of a position; they are not part of FlowPositionRef or ExposedFlowPositionRef identity.