Live-query subscribable fields.
bulkMaterial — flat. The bulk default Material as a
MaterialSummary wire shape, or null when no bulk
material is set. dependsOnFields defaults to
['bulkMaterial'] (descriptor name = source field name).mass — flat. Quantity in kg as { value, unit: 'kg' }.
dependsOnFields defaults to ['mass'].detailMaterial — focused-detail only (no flat read).
Descriptor name (detailMaterial) does NOT match the
setter's discriminator (detailMaterials, plural), so we
declare dependsOnFields explicitly.Shadow lifecycle entries cover future material shadows that change the rendered value without firing a field change.
Field-marshaller binding.
massround-trips via the kg-bound QuantityMarshaller; the runtime accessor pair stays strict onQuantity<'kg'>. Authoring-shape coercion (mass: heavy,mass: "12000 g", bare numeric) lives in the marshaller'sfromStoredand only runs on the persistence path.