fix(license): reconcile every SDK manifest to Apache-2.0 and ship the license text - #39
fix(license): reconcile every SDK manifest to Apache-2.0 and ship the license text#39yakimoto wants to merge 1 commit into
Conversation
… license text e3b3fb8 standardized the open protocol/SDK surface on Apache-2.0 ("replaces any prior license", patent grant for adoption) and added NOTICE. the five SDK manifests were never updated, so this public repo has been serving four MIT claims against an Apache-2.0 LICENSE file — including a README badge reading "License: MIT" that links to the Apache text. reconciled to the newest decision rather than to the majority: the MIT claims all predate e3b3fb8 and it explicitly supersedes them. python pyproject.toml MIT -> Apache-2.0 js package.json MIT -> Apache-2.0 (+ package-lock root entry) rust Cargo.toml MIT -> Apache-2.0 ruby gemspec MIT -> Apache-2.0 (+ LICENSE added to s.files) README badge + footer MIT -> Apache-2.0 go no license field — unchanged every publishable subtree now ships the license TEXT, not just a claim. the python wheel carried a bare `License: MIT` string and zero license files; a manifest field sets metadata and packages nothing. python also migrates off the deprecated `license = { text = ... }` table to PEP 639 (`license` as an SPDX expression + `license-files`), which stops building 2027-02-18. that needs setuptools>=77 at BUILD time only — the wheel still declares requires-python >=3.8. verified by building/packing, not by reading the manifests: wheel 9 files (was 8), adds dist-info/licenses/LICENSE; METADATA now License-Expression: Apache-2.0 + License-File: LICENSE npm pack --dry-run lists LICENSE (11.3kB) in the tarball gem Gem::Specification.load -> license=Apache-2.0 files=[LICENSE, lib/...] code __init__/cli/proxy hashes byte-identical to the published 0.7.0 — this change ships no code all four LICENSE copies are byte-identical to the root (sha256 14e3130932d1a242). crates.io packaging is unverified locally (no cargo on this machine). refs #451
|
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_92a986a0-bfea-485b-82a3-bf1233ad6a1b) |
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 26 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (9)
Comment |
Reconciles the public repo's licensing to a single answer. Refs wave-av/wave-dispatch#451 (private).
The correction that set the direction
I originally read this as "the LICENSE file is the outlier — three sources say MIT, one says Apache-2.0, so fix the file." That was vote-counting artifacts of different ages.
git logonLICENSEsays otherwise:That is the newest decision, it explicitly names the SDK surface, it explicitly supersedes prior licenses, and it gives a reason MIT can't provide (a patent grant). Every MIT claim in the repo predates it — they were simply never updated. So the manifests are reconciled to the newest decision, not to the majority.
Swapping
LICENSEto MIT would have been the wrong fix twice over: it reverts a deliberate decision, strips the patent grant from a public repo, and breaksNOTICE, whose trademark carve-out is written against the Apache License.What was actually inconsistent
Wider than first catalogued — a
grepfor\bMIT\bfound two more than the audit did, including a Rust SDK missed because an earlier listing was truncated.sdk/python/pyproject.tomllicense = { text = "MIT" }license = "Apache-2.0"+license-filessdk/js/package.json"license": "MIT""Apache-2.0"sdk/js/package-lock.json"license": "MIT""Apache-2.0"sdk/rust/Cargo.tomllicense = "MIT""Apache-2.0"sdk/ruby/wave_dispatch.gemspecs.license = "MIT""Apache-2.0"+LICENSEins.filesREADME.mdbadgeLicense: MIT→ linked to the Apache fileLicense: Apache 2.0README.mdfooterMIT © 2026Apache-2.0 © 2026sdk/go.github/workflows/public-repo-guard.ymlSecond defect: a license CLAIM is not license TEXT
The published wheel for 0.7.0 contains 8 files, none of them a license, while its METADATA asserts
License: MIT. A manifest field sets a metadata string and packages nothing. Every publishable subtree now carries the license text, and all four copies are byte-identical to the repo root (sha256 14e3130932d1a242…).Python also migrates off the deprecated
license = { text = ... }table to PEP 639, which is what made the claim-without-text possible and which stops building on 2027-02-18. That needssetuptools>=77at build time only; the wheel still declaresrequires-python >=3.8.Verified by building, not by reading
Not verified: crates.io packaging — no
cargoon the machine I built this on. Cargo includesLICENSE*by default, but I'd rather flag that than assert it.What this does not fix
0.7.0, which is already on PyPI, so a tag today fails on a duplicate filename rather than publishing — a version bump is a separate release decision.sdk/js/package-lock.jsonstill says"version": "0.6.0"whilepackage.jsonsays0.7.0. Pre-existing drift, untouched here — regenerating the lockfile is a different change with a different blast radius.Repositorylink points somewhere that doesn't build the package.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is enabled.Note
Low Risk
Metadata, documentation, and packaging-only changes with no runtime behavior; main follow-up is releasing new package versions so registries reflect the fix.
Overview
Aligns all publishable SDK surfaces with the repo root Apache-2.0 decision instead of stale MIT metadata in manifests and README.
README updates the license badge and footer from MIT to Apache-2.0. JS, Python, Rust, and Ruby manifests now declare
Apache-2.0; newLICENSEfiles in each SDK subtree match the root license text. Python moves to PEP 639 (license = "Apache-2.0"pluslicense-files) and bumps the build requirement to setuptools>=77 so wheels can ship license text, not only a metadata claim. Ruby addsLICENSEto the gem file list. package-lock.json mirrors the JS license field change.No application or SDK runtime code changes—packaging and legal metadata only. Already-published 0.7.0 registry metadata stays wrong until a new release.
Reviewed by Cursor Bugbot for commit b1c0bf0. Configure here.
Summary by cubic
Standardizes all SDKs on Apache-2.0 and includes the license text in every publishable package. Also updates Python packaging to PEP 639 and fixes the README license badge; addresses license consistency required by Linear issue 451.
Bug Fixes
sdk/python/pyproject.toml,sdk/js/package.json(and lock root),sdk/rust/Cargo.toml,sdk/ruby/wave_dispatch.gemspec, and updated the README badge/footer.LICENSEtosdk/js,sdk/python,sdk/ruby, andsdk/rust; Ruby gem now includesLICENSEins.files.licenseas SPDX +license-files) to ensure wheels include the license text.Migration
setuptools>=77to build; no runtime changes for users.Written for commit b1c0bf0. Summary will update on new commits.