Repository navigation
Declare dual license in citation and archive metadata - #16
Open
thabatarj8-stack wants to merge 2 commits into
Open
thabatarj8-stack wants to merge 2 commits into
thabatarj8-stack wants to merge 2 commits into
Conversation
LICENSE.md already splits Apache-2.0 (code) and CC BY 4.0 (research materials), but machine-readable metadata did not say so: GitHub reports NOASSERTION and CITATION.cff/codemeta.json had no license. - CITATION.cff: license list [Apache-2.0, CC-BY-4.0] - codemeta.json: SPDX license URLs - .zenodo.json: explicit Zenodo metadata (creator + ORCID, license, dual-license note) so the next release archives with correct rights Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HgE4VrHTz2uD4ChXpzMX3L
Zenodo reads .zenodo.json instead of CITATION.cff when both exist, so a title, keyword, author, or license change made in only one file would be archived stale. The new CI check compares CITATION.cff against .zenodo.json (title, keywords, creators, license) and codemeta.json (version, DOI, licenses, author ORCIDs). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HgE4VrHTz2uD4ChXpzMX3L
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.
Why
LICENSE.mdalready splits licensing (Apache-2.0 for code, CC BY 4.0 for research materials), but the machine-readable metadata didn't say so:NOASSERTION(its detector can't parse a pointer file to two licenses)CITATION.cffandcodemeta.jsonhad nolicensefield.zenodo.json, so Zenodo infers rights on its own at release timeChanges
CITATION.cff:license: [Apache-2.0, CC-BY-4.0](validated against the CFF 1.2.0 schema)codemeta.json: SPDX license URLs.zenodo.json(new): creator + ORCID, title, description, keywords, archive licensecc-by-4.0, and a note explaining the dual licensescripts/check_metadata_sync.py(new, runs in CI): fails ifCITATION.cffdisagrees with.zenodo.json(title, keywords, creators, license) or withcodemeta.json(version, DOI, licenses, author ORCIDs). Zenodo reads.zenodo.jsoninstead ofCITATION.cff, so a field changed in only one file would otherwise be archived stale.PyYAML==6.0.2and runs the new checkNotes for review
.zenodo.jsontakes one license id.cc-by-4.0was chosen because the research materials are the primary output. Apache-2.0 for the code is stated innotesand inLICENSE.mdinside the archive. After the next release, Apache-2.0 can be added as a second license in the Zenodo record editor.SHA256SUMSis unaffected. It checks the tagged release, notmain.NOASSERTION. That's the correct outcome for a dual license.Tested locally: the sync check passes on this tree and fails as expected when the title or version diverges. Link check, publication-safety scan, experiment 002 validation, reproducibility validation, and unit tests also pass.
🤖 Generated with Claude Code
https://claude.ai/code/session_01HgE4VrHTz2uD4ChXpzMX3L