Repository navigation
M1: IES LM-63 and EULUMDAT readers, symmetry expansion, emergency flux - #1
Merged
Merged
Conversation
Readers for IES LM-63 (1986-2019, type C, relative and absolute, tilt tables) and EULUMDAT (every symmetry indicator) into one full C-gamma table, with located errors; symmetry expansion; emergency-mode flux; property tests and a mutation fuzzer (cargo xtask fuzz: 22.8 million inputs in 600 s, no panic); `luxpath photometry <file>`. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
M1: photometric files become usable.
luxpath-photometryreads IES LM-63 (1986, 1991, 1995, 2002, 2019; type C; relative and absolute photometry;TILT=INCLUDE) and EULUMDAT (all five symmetry indicators, Latin-1, decimal commas). Both are read into one full C-γ table in cd/klm.TILT=<file>, several lamp sets.luxpath photometry <file>shows the format, the flux, the symmetry, the peak intensity and the light output ratio.cargo xtask fuzz [seconds]runs the mutation fuzzer.Existing crates were evaluated first (
docs/architecture.md):eulumdatandgldf-rsare AGPL andl3d_rsis GPL, so they are excluded.lidrs(MIT) is dormant since 2022. It panics on mutated input, hastodo!()for type A/B files, and accepts truncated files as valid.How you verified it
cargo xtask ci, natively (macOS) and in the local Linux container. Merged on the local checks (hosted CI unavailable).tests/formats.rs, plus property tests);cargo xtask fuzz 600tried 22,847,141 inputs without a panic.formats.rsred;fuzz_briefly.Life safety (AGENTS.md §2)
Never panic (AGENTS.md §3)
unwrap/expect/panic!/indexing on input outside tests; NaN/inf guarded; allocations capped (16 MB files,MAX_TABLE_VALUES, 10,000 tilt angles)Provenance (AGENTS.md §1)
crates/photometry/tests/fixtures/README.md)Records
parity/features.toml: symmetry, emergency flux shipped; IES and LDT readers partial (no real manufacturer files yet)docs/status.md,docs/gaps.md(rows 1–2 closed, 12–15 added),docs/roadmap.md,ROADMAP.mdlog