Skip to content

Declare dual license in citation and archive metadata - #16

Open
thabatarj8-stack wants to merge 2 commits into
mainfrom
claude/license-metadata
Open

thabatarj8-stack wants to merge 2 commits into
mainfrom
claude/license-metadata

Conversation

@thabatarj8-stack

@thabatarj8-stack thabatarj8-stack commented Oct 1, 2026 •

Copy link
Copy Markdown
Owner

Why

LICENSE.md already splits licensing (Apache-2.0 for code, CC BY 4.0 for research materials), but the machine-readable metadata didn't say so:

  • GitHub reports the repo license as NOASSERTION (its detector can't parse a pointer file to two licenses)
  • CITATION.cff and codemeta.json had no license field
  • no .zenodo.json, so Zenodo infers rights on its own at release time

Changes

  • 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 license cc-by-4.0, and a note explaining the dual license
  • scripts/check_metadata_sync.py (new, runs in CI): fails if CITATION.cff disagrees with .zenodo.json (title, keywords, creators, license) or with codemeta.json (version, DOI, licenses, author ORCIDs). Zenodo reads .zenodo.json instead of CITATION.cff, so a field changed in only one file would otherwise be archived stale.
  • Workflow: installs PyYAML==6.0.2 and runs the new check

Notes for review

  • .zenodo.json takes one license id. cc-by-4.0 was chosen because the research materials are the primary output. Apache-2.0 for the code is stated in notes and in LICENSE.md inside the archive. After the next release, Apache-2.0 can be added as a second license in the Zenodo record editor.
  • The v0.1.0 SHA256SUMS is unaffected. It checks the tagged release, not main.
  • GitHub will keep showing 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

thabatarj8-stack and others added 2 commits October 1, 2026 13:29
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant