purefunctor / purefunctor/purescript-iris
Validate generated license metadata before release
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 102
- Forks
- 11
- Avg merge
- 3h 30m
- Merged PRs (30d)
- 138
Description
Follow-up opportunity
Nonblocking release-tooling follow-up from #505, verified at 429c883a. The CLI split correctly changes the license-bundle root to iris-cli, and the final commit fixes the configuration crate declaration. Generated metadata can nevertheless retain unresolved entries without an explicit validation step.
This is a metadata completeness observation, not a conclusion that any distributed binary violates a license. Most of the placeholders predate this PR; platform applicability and notices already supplied elsewhere need checking.
Evidence
just licensesrunscargo bundle-licenses --prefer MITagainstcompiler-bin/iris-cliand writesTHIRDPARTY.toml, without validating unresolved output.- Parsing current
THIRDPARTY.tomlfinds 51 package records with at least one license text equal toNOT FOUND(52 on the PR base). Examples include local crates withNo license specifiedand external crates with a declared SPDX expression but no extracted text. - The head also contains
winapi-i686-pc-windows-gnuandwinapi-x86_64-pc-windows-gnu0.4.0 records declaring MIT withtext = "NOT FOUND"; neither record existed in the base bundle. These were added with the dependency changes for cache-directory logging. - Both
.github/workflows/release.ymlandcanary.ymlinclude the checked-in bundle in archives. The configuration-license correction demonstrates why declaring and regenerating metadata needs an explicit completeness check.
Why it matters
A large generated diff is difficult to audit manually. Successful generation is not evidence that license text was found, so dependency updates can silently introduce additional unresolved metadata into release artifacts.
Bounded completion criteria
- Add a read-only validation command over the generated TOML that reports package/version and unresolved license declaration/text.
- Classify existing placeholders against the shipped targets and authoritative package notices; resolve the newly added winapi records or document why another included notice covers them.
- Gate new unresolved records in release preparation/CI. If inherited entries need temporary exceptions, keep a reviewed package/version-specific baseline with reasons rather than silently accepting every placeholder.
- Keep generation reproducible; fix manifest/source metadata or the generator inputs rather than editing generated license text by hand. Test the validator with complete, unresolved, and explicitly acknowledged records.
Duplicate check: searched all open and closed issues for license and THIRDPARTY; no matching issue found.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the justfile's just licenses recipe and the generated THIRDPARTY.toml, then inspect .github/workflows/release.yml and canary.yml to understand archive checks. Add read-only validation for unresolved package/version license data, test complete, unresolved, and acknowledged records, and ensure release preparation gates newly introduced unresolved entries without editing generated text by hand.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- ci-cd, release, tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100