The entity index in its columnar (SoA) form — the same packed typed-array
columns StepModelBase compacts the object index into at construction, but
produced directly by the parse so the per-record object phase never exists
(M7; "Structural memory" in the design doc).
Layout mirrors the model's internal columns exactly:
[0, firstInlineElement) top-level records, in parse order (localID)
[firstInlineElement, count) inline entities, in the model's unfold order
expressID covers only the top-level range (inline entities have none).
typeID uses −1 for "no concrete type" (matching the sidecar sentinel);
0 is a valid type (external mapping). The rare records with children —
inline entities or a multi-mapping — are additionally retained as objects
in complexEntries / consumed during the unfold, exactly the set the model
keeps today; everything else is scalars only.
The entity index in its columnar (SoA) form — the same packed typed-array columns
StepModelBasecompacts the object index into at construction, but produced directly by the parse so the per-record object phase never exists (M7; "Structural memory" in the design doc).Layout mirrors the model's internal columns exactly:
[0, firstInlineElement) top-level records, in parse order (localID) [firstInlineElement, count) inline entities, in the model's unfold order
expressIDcovers only the top-level range (inline entities have none).typeIDuses −1 for "no concrete type" (matching the sidecar sentinel); 0 is a valid type (external mapping). The rare records with children — inline entities or a multi-mapping — are additionally retained as objects incomplexEntries/ consumed during the unfold, exactly the set the model keeps today; everything else is scalars only.