Repository navigation
Add OSS foundations: LICENSE, CI, CITATION.cff, release checklist, package metadata - #100
Merged
Merged
Conversation
The README has declared "MIT" since v1.0.0, but no license text existed in the repository — legally leaving the project unlicensed and blocking citation, redistribution, and JOSS/institutional use. Adds the standard MIT text and points the README's License section at it. Copyright holder "Tomoya Imanishi" is taken from the repository's commit author identity — flagged for maintainer review in the PR. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
First automated testing for the repository: the full pytest suite runs on every push to main and every pull request, on Python 3.11 (the requires-python floor) and 3.12, CPU-only JAX, no network secrets. Python 3.13 is deliberately left out until the JAX/diffrax stack is verified against it. Adds the CI badge to the README. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Makes the project citable in one click: GitHub renders a "Cite this repository" button from this file. Wired to the existing Zenodo concept DOI (10.5281/zenodo.21097248), which always resolves to the latest archived release; version/date-released track the latest published release (v1.2.1) and are bumped per release via docs/RELEASE_CHECKLIST.md. Adds a Citing section to the README. Author identity "Tomoya Imanishi" is taken from the repository's commit author — flagged for maintainer review (ORCID can be added later). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Documents the full release process — reverse-engineered from how v1.0.0–v1.2.1 were actually released (docs/vX.Y.Z-release-notes prep branch → PR → tag → Zenodo DOI) and extended with the Hugging Face steps: dataset publishing with dataset_version bumps, recording Hub revision hashes for downstream pinning, Leaderboard Space redeploy, and an end-to-end EvaluationResult smoke test. Flags that the package is not yet on PyPI despite the README's install instructions, so first PyPI publication (or a README fix) gates the next release. Linked from the README's Development section. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Citations must credit the paper-author identity (Tomoya Imanishi) so they consolidate with other publications; the alias field ties in the GitHub maintainer identity (tim-nish). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
CITATION.cff stays the single canonical citation-metadata file; Zenodo reads it via the GitHub integration, so the ORCID propagates to the archived-release record on the next release without a .zenodo.json. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
python -m build succeeded but twine check warned that long_description and long_description_content_type were missing: [project] had no readme key, so the built METADATA carried no Description. readme = "README.md" fills both fields (content type is inferred from the .md suffix), so the PyPI project page will render the README. twine check dist/* now passes for both the sdist and the wheel. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The Leaderboard Space tests (23 of them) import gradio via spaces/leaderboard/app.py, but the [dev] extras never declared it, so the documented fresh-clone flow — pip install -e ".[dev]" && pytest — failed in CI on both Python versions (ModuleNotFoundError; every other test passed: 638 passed, 1 skipped). Local dev environments had gradio installed out-of-band, which is why this was never seen before. Pinned >=6.19 to match spaces/leaderboard/requirements.txt. Deliberately NOT installing spaces/leaderboard/requirements.txt in CI instead: it pins quantscenariobench to a released git tag, which would silently replace the editable install under test. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The guard test enforced "gradio is not a dependency of the installable package" (AD-27) with a whole-file string scan of pyproject.toml, which cannot tell the package's own dependency list apart from dev tooling — so it rejected the previous commit's legitimate [dev]-extra addition. Replaced with a tomllib check: gradio must be absent from [project].dependencies and from every extra except dev, which is the one sanctioned exception because the test suite itself imports spaces/leaderboard/app.py. The architectural invariant — plain `pip install quantscenariobench` never pulls gradio — is enforced unchanged, and now more precisely. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Owner
Author
|
Design decision made during CI stabilization (please review): The first CI run failed 23 Leaderboard Space tests with Two commits address it:
If you'd rather keep 🤖 Generated with Claude Code |
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.
Summary
P0 open-source hygiene items from the QSB long-term roadmap review — everything a researcher or reviewer checks in the first five minutes, none of which existed before this PR.
LICENSE— MIT text. The README has declared "MIT" since v1.0.0 but no license file existed, legally leaving the project unlicensed (blocks citation, redistribution, JOSS). Also declareslicense = {text = "MIT"}inpyproject.toml..github/workflows/ci.yml— first automated testing for the repo: full pytest suite on every push tomainand every PR, Python 3.11 + 3.12, CPU-only JAX, no network secrets. CI badge added to the README.CITATION.cff— makes the project citable in one click (GitHub "Cite this repository" button). Author: Tomoya Imanishi with GitHub aliastim-nishand ORCID0009-0007-0920-536X; pinned to the Zenodo concept DOI so it never needs a per-release DOI bump (onlyversion/date-releasedchange, now a checklist step). New "Citing" section in the README.docs/RELEASE_CHECKLIST.md— the release process as a permanent document, reverse-engineered from how v1.0.0–v1.2.1 were actually released and extended with the Hugging Face steps (dataset publishing, Hub revision pinning, Space redeploy, EvaluationResult smoke test). Linked from the README's Development section.pyproject.toml:readme = "README.md"— the built METADATA previously had no long description;twine check dist/*now passes with no warnings for both sdist and wheel.Points to review
tim-nishrecorded as alias).Verification
python -m build+python -m twine check→ both artifacts PASSED, no warnings.Note: this PR introduces the CI workflow, so this is the first PR CI will run on. Merge this before #99's fix PR so that PR gets a CI run too.
🤖 Generated with Claude Code