Skip to content

fix: rename LICENSE-APACHE to LICENSE-APACHE-2.0 for OpenSSF Scorecard detection#69

Merged
project-navi-bot merged 1 commit into
mainfrom
fix/license-detection
May 26, 2026
Merged

fix: rename LICENSE-APACHE to LICENSE-APACHE-2.0 for OpenSSF Scorecard detection#69
project-navi-bot merged 1 commit into
mainfrom
fix/license-detection

Conversation

@Fieldnote-Echo

Copy link
Copy Markdown
Owner

Summary

Fixes the OpenSSF Scorecard License check (was 9/10) and GitHub's "unknown
license" display for this dual-licensed (MIT OR Apache-2.0) repo.

Root cause — the license tools detect differently:

  • Scorecard matches by filename only (never content) and scores only the
    first license file. LICENSE-APACHE → SPDX APACHE (not a valid id) → 9/10
    "does not contain an FSF or OSI license".
  • A bare LICENSE wrapper (a short dual-license pointer) was being picked first
    by Scorecard (empty SPDX → 9/10) and could not be content-matched by GitHub's
    licensee (→ NOASSERTION / "unknown").

Changes

  • Remove the bare LICENSE wrapper; move its contribution note into the README
    ## License section (per Rust API Guidelines).
  • Rename LICENSE-APACHELICENSE-APACHE-2.0 (repo root + ordvec-python/ copy) so
    the filename yields the valid SPDX id Apache-2.0.
  • Update the Apache links in README.md and ordvec-python/README.md.

License text is unchanged (pure git renames); LICENSE-APACHE-2.0 stays
byte-identical to the canonical rust-lang/rust LICENSE-APACHE (appendix-less).
Cargo.toml / pyproject.toml reference the SPDX expression, not filenames, so
packaging is unaffected.

Verification

  • scorecard --local . --checks=License10.0 / 10
    (Info: FSF or OSI recognized license: Apache License 2.0: LICENSE-APACHE-2.0:0).
    Before: 9.0/10 on LICENSE:0, then LICENSE-APACHE:0.
  • Repo swept: no un-versioned LICENSE-APACHE references remain, and no CI/packaging
    reference to the removed LICENSE wrapper.

Notes

  • GitHub will now recognize both licenses but still shows "View license" — licensee
    has no SPDX-OR support, which is unavoidable for genuinely dual-licensed repos.
  • OpenSSF Best Practices badge auto-detection sources its license value from GitHub's
    /license API (NOASSERTION for dual repos), so floss_license / license_location
    are best attested manually there rather than satisfied with a bare LICENSE file.

OpenSSF Scorecard's License check matches by filename only (it never reads
file content) and scores only the first license file alphabetically.
LICENSE-APACHE yields the SPDX id "APACHE", which is not FSF/OSI-recognized,
so the check scored 9/10 ("does not contain an FSF or OSI license").
LICENSE-APACHE-2.0 yields the valid SPDX id "Apache-2.0" and scores 10/10
(verified locally with `scorecard --local . --checks=License`).

Also remove the bare LICENSE wrapper: it was a short dual-license pointer
that licensee could not content-match (GitHub reported the license as
unknown/NOASSERTION), and Scorecard selected it first and failed on its
empty SPDX id. Its contribution note moves into the README License section
per the Rust API Guidelines.

Apply the same rename to the ordvec-python binding's license copy and update
both README Apache links. License text is unchanged (pure git renames);
LICENSE-APACHE-2.0 is byte-identical to the canonical rust-lang/rust
LICENSE-APACHE.

Signed-off-by: Nelson Spence <nelson@projectnavi.ai>
@qodo-code-review

Copy link
Copy Markdown

Review Summary by Qodo

Fix license detection by renaming LICENSE-APACHE to LICENSE-APACHE-2.0

🐞 Bug fix

Grey Divider

Walkthroughs

Description
• Rename LICENSE-APACHE to LICENSE-APACHE-2.0 for valid SPDX detection
• Remove bare LICENSE wrapper file to fix GitHub license recognition
• Move contribution terms into README License section per guidelines
• Update Apache license links in README files to reference renamed file
Diagram
flowchart LR
  A["LICENSE wrapper<br/>bare dual-license pointer"] -->|removed| B["README License<br/>section"]
  C["LICENSE-APACHE<br/>invalid SPDX id"] -->|renamed| D["LICENSE-APACHE-2.0<br/>valid SPDX id"]
  D -->|fixes| E["OpenSSF Scorecard<br/>10/10 License check"]
  B -->|includes| F["Contribution terms<br/>from removed LICENSE"]

Loading

File Changes

1. LICENSE 🐞 Bug fix +0/-20

Remove bare LICENSE wrapper file

• Removed bare dual-license wrapper file
• Content moved to README License section with contribution terms
• File was causing GitHub license detection to fail (NOASSERTION)

LICENSE


2. README.md 📝 Documentation +7/-1

Update license links and add contribution section

• Updated Apache license link from LICENSE-APACHE to LICENSE-APACHE-2.0
• Added new "Contribution" subsection with contribution terms from removed LICENSE file
• Maintains dual-license (MIT OR Apache-2.0) documentation

README.md


3. ordvec-python/README.md 📝 Documentation +1/-1

Update Apache license link in Python binding

• Updated Apache license link from LICENSE-APACHE to LICENSE-APACHE-2.0
• Maintains consistency with root repository license file rename

ordvec-python/README.md


View more (2)
4. LICENSE-APACHE-2.0 Additional files +0/-0

...

LICENSE-APACHE-2.0


5. ordvec-python/LICENSE-APACHE-2.0 Additional files +0/-0

...

ordvec-python/LICENSE-APACHE-2.0


Grey Divider

Qodo Logo

@qodo-code-review

qodo-code-review Bot commented May 26, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Qodo Logo

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request removes a root copyright/license description file, updates references from LICENSE-APACHE to LICENSE-APACHE-2.0 in both the main README.md and the Python package's README.md, and adds a new "Contribution" section to the main README.md outlining the dual-licensing terms for contributions. There are no review comments to address, and I have no feedback to provide.

@codecov

codecov Bot commented May 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@project-navi-bot project-navi-bot merged commit 5bfc418 into main May 26, 2026
28 checks passed
@project-navi-bot project-navi-bot deleted the fix/license-detection branch May 26, 2026 00:58
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.

2 participants