Change license from Apache 2.0 to AGPL v3#80
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
cmeans
left a comment
There was a problem hiding this comment.
QA Review — PR #80: Change license from Apache 2.0 to AGPL v3
Checklist Verification
| # | Check | Result |
|---|---|---|
| 1 | LICENSE contains AGPL v3 full text (661 lines, starts with "GNU AFFERO GENERAL PUBLIC LICENSE") |
✅ 661 lines + trailing newline, correct AGPL v3 text, no leftover Apache 2.0 notice |
| 2 | pyproject.toml shows license = "AGPL-3.0-or-later" |
✅ |
| 3 | README badge reads "AGPL-3.0" | ✅ license-AGPL--3.0-blue |
| 4 | README license section mentions prior Apache 2.0 versions | ✅ "Versions prior to v0.13.0 were released under the Apache License 2.0." |
| 5 | NOTICE file exists with license change documentation |
✅ Copyright, rationale, prior license, registration reference |
| 6 | CONTRIBUTING.md exists with CLA requirement |
✅ 3 CLA references, dual-licensing explained |
| 7 | All 14 src/mcp_awareness/*.py files have AGPL header |
✅ All 14 confirmed |
| 8 | benchmarks/semantic_search_bench.py has AGPL header |
✅ (after shebang line, correct for executable scripts) |
| 9 | ruff check src/ tests/ passes |
✅ All checks passed |
| 10 | mypy src/mcp_awareness/ passes |
✅ No issues in 14 source files |
| 11 | CI green (pytest, ruff, mypy) | ✅ 381/381 passed, lint clean, typecheck clean |
Observations (non-blocking)
-
Test files, examples, alembic migrations, and
seed_demo.pylack AGPL headers. The PR intentionally scoped headers tosrc/andbenchmarks/— FSF recommends all source files, but this is a common pragmatic choice. Could be addressed in a follow-up if desired. -
NOTICE references v0.13.0 but
pyproject.tomlis still at 0.12.0. This is correct — the license change lands in the next release. Just confirming the version bump will happen at release time. -
CHANGELOG uses correct Keep a Changelog categories (Changed, Added) — no issues.
Verdict
Zero findings. All 11 checklist items pass. No code behavior changes to test functionally. License text is standard AGPL v3 with no modifications. Legal metadata is consistent across all files.
|
Adding Ready for QA Signoff — all 11 checklist items verified, 381/381 tests pass, CI fully green including codecov/patch, zero findings. Removing Ready for QA. |
Extends license headers to all copyrightable source files, not just src/. Flagged by QA review of PR #80. - tests/ (9 files): conftest, __init__, 7 test modules - alembic/ (6 files): env.py + 5 migration scripts - examples/ (2 files): simulate_edge.py, test_new_tools.py - seed_demo.py Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Added AGPL headers to 18 missed files (tests, alembic, examples, seed_demo.py). Flagged by QA. Resetting to Awaiting CI — previous QA signoff invalidated by new commit. |
|
CI green after adding headers to tests/alembic/examples/seed_demo. Ready for QA re-review. |
QA Finding — BlockerObservation #1 upgraded to blocker: AGPL headers are missing from Missing headers in:
Total: 10 files need AGPL headers added. Removing Ready for QA Signoff, applying QA Failed. Will re-review once headers are added to all |
|
Removing Ready for QA Signoff, adding QA Failed — 10 .py files outside src/ and benchmarks/ are missing AGPL headers (blocker). |
cmeans
left a comment
There was a problem hiding this comment.
QA Re-review — PR #80 (round 2)
Previous blocker resolved: AGPL headers now present on all 33 .py files project-wide (was 15, now includes tests/9, alembic/6, examples/2, seed_demo.py).
Re-verification
| # | Check | Result |
|---|---|---|
| 1 | LICENSE — AGPL v3, 661 lines | ✅ |
| 2 | pyproject.toml — AGPL-3.0-or-later |
✅ |
| 3 | README badge — AGPL-3.0 | ✅ |
| 4 | README — prior Apache 2.0 note | ✅ |
| 5 | NOTICE file | ✅ |
| 6 | CONTRIBUTING.md with CLA | ✅ |
| 7 | All 33 .py files have AGPL header | ✅ (expanded from 15 — 0 missing) |
| 8 | ruff check | ✅ |
| 9 | mypy | ✅ |
| 10 | CI + codecov | ✅ All green |
Verdict
Zero findings. Previous blocker resolved. 381/381 tests pass. Ready for signoff.
|
Adding Ready for QA Signoff — re-review complete, previous blocker resolved (all 33 .py files now have AGPL headers), 381/381 tests pass, CI fully green. Removing Ready for QA. |
cmeans
left a comment
There was a problem hiding this comment.
Pointed out obvious problems...mostly 0.13.0 instead of what we agreed it should be: 0.14.0. Please scan all changes to make sure this typo doesn't make it through.
|
|
||
| License change notice | ||
| --------------------- | ||
| Effective with version 0.13.0, this project is licensed under the |
There was a problem hiding this comment.
Should be v0.14.0 per our chat.
| Effective with version 0.13.0, this project is licensed under the | ||
| GNU Affero General Public License v3 (AGPL-3.0-or-later). | ||
|
|
||
| All versions prior to 0.13.0 were released under the Apache License 2.0. |
| Apache 2.0 — see [LICENSE](LICENSE) for details. | ||
| AGPL-3.0-or-later — see [LICENSE](LICENSE) for details. | ||
|
|
||
| Versions prior to v0.13.0 were released under the Apache License 2.0. |
|
Fixed: NOTICE and README now reference v0.14.0 (not v0.13.0). Re: pyproject.toml version — correct, stays at 0.12.0 per release process. Version bump happens in a separate release PR after feature PRs merge. |
cmeans
left a comment
There was a problem hiding this comment.
QA Re-review — PR #80 (round 3)
Maintainer feedback addressed: all v0.13.0 references updated to v0.14.0.
Verification
| # | Check | Result |
|---|---|---|
| 1 | LICENSE — AGPL v3, 661 lines | ✅ |
| 2 | pyproject.toml — AGPL-3.0-or-later |
✅ |
| 3 | README badge — AGPL-3.0 | ✅ |
| 4 | README — prior Apache 2.0 note, references v0.14.0 | ✅ |
| 5 | NOTICE — references v0.14.0 (2 occurrences) | ✅ |
| 6 | CONTRIBUTING.md with CLA | ✅ |
| 7 | All 33 .py files have AGPL header | ✅ |
| 8 | Zero v0.13.0 references remaining in repo | ✅ (grep confirms) |
| 9 | ruff check | ✅ |
| 10 | mypy | ✅ |
| 11 | CI + codecov | ✅ All green, 381/381 tests |
Verdict
Zero findings. Version references corrected. Ready for signoff.
|
CI green. Ready for QA re-review — 5 additional files now have AGPL headers (workflow YAMLs, Dockerfile, alembic.ini). |
cmeans
left a comment
There was a problem hiding this comment.
QA Re-review — PR #80 (round 4)
New commit adds AGPL headers to workflow files, Dockerfile, and alembic.ini.
Verification
| # | Check | Result |
|---|---|---|
| 1 | LICENSE — AGPL v3, 661 lines | ✅ |
| 2 | pyproject.toml — AGPL-3.0-or-later |
✅ |
| 3 | README badge — AGPL-3.0 | ✅ |
| 4 | README — prior Apache 2.0, references v0.14.0 | ✅ |
| 5 | NOTICE — references v0.14.0 | ✅ |
| 6 | CONTRIBUTING.md with CLA | ✅ |
| 7 | All 33 .py files have AGPL header | ✅ |
| 8 | All 3 workflow .yml files have AGPL header | ✅ |
| 9 | Dockerfile and alembic.ini have AGPL header | ✅ |
| 10 | Zero v0.13.0 references | ✅ |
| 11 | ruff check | ✅ |
| 12 | mypy | ✅ |
| 13 | CI + codecov | ✅ 381/381, all green |
Observation (non-blocking)
7 GitHub config .yml files lack headers: dependabot.yml, FUNDING.yml, 5 issue templates. These are declarative config/metadata — not copyrightable source with logic — so headers are typically unnecessary. The 3 workflow files that contain script logic all have headers.
Verdict
Zero findings. Headers now cover all source files across all file types. Ready for signoff.
|
Adding Ready for QA Signoff — round 4 complete, headers verified on all source files (.py, workflows, Dockerfile, alembic.ini), zero v0.13.0 references, 381/381 tests pass, CI green. Removing Ready for QA. |
Protect against proprietary cloud hosting of the codebase while preserving the dual-licensing path for future commercial license. Chris Means is sole author and copyright holder (Case 1-15127131181). - LICENSE: replaced with AGPL v3 full text - pyproject.toml: license field updated - README.md: badge and license section updated - NOTICE: documents license change, prior license, rationale - CONTRIBUTING.md: CLA requirement for future contributors - All .py source files: AGPL header added per FSF recommendation - benchmarks/semantic_search_bench.py: now tracked (with AGPL header) - CHANGELOG.md: entries under [Unreleased] Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extends license headers to all copyrightable source files, not just src/. Flagged by QA review of PR #80. - tests/ (9 files): conftest, __init__, 7 test modules - alembic/ (6 files): env.py + 5 migration scripts - examples/ (2 files): simulate_edge.py, test_new_tools.py - seed_demo.py Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
We're skipping v0.13.0. Updated NOTICE and README to reference v0.14.0 as the first AGPL release. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extends license headers to all remaining copyrightable files: - .github/workflows/ci.yml, docker-publish.yml, qa-gate.yml - Dockerfile - alembic.ini Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
CI green after rebase. Promoting manually — on-ci-pass can't resolve PR after force push (known workflow_run limitation). Ready for QA re-review. |
cmeans
left a comment
There was a problem hiding this comment.
QA Re-review — PR #80 (round 5, post-rebase)
Fresh review after rebase onto main (which now includes PR #82 automation).
Verification
| # | Check | Result |
|---|---|---|
| 1 | LICENSE — AGPL v3, 661 lines | ✅ |
| 2 | pyproject.toml — AGPL-3.0-or-later |
✅ |
| 3 | README badge — AGPL-3.0 | ✅ |
| 4 | README — v0.14.0 prior license note | ✅ |
| 5 | NOTICE — v0.14.0 references (2x) | ✅ |
| 6 | CONTRIBUTING.md with CLA (3 refs) | ✅ |
| 7 | All 33 .py files — AGPL header | ✅ |
| 8 | Workflow .yml files — AGPL header | ✅ (3 in this PR + pr-labels.yml from main) |
| 9 | Dockerfile + alembic.ini — AGPL header | ✅ |
| 10 | Zero v0.13.0 references | ✅ |
| 11 | ruff check | ✅ |
| 12 | mypy | ✅ |
| 13 | CI + codecov | ✅ 381/381, all green |
Verdict
Zero findings. Post-rebase state is clean. Ready for signoff.
|
Adding Ready for QA Signoff — round 5 post-rebase review complete, all 13 checks pass, zero findings, 381/381 tests, CI green. Removing Ready for QA. |
Summary
.py,.ymlworkflows,Dockerfile,alembic.iniNOTICEfile documents the change, prior license, rationale, and copyright registrationCONTRIBUTING.mdestablishes CLA requirement for future contributorsbenchmarks/semantic_search_bench.pynow tracked (semantic search latency benchmarks)No code behavior changes — purely legal/metadata.
QA
This is a legal/metadata-only PR. No functional changes to verify.
Prerequisites
Verification checks
LICENSEcontains AGPL v3 full text (661 lines, starts with "GNU AFFERO GENERAL PUBLIC LICENSE")pyproject.tomlshowslicense = "AGPL-3.0-or-later"NOTICEfile exists with license change documentation (references v0.14.0)CONTRIBUTING.mdexists with CLA requirement.pyfiles project-wide have AGPL header.ymlfiles in this PR have AGPL headerDockerfileandalembic.inihave AGPL headerruff check src/ tests/passesmypy src/mcp_awareness/passes🤖 Generated with Claude Code