OSS-first docs
These docs teach the open system first: contracts, generated surfaces, runtimes, governance, and incremental adoption. Studio shows up as the operating layer on top, not as the source of truth.
Discriminated union replacing `GraphLayoutKind` from M2.
| kind | Key config | Engine (web / native) | Async chunk | | --- | --- | --- | --- | | `force` | strength, alphaDecay, collisionRadius | d3-force | d3-force.chunk ≤20 KB gz | | `dag` | rankSep, nodeSep, direction | elkjs LAYERED / dagre | elkjs-layout-engine.chunk ≤250 KB gz | | `radial` | innerRadius, outerRadius, angularRange | d3-hierarchy | d3-hierarchy.chunk ≤15 KB gz | | `tree` | nodeSep, levelSep, orientation | d3-hierarchy tidy | d3-hierarchy.chunk ≤15 KB gz | | `swimlane` | laneBy (req), lanes | elkjs BOX / dag fallback | elkjs-layout-engine.chunk ≤250 KB gz | | `time-axis` | xField (req), scale | pure TS | base bundle (sync) |
Migration from M2
import { layoutKindToSpec } from '@lssm-tech/lib.contracts-spec/data-views/layout-spec';
layoutKindToSpec('dag') // → { kind: 'dag' }Remove `layoutKindToSpec` shim in P10 alongside `GraphLayoutKind` removal.