Build a fully-populated NodeBuildCtx of vi.fn() stubs, with
overrides applied last.
Notable defaults:
registry is a REAL LoaderRegistry — the leaf specs assert on
registry.loaders / failedLoaders membership, so a stub would not do.
deriveNodeViewState resolves to the EFFECTIVE view state, i.e.
overrides.viewState when one is supplied and the default otherwise, so
the derived state and ctx.viewState never disagree. That matches what
the production deriveNodeViewState yields for a node with no
extend_to_all and no nd_transform (production returns an equal copy
rather than the same object; no spec asserts on the identity either way).
the lines/gsplats processors resolve null — their real "nothing staged"
branch. processMeshData has no null branch by contract (and
load-mesh-node dereferences the staged commit with no truthiness guard),
so there is no honest zero-value to default it to; no spec currently
reaches this default — the mesh spec supplies its own resolved commit — so
it is left a bare stub.
lodGroupRegistry is optional on the interface and therefore has NO
default — it comes only from overrides, so nothing forces a spec to
fabricate a registry it never reads. Only load-lod-group-node reads it,
and its spec always supplies one.
Build a fully-populated NodeBuildCtx of
vi.fn()stubs, withoverridesapplied last.Notable defaults:
registryis a REAL LoaderRegistry — the leaf specs assert onregistry.loaders/failedLoadersmembership, so a stub would not do.deriveNodeViewStateresolves to the EFFECTIVE view state, i.e.overrides.viewStatewhen one is supplied and the default otherwise, so the derived state andctx.viewStatenever disagree. That matches what the productionderiveNodeViewStateyields for a node with noextend_to_alland nond_transform(production returns an equal copy rather than the same object; no spec asserts on the identity either way).null— their real "nothing staged" branch.processMeshDatahas no null branch by contract (andload-mesh-nodedereferences the staged commit with no truthiness guard), so there is no honest zero-value to default it to; no spec currently reaches this default — the mesh spec supplies its own resolved commit — so it is left a bare stub.lodGroupRegistryis optional on the interface and therefore has NO default — it comes only fromoverrides, so nothing forces a spec to fabricate a registry it never reads. Onlyload-lod-group-nodereads it, and its spec always supplies one.