ULC v0.7.0
ulc CLI v0.7.0
Download a single-file binary for your platform below. See CHANGELOG.md
at the tag for what landed in this release.
The conformance rubric is redesigned from a thin 16-field check into an exhaustive, document-aware rule table, and the conformance ladder gains an incomplete tier below core. Stored indices recompute, so several records change level.
Schema (additive, pre-1.0)
ConformanceLevelgains anincompletetoken, so the ladder is nowincomplete<core<standard<full. Anincompleterecord is a real photometric record (it carries the flux, input-power, and primary-category anchors, so it indexes) that has not yet met every core requirement; it still receives an index and a roadmap naming the core fields it is missing. Additive: no existing record becomes invalid, and a record carries the token only after it re-stamps.SourceFileTypeandProvenanceSourcegaintest_report,compliance_documents, anddriver_datasheet_pdf.AttestationProgramgains 43 tokens spanning regional market-access marks, additional North American safety listings, EMC declarations, food-zone safety, energy programs, and environmental, material, and origin declarations. Only a small subset of safety listings is read by the grader's core safety gate; the rest are presence-tracked for catalog and search and never affect the conformance level.- The
Attestationblock gains optionallist_dateandlist_versionfor list-versioned badges (REACH SVHC, California Prop 65, conflict minerals). DimmingProtocolgainsdali_2_dt6,d4i,lutron_ecosystem, andbluetooth_mesh, covering the DALI-2 DT6 device type, the D4i intra-luminaire standard, Lutron's EcoSystem protocol, and the Bluetooth mesh topology (distinct from point-to-pointbluetooth).- A new optional
electrical.dimming_curvefield, backed by a newDimmingCurvetaxonomy (logarithmicorlinear), records the dim-command-to-output mapping when the driver datasheet publishes it. Ungated and absent unless declared.
Grading (breaking for stored indices, pre-1.0)
- The conformance rubric is now a declarative, taxonomy-mapped rule table with a composable applicability-predicate layer, replacing the inline checks. Core is richer (full identity, headline photometric and electrical numbers, one-line colorimetry, and a market safety listing). Standard and full gain white-light, directional, outdoor-site, linear, analog-dimming, and wet-location conditionals.
zonal_lumensis a full-tier requirement (it is IES-derived, not datasheet-published), and the MacAdam SDCM step is a standard requirement for primarily white-light fixtures. - The dimming-method and dimming-range standard gates apply only to analog and phase-cut drivers (0-10V, 1-10V, phase, PWM-input), whose dim floor and electrical method are published driver specs a designer selects on. Digital control protocols (the DALI family, DMX, DSI), wireless protocols, and non-dimming drivers are exempt, so a complete digital-control datasheet is not held back for a value its cutsheet does not carry.
- The safety-listing core gate checks for the presence of a self-asserted listing claim, not third-party verification of it. A conformance level is a data-completeness grade, never a safety certification.
- Each missing requirement now carries a machine-readable roadmap (the conformance level it unlocks, the source document that supplies it, and the governing standard) at every climb, including out of
incompleteintocore. This is also an output-shape change for tooling: the gap is now emitted as one finding per missing requirement, anchored at that field's own path, replacing the single aggregate finding previously emitted at/index/conformance_level. Consumers that parsed the old aggregate finding must read the per-field findings instead. - Recomputed example levels:
erco-quintessenceandselux-aya-polemove full to standard, andvode-nexamoves full to core (its only standard gap is the SDCM step). Thelumenpulse-lumenfacadeRGB record moves core to standard, and a new RGBW companion record is added at standard; both are color-mixing DMX/RDM fixtures whose digital driver is exempt from the analog and phase-cut dimming gates.
Builder
BuilderVersionbumped0.3.0to0.4.0. Stored indices re-stamp (and may change level) on the nextulc build-index, and the builder now stamps theincompletetoken.
Validator
ulc validategains a--verboseflag. By default the text report shows the achieved level plus the roadmap and omits the non-gating conformance observations (the comprehensive-depth nudges);--verboseincludes them. JSON output always includes everything.
Documentation
- New
docs/compliance-attestation.md: a glossary of everyAttestationProgramtoken, its governing program, its category, and whether the grader reads it for the core safety gate, headed by the trust-boundary note that grading checks claim presence, not verification. docs/methodology.mdgains a top-level conformance-rubric section documenting the four tiers, the membership tables, and a dedicated applicability-predicates subsection.docs/how-it-works.mdgains a "How records are authored" section documenting the two authoring paths (filling thetemplates/workbook/spreadsheet for the deterministiculc from-sheetconverter, or emitting from a PIM), which source documents to gather, and why the compiled output is accurate by construction.docs/methodology.mdadds a "Why the tiers fall where they do" subsection: the conformance tiers mirror how a construction specification escalates its submittal requirements (mandatory product data plus a safety listing, then selection-grade performance specifications, then independently-certified test reports), ordered by evidence depth and scoped by applicability. The rootREADME.mdconformance paragraph gains the one-line principle and points to it.ROADMAP.mdrecords new deferred-schema items: emergency-lighting operational data, entertainment fixture capabilities, NEMA flood beam-spread classification, and structured safety-listing detail.
Repository
- The six per-category hand-fill JSON skeleton templates (
templates/downlight.ulc.jsonand siblings, with their.mdguides) are removed. Hand-authoring JSON is not a recommended path: a record is compiled from the manufacturer's source documents by a deterministic tool regardless of luminaire type, so the curatedexamples/plus the schema serve the reference need better than an arbitrary subset of category skeletons. The fill-in workbook template attemplates/workbook/(the input toulc from-sheet) is retained.
Examples
- The
lumenpulse-lumenfacade-loi-12-rgbreference record is corrected to the-ASL(anti-slip lens) order option it documents: the catalog number and the referenced IES filename and SHA-256 are updated to the ASL photometry, and the headline figures are re-scaled to that file (total luminous flux 700 to 637 lm, with the maximum-intensity, efficacy, and candela-multiplier values that follow). - A second Lumenpulse facade record,
lumenpulse-lumenfacade-loi-12-rgbw30k-10x60-ts2-5, is added: the RGBW (3000 K white channel) counterpart to the RGB facade record. Its white channel is graded for nominal CCT, while the white-light-quality gates (CRI, SDCM, TM-30) are waived for the color-mixing architecture.