@huukhanhnguyen/model / registry/contract
registry/contract
LINEAR_LANE_TYPE
constLINEAR_LANE_TYPE:Record<string,string>
Đ2: what a linear fold lane CARRIES.
Two shapes, not one. A STEP lane is narrow — every step's return is exactly the lane type (material, view…). An ENTITY lane (scene/component/flat) carries the UNION objectData[]: a producer's return names what it CREATES (textEntity → textData[]), the stream it lands in stays mixed. So the law there is "returns a stream", not "equals the lane type" — see tests/typeTable.test.ts's Đ2 case for the exact predicate.
RETURN_LANE_OF
constRETURN_LANE_OF:Record<string,string>
Lane type a fold-role-step method belongs to, derived from its return. Used by validate to place methods without reading attributes.lane.
DERIVED, not listed: a lane's step type is the lane name minus the plural s. That held for most entries and was quietly broken by the rest (image→textures), which is what made the type table unreadable — you could not tell a step type from its name (2026-07-25: that one renamed to texture). Adding a lane now means adding it here only, and the name it implies is the name it must have.
isDataDefinition()
isDataDefinition(
def):def is DataDefinition
ObjectData-stream producer or transform.
Parameters
def
Returns
def is DataDefinition
isDataStreamReturn()
isDataStreamReturn(
returnType):boolean
True when a definition's return is a data stream (list of scene data documents). Used by ExpressionNode unwrap and Group return.
Parameters
returnType
string | null | undefined
Returns
boolean
isStepDefinition()
isStepDefinition(
def):def is StepDefinition
Linear-lane schema-only step.
Parameters
def
Returns
def is StepDefinition
isValueDefinition()
isValueDefinition(
def):def is ValueDefinition
Parameters-header binding (foldRole "binding").
Parameters
def
Returns
def is ValueDefinition