# description
The canonical ULC (Universal Luminaire Cutsheet) record. One record describes one attested photometric scenario for a luminaire, with an applicability block that declares which orderable SKU configurations the record covers. Enumerated values are defined in taxonomy.schema.json and referenced here by $ref. Dual-unit conventions (SI authoritative with Imperial companion) apply to every unit-sensitive field. Conformance is computed as three grades (core, standard, full) above an incomplete floor: the reference builder grades the record from its populated fields and stamps the achieved grade into the generated index as `index.conformance_level`, so a record is whatever grade its data earns rather than whatever grade it claims. `incomplete` is the floor, the state of a record that has not yet met core; it always travels with a roadmap and is never a published grade. JSON Schema `required` is used sparingly, for the record envelope (version, identifiers, status, the generated index container, configuration, and the source-files array) and product-family identity rather than for data completeness; the reference validator reports the computed grade plus INFO roadmap guidance toward each higher grade. This schema is machine-readable; docs/authoring-patterns.md explains the four manufacturer authoring patterns this schema supports and how to map real cutsheets into it.

# properties.ulc_version.description
The ULC specification version this record conforms to. Required on every record.

# properties.record_id.description
Stable identifier for this record. Convention: `<manufacturer-slug>-<catalog-slug>-<scenario-slug>` with lowercase ASCII and hyphens. By repository convention matches the filename stem, regardless of whether the file is `.ulc` (canonical records) or `.ulc.json` (authoring templates). Must be unique within a manufacturer's namespace.

# properties.record_status.description
Commercial lifecycle status of the product this record describes.

# properties.record_status_as_of.description
Calendar date on which the record_status was last verified. ISO 8601 date (YYYY-MM-DD).

# properties.index.description
Denormalized scan surface for AI agents, search indexers, and filter UIs. Every field is a projection of authoritative values from the deeper blocks below. GENERATED, NOT HAND-AUTHORED: produced deterministically by the `ulc build-index` reference CLI (see `tools/validator/`) from the deep blocks and stamped with `x-ulc-generated: true` plus a `builder_version` so consumers can detect stale indices. Manufacturers never type these values; their PIM export or ULC CLI writes them. Drift is prevented by construction, because the builder is a pure function of the deep blocks.

# properties.product_family.description
Family-level identity and metadata shared by every ULC record derived from the same cutsheet. Populated once by the manufacturer's PIM and replicated into each record in the family.

# properties.configuration.description
The specific photometric scenario this record represents. Identifies the tested axes and tested conditions that anchor the record's measurements.

# properties.applicability.description
Declares the range of orderable SKU configurations this record's measurements apply to. Covers axes where multiple order-code values share the same photometric record, with derivation rules for scaled values (CCT multipliers, per-foot scaling, voltage-independence rationale).

# properties.electrical.description
Electrical measurements and nominal values at the luminaire input.

# properties.photometry.description
Photometric measurements including total luminous flux, intensity distribution summary, zonal lumens, beam and field angles, UGR, and BUG classification when applicable.

# properties.colorimetry.description
Color measurements including nominal and measured CCT, Duv, CRI, and TM-30 color-rendition metrics.

# properties.alpha_opic_metrics.description
Alpha-opic and melanopic metrics per CIE S 026 and IES RP-46-23. Includes per-channel alpha-opic efficacies and the melanopic daylight efficacy ratio used for circadian metric calculation.

# properties.flicker_measurements.description
Temporal light artefact (TLA) measurements per LM-90-20 and metric values per CIE TN 006 and IEEE 1789.

# properties.outdoor_classification.description
Outdoor luminaire classification per TM-15 (LCS and BUG), applicable only to outdoor fixtures.

# properties.exit_sign.description
Exit-sign dataset, present on records whose `product_family.primary_category` is `exit_sign` (categories a and c). Carries the legend, illumination mode and technology, geometry, directional indicators, and the mode-specific photometrics (face luminance, face illuminance, contrast ratio, tritium rated life, photoluminescent charging illuminance). Optional and additive: an identity-only sign record with an empty `exit_sign` block is schema-valid and grades incomplete. Internally illuminated signs are powered products that also author the `emergency` block; unpowered modes (externally illuminated, self-luminous, photoluminescent) carry their power story in `illumination_mode` alone.

# properties.emergency.description
Emergency-power dataset, authored by every product with an electrical emergency-power story: dedicated emergency luminaires (`primary_category: emergency_luminaire`), internally illuminated exit signs, combo exit/emergency units, and normal fixtures carrying a factory emergency-power option. `emergency_role` and `power_source` are required members. Not for UL 1994 photoluminescent egress-path-marking products, which are a different product class. See `exit_sign` for the sign half of a combo unit.

# properties.operating_point.description
Declared operating conditions at which measured values were taken (input voltage, ambient temperature, drive current).

# properties.test_conditions.description
Additional measurement-context metadata that qualifies attested values (stabilization method, nonstandard-condition flags, temperature monitoring point).

# properties.instrumentation.description
Equipment and facility metadata for the laboratory that produced the measurements (goniometer type, photometric coordinate system, spectroradiometer).

# properties.corrections_applied.description
Corrections applied during measurement or data reduction (self-absorption, stray light, spectral mismatch, f1' correction).

# properties.uncertainty.description
Reported measurement uncertainty values with coverage factor.

# properties.thermal_derating.description
Thermal performance curves relating case or ambient temperature to flux, efficacy, or color per LM-82-20.

# properties.lumen_maintenance_package.description
Package-level lumen maintenance per LM-80 and TM-21 for each LED package used in the luminaire. One luminaire may reference multiple packages.

# properties.lumen_maintenance_luminaire.description
Luminaire-level lumen maintenance. Supports three frameworks: TM-28 projection (direct or combined extrapolation), CIE 97 Luminaire Maintenance Factor tables, or a bare manufacturer-rated claim with no cited method.

# properties.chromaticity_shift_projection.description
Projected chromaticity shift over luminaire life per TM-35.

# properties.sustainability_declaration.description
Structured sustainability attestation (Declare label and similar). Preserves the ingredient list, LBC Red List tier, expiration date, and document identifier.

# properties.compatible_accessories.description
Mechanical accessories (junction boxes, plaster frames, mounting rings, canopies, conduits) that are compatible with this luminaire SKU but are ordered separately under their own catalog numbers. Accessories that do not change photometry are listed here rather than getting their own ULC records.

# properties.source_files.description
Source files from which this record derives its data. Each file is referenced by filename, optional URL, and SHA-256 content hash. Files are not embedded. The `source_files` key is part of the record envelope, so it is present on every record, but the array may be empty (`minItems` 0) for an incomplete record still being authored, and its entries are neither required nor graded. The graded core cutsheet item is the family-level pointer `product_family.cutsheet`; `source_files[]` is the integrity-tracked provenance manifest for whatever documents a record cites.

# properties.attestations.description
External program attestations (listings, certifications, test-method conformance). Each attestation carries a program identifier, value type, and optional measured_quantities array listing the ULC field paths it covers. Attestations may be absolute, option-conditional, or case-by-case verification-required.

# properties.extensions.description
Top-level escape hatch for values that do not fit the core schema. `manufacturer_specific` holds vendor-specific fields; `experimental` holds values under active review for future promotion into the main schema. Consumers should treat extensions as informational only.

# $defs.Index.description
Generated summary view. Every field projects from an authoritative deep-block value. The builder (`ulc build-index`, under `tools/validator/`) is the single source of these projections; manufacturers never hand-author them. Selection policies the builder applies: (1) `nominal_cct_k` = `configuration.tested_conditions.nominal_cct_at_test`; (2) `nominal_total_lumens` = `photometry.total_luminous_flux_lm.value` at the tested baseline, not `declared_by_cct` derivatives; (3) `nominal_input_power_w` = `electrical.input_power_w.value`; (4) `primary_category` = `product_family.primary_category`; (5) `source_file_types_present` = deduplicated sorted list of `source_files[].file_type` values; (6) other fields follow analogous rules documented in the builder's source. Consumers reading `x-ulc-generated: true` can treat the index as trustworthy; absence or a stale `builder_version` is the signal to re-run the builder.

# $defs.Index.properties.x-ulc-generated.description
Marker asserting this index was produced by the canonical builder. Always true in valid records; absence is the signal that the index was hand-edited or predates a builder revision.

# $defs.Index.properties.builder_version.description
Semver of the builder that produced this index. Consumers compare against the current builder version to detect stale indices.

# $defs.Index.properties.conformance_level.description
The conformance grade this record achieves: one of the three grades (core, standard, full) or the incomplete floor. GENERATED, NOT HAND-AUTHORED: the reference builder computes it from the record's populated fields (applying the conditional rubric: directional categories require a beam angle, pure RGB/RGBA fixtures with no white channel skip CRI, outdoor-site products require BUG at standard, and so on) and stamps it here like every other index value. `incomplete` is the floor, below core: a record that has not yet met a core requirement. Because it is a builder projection, a hand-tampered value fails the build-parity check just like any other index field, so the grade a record claims is the grade its data actually achieves.

# $defs.Index.properties.bug_rating.description
Short string form of BUG (for example `B1-U0-G1`). Computed from `outdoor_classification.bug_rating` when present.

# $defs.Index.properties.attestation_programs.description
Flat array of every AttestationProgram value claimed anywhere in the record (shared_attestations, attestations[], and sustainability_declaration declaration types that correspond to an external certified program). Deduplicated. Lets consumers filter by certification without walking all attestation records. Manufacturer-self-operated sustainability declaration types that are not certified external programs (for example `manufacturer_recycle_program`) intentionally do not contribute an entry here; they appear only in the `sustainability_declaration.declaration_type` field and are filterable from there when needed.

# $defs.Index.properties.search_keywords.description
Optional free-text tokens the manufacturer wants indexed. Populated by the builder from `product_family.family_display_name`, `product_family.catalog_line`, and `configuration.scenario_label`, then deduplicated and sorted for deterministic output. Future builder versions may ingest additional manufacturer-tagged fields; the exact set is a builder-version policy, not a schema-level contract.

# $defs.Index.properties.source_file_types_present.description
Deduplicated sorted list of `source_files[].file_type` values. Lets AI agents and retrieval systems quickly determine which source formats (PDF, IES, LDT, TM-33, ULD, GLDF) exist for this record without walking the full `source_files` array.

# $defs.Index.properties.achievements.description
Product Achievements view: per-theme third-party program qualifications computed from the record's Master Ledger, orthogonal to `conformance_level`. GENERATED, NOT HAND-AUTHORED. `themes` carries seven fixed theme keys, of which six are `required`, each an AchievementTheme; the container is open (no `additionalProperties` bar) so future themes add without breaking consumers. `documented_count` is the factual count of themes at the `documented` state; it is the only sanctioned rollup, and there is deliberately no weighted or overall achievement grade.

# $defs.Index.properties.achievements.properties.themes.description
The seven fixed achievement themes, all emitted by the reference builder.

# $defs.Index.properties.restricted_substances_declared.description
Restricted-substances programs declared anywhere in the record's Master Ledger (RoHS, REACH, Prop 65, and similar). GENERATED, NOT HAND-AUTHORED. Deduplicated and sorted. Surfaced as a compliance flag beside achievements, never inside them: restricted-substances compliance is a legal floor, not a prestige achievement. An empty array means nothing was declared.

# $defs.AchievementTheme.description
One theme's computed state inside `index.achievements.themes`. GENERATED, NOT HAND-AUTHORED. `state` is the theme's achievement state. `programs` lists the qualifying AttestationProgram tokens found in the ledger for this theme, deduplicated and sorted. `source_attestation_ids` lists the `attestation_id` values of contributing attestations (best-effort, since `attestation_id` is optional on an attestation). `evidence_present` is true when at least one contributing attestation carries an attached, non-disqualified evidence document. `best_metric_ref` names the `attestation_id` whose `sustainability_metric` best represents the theme; it is omitted when no qualifying metric exists.

# $defs.Provenance.description
Traceability metadata attached to an individual field value. Every extracted, derived, or computed value should carry provenance so consumers can verify how each number was produced.

# $defs.Provenance.properties.method.description
How the value was produced from its source.

# $defs.Provenance.properties.confidence.description
Optional confidence score in the range [0, 1] when the value was inferred or extracted with uncertainty.

# $defs.Provenance.properties.conflict_notes.description
Optional note recording a disagreement between two sources for the same value.

# $defs.Provenance.properties.attestation_ref.description
Reference to an attestation record's test ID when the value is anchored to a specific lab attestation. Expected on fields with value_type `measured`, so a measured quantity can be traced to its lab attestation.

# $defs.Provenance.properties.base_attestation_ref.description
Reference to the base measured attestation from which this value was derived by simulation, extended photometry, or scaling.

# $defs.Provenance.properties.simulation_tool.description
Name and version of the optical simulation tool, when method is `optical_simulation`.

# $defs.Provenance.properties.extension_method.description
The specific extension rule applied, when method is `extended_photometry` or `scaled`.

# $defs.DualUnitLength.description
Length value with mandatory SI (mm) and Imperial (in) representations. SI is authoritative per the ULC spec; the Imperial representation is the required derived companion.

# $defs.DualUnitMass.description
Mass value with mandatory SI (kg) and Imperial (lb) representations.

# $defs.DualUnitTemperature.description
Temperature value with mandatory Celsius and Fahrenheit representations.

# $defs.DualUnitMassPerLength.description
Linear mass rate (mass per unit length) with mandatory SI (kg per meter) and Imperial (lb per foot) representations. Used for linear fixtures where total mass scales with fixture length. Distinct from DualUnitMass, which represents an absolute mass. SI is authoritative; Imperial is the required derived companion.

# $defs.DualUnitArea.description
Area value with mandatory SI (square meters) and Imperial (square feet) representations. Used for Effective Projected Area (EPA) on pole-mounted outdoor fixtures. SI is authoritative; Imperial is the required derived companion.

# $defs.ProvenancedNumber.description
A single numeric value with its unit, regulatory value type, and provenance. Used for single-unit quantities (lumens, watts, CRI, Duv, candela, efficacy).

# $defs.FileReference.description
Reference to a source file by filename, optional URL, and mandatory SHA-256 content hash. The hash is the integrity anchor; URLs may rot.

# $defs.SourceFile.description
One source file that contributes data to this ULC record.

# $defs.SourceFile.then.properties.file_type.description
A photometry_format is only meaningful on a photometric data file, so it is constrained to the IES, LDT, and TM-33 source-file types.

# $defs.ProductFamily.description
Cutsheet-level identity and metadata shared by every ULC record in the family.

# $defs.ProductFamily.properties.family_id.description
Stable slug grouping all records from the same cutsheet.

# $defs.ProductFamily.properties.manufacturer.properties.parent_manufacturer_slug.description
Optional parent company slug when the manufacturer is a subsidiary (for example Vode is a subsidiary of Lumenpulse).

# $defs.ProductFamily.properties.technical_region.description
Market-region configuration of the fixture. Captures the voltage and frequency variant of the SKU family. Many product families ship parallel North American, European, and Japanese variants sharing optics and light engines but with different drivers and certifications; this field makes the market variant explicit for consumer filter UIs.

# $defs.ProductFamily.properties.shared_mechanical.properties.reflector_material.description
Material of the internal reflector or darklight cone, when the optic uses one. Free-string to accommodate manufacturer-specific descriptions such as 'polymer, aluminum vaporized, silver, specular' (a typical architectural darklight reflector). A future revision may promote this to a closed enum.

# $defs.ProductFamily.properties.shared_mechanical.properties.ambient_operating_range.description
Declared ambient operating temperature range for the fixture. Dual-unit per spec: Celsius authoritative, Fahrenheit is the required derived companion.

# $defs.ProductFamily.properties.physical_dimensions.description
Luminaire geometric and mass characteristics. All dimensional fields use the dual-unit SI-authoritative pattern via DualUnitLength and DualUnitMass. Not every field applies to every product category; authors populate only what the cutsheet publishes. The block is flexible by design so indoor recessed, pendant, pole-top outdoor, and linear products can each use the appropriate subset of slots.

# $defs.ProductFamily.properties.physical_dimensions.properties.overall_diameter.description
Outside diameter of the luminaire for round fixtures.

# $defs.ProductFamily.properties.physical_dimensions.properties.overall_length.description
Overall length for linear or rectangular fixtures.

# $defs.ProductFamily.properties.physical_dimensions.properties.overall_width.description
Overall width for rectangular or non-round fixtures.

# $defs.ProductFamily.properties.physical_dimensions.properties.overall_height.description
Overall height for pole-top, bollard, pendant, or wall-mount fixtures. For recessed fixtures, use recess_depth instead.

# $defs.ProductFamily.properties.physical_dimensions.properties.luminaire_mass.description
Mass of the luminaire as published on the cutsheet. For Pattern D linear fixtures where mass scales with length, populate linear_mass_per_foot instead or in addition.

# $defs.ProductFamily.properties.physical_dimensions.properties.linear_mass_per_foot.description
Per-length mass rate for linear fixtures where total mass scales with fixture length (typical of Pattern D products). Pairs with photometry.per_length_normalized.lumens_per_foot. Uses DualUnitMassPerLength, not DualUnitMass, because the quantity is a mass rate (kg per meter, lb per foot), not an absolute mass.

# $defs.ProductFamily.properties.physical_dimensions.properties.lens_width.description
Width of the light-emitting lens or optical opening, when distinct from the overall luminaire width.

# $defs.ProductFamily.properties.physical_dimensions.properties.ceiling_aperture.description
For recessed fixtures, the diameter (or effective diameter) of the ceiling cut-out the fixture requires.

# $defs.ProductFamily.properties.physical_dimensions.properties.recess_depth.description
For recessed fixtures, the depth above the ceiling plane that the fixture housing occupies.

# $defs.ProductFamily.properties.physical_dimensions.properties.accommodated_ceiling_thickness_range.description
For recessed fixtures, the minimum and maximum ceiling thickness the standard mounting hardware accommodates.

# $defs.ProductFamily.properties.physical_dimensions.properties.connection_cable_length.description
Length of an attached connection cable (pre-installed pigtail or tether) if the cutsheet publishes it.

# $defs.ProductFamily.properties.physical_dimensions.properties.driver_dimensions.description
Overall dimensions of a remote or integral driver housing when the cutsheet publishes them.

# $defs.ProductFamily.properties.physical_dimensions.properties.epa.description
Effective Projected Area for pole-mounted outdoor fixtures under AASHTO 2013 wind-loading analysis. Uses DualUnitArea so SI (m2) and Imperial (ft2) are both required, matching the ULC dual-unit policy.

# $defs.ProductFamily.properties.shared_attestations.description
Attestations that apply to every SKU in the family without qualification. SKU-specific or option-conditional attestations live in the top-level `attestations[]` array instead.

# $defs.Configuration.description
The specific photometric scenario this record represents. Fields describe what was tested, not what the record's measurements apply to (that is the applicability block's job).

# $defs.Configuration.properties.photometric_scenario_id.description
Identifier for the photometric scenario within the family. Typically a slug summarizing the tested axes.

# $defs.Configuration.properties.catalog_number.description
The specific manufacturer-assigned catalog number or order code this record represents. Populated by Pattern A manufacturers who publish one cutsheet per SKU. Pattern B manufacturers whose scenario covers a catalog pattern typically omit this field and rely on `applicability.applicable_catalog_pattern` plus `record_id` for identification.

# $defs.Configuration.properties.scenario_label.description
Human-readable description of the tested scenario.

# $defs.Configuration.properties.tested_axes.description
Axes of the configurator that this scenario's measurement varies. Each axis names its manufacturer-label, optional ULC category mapping, and tested value.

# $defs.Configuration.properties.tested_conditions.description
Conditions fixed during the test that anchor this record's measurements.

# $defs.Configuration.properties.source_ies_ref.description
Reference to the IES file this scenario's photometry anchors to, if applicable. Matches a source_files entry.

# $defs.Applicability.description
Declares the range of orderable SKU configurations this record's measurements apply to. This is the mechanism that lets one ULC record cover many orderable SKUs without duplication.

# $defs.Applicability.properties.fixed_axes.description
Order-code axes that must match a fixed value for this record to apply.

# $defs.Applicability.properties.covered_axes.description
Order-code axes where multiple values share this record's photometry. Each entry lists the covered values and optionally a derivation rule (multiplier table, linear scaling, voltage-independence rationale).

# $defs.Applicability.properties.excluded_combinations.description
Combinations that are orderable elsewhere in the family but not covered by this record.

# $defs.Applicability.properties.applicable_sku_count_estimate.description
Informational count of orderable SKUs this record covers. Not used for validation.

# $defs.CoveredAxis.description
One order-code axis covered by a record's applicability block.

# $defs.CoveredAxis.properties.values.description
Order-code values for this axis that share the record's photometry.

# $defs.CoveredAxis.properties.rationale.description
Why these values share one record (for example `regulated driver renders voltage variance photometrically immaterial` or `finish is cosmetic`).

# $defs.CoveredAxis.properties.derivation.description
Optional derivation rule for values that are not photometrically identical to the baseline but derive from it by a disclosed method.

# $defs.CoveredAxis.properties.excludes.description
Values that are part of this axis's order-code menu but are NOT covered by this record.

# $defs.DerivationRule.description
Manufacturer-declared rule for deriving per-axis values from a baseline measurement. Examples: CCT multiplier table (Selux), per-foot linear scaling (Vode), wattage-tier scaling, voltage step-down delta.

# $defs.DerivationRule.properties.multiplier_table.description
Keyed multiplier table when the method produces values by multiplying a baseline. Keys are axis values, values are multipliers relative to the baseline.

# $defs.DerivationRule.properties.linear_rate.description
Per-unit rate for linear scaling (for example lumens per foot).

# $defs.DerivationRule.properties.reference.description
Citation for where on the cutsheet the rule is published (for example `cutsheet_page_10_table`).

# $defs.Electrical.description
Electrical quantities measured at the luminaire input.

# $defs.Electrical.properties.dimming_method.description
Underlying electrical dimming method (CCR, PWM, or hybrid). Independent of `driver_protocol`, which is the signaling layer. Authors populate this when the cutsheet publishes the method; absent if the method is not declared.

# $defs.Electrical.properties.dimming_range_percent.description
Minimum and maximum dim levels as percentages of full output. For example a 3%-100% dim range captures the common architectural driver range. `min` is the lowest stable output the fixture can sustain before turning off; `max` is full output. Both values are manufacturer-declared at this level; actual on-site dim behavior also depends on the dimmer or controller. Both `min` and `max` are required when this block is present so that partial ranges do not silently validate.

# $defs.Electrical.properties.dimming_curve.description
Optional dim-command-to-output mapping (logarithmic or linear). Independent of `dimming_method`; populate when the cutsheet or driver datasheet publishes it.

# $defs.Electrical.properties.adaptive_lighting_modes.description
Built-in adaptive control capabilities the luminaire provides (integrated photocell, motion sensing, scheduled dimming, networked control). Multiple values may apply. Populate when the driver protocol is controllable and the cutsheet declares these behaviors.

# $defs.Electrical.properties.led_module_power_w.description
Optional LED-module-only input power (typically smaller than luminaire input due to driver losses). Useful when the cutsheet distinguishes module from luminaire.

# $defs.Photometry.description
Luminous flux, intensity, beam geometry, efficacy, UGR, and BUG summary.

# $defs.Photometry.properties.led_module_luminous_flux_lm.description
Optional LED-module-only flux (upstream of luminaire optics). Paired with led_module_power_w when the cutsheet distinguishes module from luminaire.

# $defs.Photometry.properties.cutoff_angle_from_horizontal_deg.description
The angle above horizontal beyond which no direct light escapes the fixture. An architectural glare-control specification typical of downlights and indirect architectural fixtures. Distinct from the deprecated IES cutoff classification (which is an outdoor four-class scheme). A value of 40 means no direct light is emitted above 40 degrees from horizontal.

# $defs.Photometry.properties.ugr_4h_8h.description
Unified Glare Rating for the CIE 4H/8H reference room geometry. Published by manufacturers of interior architectural fixtures for European glare assessments.

# $defs.Photometry.properties.ugr_4h_8h_bound_operator.description
When present, indicates the UGR value is a declared bound rather than a specific measured value. Pairs with `ugr_4h_8h`. Use `lte` for manufacturer claims of the form 'UGR as low as X' where X is the best achievable value across the fixture's supported optics or dimming configurations. Absence means the UGR value is a specific point estimate at the tested scenario.

# $defs.Photometry.properties.zonal_lumens.description
Luminous flux summed over zonal angle bands (for example 0-30, 0-40, 0-60, 0-90, 90-180 degrees).

# $defs.Photometry.properties.per_length_normalized.description
For linear products, per-unit-length photometric values that scale with fixture length.

# $defs.Photometry.properties.declared_by_cct.description
Manufacturer-declared photometric values at CCTs other than the tested baseline, derived via a CCT multiplier table or similar rule. See applicability.covered_axes.CCT for the derivation context.

# $defs.Photometry.properties.declared_by_length.description
Manufacturer-declared photometric values at fixture lengths other than the tested baseline, derived via linear per-foot (or per-meter) scaling. See applicability.covered_axes.length for the derivation context. Used by Pattern D linear products (for example Vode Nexa linear pendants with published lm/ft and W/ft rates). Each entry declares a specific length via DualUnitLength and the length-scaled quantities at that length. Pairs with per_length_normalized, which carries the per-unit-length rates themselves.

# $defs.Colorimetry.description
Color metrics including CCT, Duv, CRI, and TM-30 color rendition.

# $defs.Colorimetry.properties.cri_per_sample.description
Optional per-sample CIE 13 CRI values (R1 through R15).

# $defs.Colorimetry.properties.tm_30.properties.reference_illuminant_type.description
TM-30 reference illuminant regime. Derivable by definition from the test-source CCT (the reference illuminant CCT equals the test-source CCT), so it is an explicitness/interop convenience rather than an independently authored value.

# $defs.Colorimetry.properties.tm_30.properties.pvf_code.description
Preference/Vividness/Fidelity two-character code per TM-30-24: a letter (P / V / F) identifying the design-intent axis, followed by a level digit (1-3). Example values: `P2`, `V1`, `F3`. A single PVF code expresses the highest-priority design intent level achieved.

# $defs.Colorimetry.properties.tm_30.properties.rf_h_per_bin.description
Local chroma shift / hue shift / local fidelity per hue bin (16 bins).

# $defs.AlphaOpicMetrics.description
Per CIE S 026 and IES RP-46-23. Melanopic DER (MDER) is the most commonly published value on cutsheets.

# $defs.AlphaOpicMetrics.properties.reference_illuminant.description
Reference illuminant for alpha-opic DER calculations. Per CIE S 026, always D65.

# $defs.AlphaOpicMetrics.properties.standard_observer.description
Colorimetric observer used. Per CIE S 026, always the CIE 1931 2-degree standard observer.

# $defs.AlphaOpicMetrics.properties.melanopic_der.description
Melanopic Daylight Efficacy Ratio (MDER / gamma_mel,v,D65). Multiplied by photopic illuminance to compute MEDI (Melanopic Equivalent Daylight Illuminance).

# $defs.AlphaOpicMetrics.properties.per_channel.description
Alpha-opic efficacy of luminous radiation per photoreceptor channel.

# $defs.FlickerMeasurements.description
TLA metrics per LM-90-20, CIE TN 006, and IEEE 1789. Values may be measured scalars or manufacturer-rated upper bounds.

# $defs.FlickerMeasurements.properties.metrics.items.properties.bound_operator.description
Used when the manufacturer declares an upper bound (`<=`) rather than a specific measured value.

# $defs.OutdoorClassification.description
TM-15 LCS and BUG classification for outdoor luminaires.

# $defs.OperatingPoint.description
Declared operating conditions at which measured values were taken.

# $defs.CorrectionsApplied.description
Corrections performed during measurement or data reduction.

# $defs.Uncertainty.description
Reported expanded uncertainty values with coverage factor per GUM conventions.

# $defs.ThermalDerating.description
Flux, efficacy, and color shift vs. case or ambient temperature per LM-82-20.

# $defs.ThermalDerating.properties.curves.items.properties.temperature_points_c.description
Temperature sample points in degrees Celsius. Standards-native Celsius exception to the dual-unit rule: LM-82-20 and equivalent standards publish these arrays in Celsius only, and this field mirrors the source data verbatim. Consumers needing Fahrenheit convert at read time.

# $defs.LumenMaintenancePackageEntry.description
Per-package LM-80 data and TM-21 projection. A luminaire using multiple LED packages has one entry per distinct package.

# $defs.LumenMaintenanceLuminaire.description
Framework-aware block. The framework field selects which sub-block applies. Multiple frameworks may coexist if the cutsheet publishes more than one.

# $defs.LumenMaintenanceLuminaire.properties.cie_97_lmf_table.description
Luminaire Maintenance Factor values the manufacturer declares for their fixture across the four standardized CIE 97 ambient cleanliness categories (pure / clean / normal / dirty) at the three standardized cleaning intervals (1 / 2 / 3 years). These are NOT site-specific installation inputs: they are reference categories defined by CIE 97 so manufacturers can publish comparable LMF data. This field therefore describes a declared capability of the fixture (rubric filter 2), not project or installation context. Specifiers pick the row that matches their installation conditions when computing project-specific maintenance factors downstream.

# $defs.LumenMaintenanceLuminaire.properties.cie_97_lmf_table.properties.lmf_by_cleanliness_and_interval.description
Array of LMF values keyed by the CIE 97 reference conditions. The manufacturer supplies one entry per (interval, cleanliness) combination they publish; typical cutsheets publish all 12.

# $defs.LumenMaintenanceLuminaire.properties.cie_97_lmf_table.properties.llmf_by_hours.description
Lamp Lumen Maintenance Factor by operating hours.

# $defs.LumenMaintenanceLuminaire.properties.manufacturer_rated_claim.description
Bare manufacturer claim like `L70 > 50,000h` or `L80 > 60,000h` with no cited method. Present when declaration_framework is `manufacturer_rated_claim`.

# $defs.LumenMaintenanceLuminaire.properties.manufacturer_rated_claim.properties.claim_type.description
Maintenance threshold being claimed (L70, L80, L90, L95).

# $defs.LumenMaintenanceLuminaire.properties.manufacturer_rated_claim.properties.failure_percent.description
Claimed cumulative failure rate at the claimed hours (for example `0.1%` failure at 50,000 hours).

# $defs.SustainabilityDeclaration.description
Structured representation of a Declare label or similar sustainability attestation.

# $defs.SustainabilityDeclaration.properties.declaration_type.description
Which sustainability program the declaration belongs to.

# $defs.CompatibleAccessory.description
Mechanical accessory (junction box, plaster frame, mounting ring, canopy, conduit) compatible with this luminaire but ordered separately. Accessories that alter fixture photometry are modeled as separate ULC records and referenced via their own record_id instead of this block.

# $defs.CompatibleAccessory.properties.changes_photometry.description
True when the accessory changes fixture photometry. Accessories with changes_photometry=true should also have their own ULC record linked via `accessorized_record_ref`.

# $defs.CompatibleAccessory.properties.is_compatible_with_this_sku.description
Whether the accessory is compatible with the specific SKU configuration this record represents. Default true. Set to false when the cutsheet explicitly excludes the accessory from the record's SKU (for example when a junction box does not fit the shortest length variant of a linear fixture). Consumers filtering accessory compatibility should respect this flag before presenting the accessory as orderable alongside this SKU.

# $defs.CompatibleAccessory.properties.incompatibility_reason.description
Free-text explanation of why is_compatible_with_this_sku is false. Required when is_compatible_with_this_sku is false; should be omitted otherwise.

# $defs.Attestation.description
An attestation claim against this ULC record. An attestation may be absolute (applies always), option-conditional (applies when specific order-code options are selected), or case-by-case (requires per-project manufacturer verification). The measured_quantities array lists ULC field paths the attestation covers so consumers can verify coverage.

# $defs.Attestation.properties.attestation_id.description
Stable identifier for this attestation within the record (for example `lm79_selux_aya_sr_ho`). Used as the target of `provenance.attestation_ref` from individual values.

# $defs.Attestation.properties.list_date.description
Publication date of the substance/candidate list revision a list-versioned badge was assessed against (for example a REACH SVHC candidate list update, a California Prop 65 list revision, or a conflict-minerals 3TG reporting period). Optional; pairs with `list_version` to make a list claim precise without exposing the list text.

# $defs.Attestation.properties.list_version.description
Version or revision label of the substance/candidate list a list-versioned badge was assessed against (for example the REACH SVHC candidate list revision identifier). Optional.

# $defs.Attestation.properties.measured_quantities.description
JSON paths of ULC fields this attestation covers. Each covered field's `provenance.attestation_ref` is expected to reference this attestation's `attestation_id`.

# $defs.Attestation.properties.applicability.description
Order-code conditions under which this attestation applies (for option-conditional attestations like Chicago Plenum requiring the CPP option).

# $defs.Attestation.properties.verification.description
For case-by-case attestations (BAA, BABA, and similar), declares that manufacturer confirmation is required before a consumer can propagate the claim downstream.

# $defs.Attestation.properties.issuing_authority.description
Named operator of the program, for programs run by more than one operator (for example the several EPD program operators). Optional descriptive data; it never affects the computed achievement state.

# $defs.Attestation.properties.sustainability_metric.description
Optional quantitative payload for a sustainability attestation, hanging off the attestation so the numbers inherit its status, evidence, and expiry. `ceam_score` is the TM66 CEAM design score (0 to 4). `embodied_carbon_kgco2e` is a declared embodied-carbon figure; when it is present, `embodied_carbon_scope` and `embodied_carbon_functional_unit` are required so the number is never ambiguous about its life-cycle boundary or its declared unit. `c2c_overall_level` carries a Cradle to Cradle overall rating. `method_variant` records a regional or method sub-variant (for example a TM65 national annex such as TM65NA).

# $defs.Attestation.properties.sustainability_metric.properties.embodied_carbon_kgco2e.description
Declared embodied-carbon figure in kilograms of CO2 equivalent (kg CO2e). Standards-native single-unit exception to the dual-unit rule: EPD / ISO 14025, TM65, and TM66 publish embodied carbon in kg CO2e only, with no Imperial companion used in life-cycle-assessment practice, so ULC records it SI-native (the same treatment as the cd/m2 luminance and LM-82 Celsius exceptions). The required embodied_carbon_scope and embodied_carbon_functional_unit fix the life-cycle boundary and the declared unit basis, so the single number is unambiguous.

# $defs.Extensions.description
Escape hatch for values outside the core schema. Treated as informational by validators.

# $defs.Extensions.properties.manufacturer_specific.description
Vendor-specific fields keyed by manufacturer slug.

# $defs.Extensions.properties.experimental.description
Fields under active review for promotion into the main schema.

# $defs.ExitSign.description
The exit-sign product data for records whose primary_category is exit_sign (categories a and c). Every field is optional; grading, not schema, drives completeness, so an identity-only sign record with an empty exit_sign block is schema-valid. illumination_mode is the conditional driver for the sign profile (see ExitSignIlluminationMode). Legend geometry uses DualUnitLength (SI authoritative); code minimums such as the NFPA 101 / IBC 6-inch letter height live in field descriptions, not schema constraints, because ULC records what a product is and leaves conformance to the authority having jurisdiction.

# $defs.ExitSign.properties.illumination_mode.description
How the legend is illuminated; the sign profile's conditional driver.

# $defs.ExitSign.properties.illumination_technology.description
The self-emitting technology within the illumination mode (descriptive granularity, not gated).

# $defs.ExitSign.properties.legend_text.description
The legend text, for example "EXIT". Free text so non-English legends are representable.

# $defs.ExitSign.properties.legend_color.description
Legend color; NFPA 101 and local codes govern the required color.

# $defs.ExitSign.properties.legend_height.description
Letter height. Code context: NFPA 101 / IBC set a 6-inch (about 152 mm) minimum for illuminated signs; recorded here as product data, not as a conformance assertion.

# $defs.ExitSign.properties.stroke_width.description
Legend stroke width. Code context: NFPA 101 / IBC set a minimum stroke (for example 3/4 inch, about 19 mm) for externally illuminated signs.

# $defs.ExitSign.properties.letter_width.description
Legend letter width, an externally-illuminated-sign geometry detail (IBC 1013.6.1 context).

# $defs.ExitSign.properties.letter_spacing.description
Spacing between legend letters, an externally-illuminated-sign geometry detail (IBC 1013.6.1 context).

# $defs.ExitSign.properties.directional_indicator.description
Directional chevrons on the sign face (NFPA 101). Declare ["none"] explicitly when the sign carries no chevron; "none" is mutually exclusive with any real direction.

# $defs.ExitSign.properties.rated_viewing_distance_ft.description
The UL 924-marked rated viewing distance in feet (string bin, NominalCCT convention). Independent of letter height, never derived from it.

# $defs.ExitSign.properties.sign_face_luminance_cd_per_m2.description
Measured luminance of the illuminated legend face, in cd/m2. Primary photometric datum for photoluminescent and self-luminous signs (the study's roughly 0.06 fL floor); fL is not stored (SI authoritative).

# $defs.ExitSign.properties.face_illuminance_lx.description
Illuminance on the legend face for externally illuminated signs, in lux. Code context: the 5 fc figure is about 54 lx (IBC 1013.6.1 / NFPA 101).

# $defs.ExitSign.properties.contrast_ratio.description
Legend-to-background contrast ratio for externally illuminated signs (NFPA 101 context: at least 0.5). Unit "ratio".

# $defs.ExitSign.properties.tritium_rated_life_years.description
Rated life of a self-luminous tritium sign, in years (catalog tier such as 10, 15, or 20; NRC 10 CFR 31.5 governs the sealed source and its disposal path). A bare number.

# $defs.ExitSign.properties.min_charging_illuminance_lx.description
Minimum ambient illuminance required to charge a photoluminescent sign, in lux (UL 924 context).

# $defs.Emergency.description
The emergency-power data for products with an electrical emergency-power story (UL 924 context). emergency_role and power_source are required members: the block is meaningless without them. Authored by dedicated emergency luminaires, internally illuminated exit signs, combo exit/emergency units, and normal fixtures with a factory emergency-power option. An externally-illuminated combo sign authors the block (its heads are battery-powered) but its face has no powered-face story, so power_source is not a core field for it and its battery depth surfaces as optional enrichment rather than a standard gate. Not for UL 1994 photoluminescent egress-path-marking products, which are a different product class.

# $defs.Emergency.properties.emergency_role.description
What emergency function this block describes (required).

# $defs.Emergency.properties.power_source.description
How the product is energized during a utility power loss (required).

# $defs.Emergency.properties.battery_duration_min.description
Rated emergency run time on integral battery, in minutes (the code-anchored figure is 90 minutes, a rated value).

# $defs.Emergency.properties.self_test.description
Self-test capability class (UL 924 defines the required test cadence).

# $defs.Emergency.properties.emergency_lumen_output_lm.description
Distinct emergency-mode luminous output, in lumens, for products whose emergency mode differs from their normal mode (combo and emergency-power-option units).

# $defs.Emergency.properties.emergency_input_power_w.description
Distinct emergency-mode input power draw, in watts.

# $defs.Emergency.properties.remote_head_capacity.description
Capacity to drive remote emergency heads: how many heads and the total connected load. Optional and ungated (whether a unit supports remote heads is not derivable from other fields).

# $defs.Emergency.properties.remote_head_capacity.properties.total_load_w.description
Total connected remote-head load, in watts.

# $defs.Emergency.properties.photometry_reference.description
The emergency-mode photometric file (IES), referenced by hash. May also appear in source_files[].