Luxar Viewer API Documentation - v2026.10.19
    Preparing search index...

    Module tests/_conformance/geometry-behaviours

    What each geometry type does — the one table to read.

    Behaviour written once per type drifts. Points and Lines lacked the sorted-append hold GSplats had; a Lines ladder picked against the wrong index space; a mesh ladder silently dropped its texture; a bare GSplats leaf was refused a colormap its wrapper offered. Each was a cell of this table that nobody had written down, so nothing could notice it was empty.

    Every row is one behaviour; every column is a contract geometry type. A cell is either 'yes' or an Absent that names WHY the type does not do it, HOW that is enforced, and WHERE the decision is written. Keyed by GeometryTypeName, so adding a type to the format contract is a compile error here until every row has decided what the new type does.

    Each row names the test file that probes it (probedIn). That file calls defineBehaviourConformance (./define-behaviour-conformance.ts) with the row's id and a per-type probe, which runs every cell against real code: a 'yes' cell asserts the behaviour, an absent cell asserts its declared enforcement. So a cell that claims 'yes' but silently does nothing fails, and so does an absent cell whose type quietly started doing the thing — the table cannot rot in either direction. tests/unit/conformance/geometry-behaviours.test.ts checks the table itself: every row probed exactly once, where it says; every spec reference resolvable; the capability rows equal to GEOMETRY_CAPABILITIES.

    Deliberate asymmetries are as much a part of this table as the symmetries. Mesh is a connected, shaded, indexed surface rather than a set of independent emissive instances, so most of its absent cells trace back to MESH_NODE_SPEC.md §2 (the storage layer does not transfer) and §9 (explicitly out of scope).

    Absent
    BehaviourRow
    ExportAsymmetry
    Enforcement
    Support
    BehaviourId
    GEOMETRY_BEHAVIOURS
    BEHAVIOUR_IDS
    MODULE_FAMILY_ASYMMETRIES
    behaviourRow
    isAbsent