chore(license): switch Python SDK to Elastic 2.0 for §1.4a#12
Merged
Shaivpidadi merged 2 commits intodevfrom Apr 24, 2026
Merged
chore(license): switch Python SDK to Elastic 2.0 for §1.4a#12Shaivpidadi merged 2 commits intodevfrom
Shaivpidadi merged 2 commits intodevfrom
Conversation
Acceptance criterion in TASKS.md §1.4a specifies `license Elastic-2.0` for the Python SDK, distinct from the sister typescript-sdk which stays MIT per §0.2f. This commit aligns LICENSE, pyproject.toml metadata, README/docs references, and all 27 src/ SPDX headers with that choice. - LICENSE: replace MIT text with canonical Elastic License 2.0 - pyproject.toml: license -> "Elastic-2.0"; trove classifier -> "Other/Proprietary" - README.md: badge + license section updated to Elastic 2.0 - docs/README.md + PROJECT_SPECS.md: license references updated - src/governs_ai/**/*.py: SPDX-License-Identifier MIT -> Elastic-2.0 (27 files) Verified: - pip install -e . in clean venv succeeds (governs-ai-sdk-0.1.0a1) - import governs_ai and all public symbols/subpackages resolve - pytest tests/ passes (36 passed, 2 integration deselected) Refs: GOV-574 (1.4a — Python SDK project scaffolding)
ADR-001 mandates GitHub native secret scanning only — gitleaks and other third-party scanners are explicitly disallowed. Drops the `secret-scan` job entirely; no substitute scanner is added. Native coverage is already in place on governs-ai/python-sdk: - secret_scanning: enabled - secret_scanning_push_protection: enabled (verified via `gh api repos/Governs-AI/python-sdk --jq '.security_and_analysis'`) Refs: GOV-574, PR #12, ADR-001
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
Closes the remaining open acceptance criterion from TASKS.md §1.4a by switching the Python SDK license from MIT to Elastic License 2.0. All other §1.4a items (src/ layout, pyproject.toml name +
0.1.0-alpha.1version,pytest+pytest-asyncioconfig, README quickstart, CI workflow, PyPI publish on tag, submodule registration in meta-repo) were already in place ondev.TASKS.md §1.4a explicitly specifies Elastic-2.0, distinct from §0.2f which keeps the sister
typescript-sdkon MIT. This PR brings the repo in line with that plan.Changes
LICENSE— replaced MIT with canonical Elastic License 2.0 textpyproject.toml—license = { text = "Elastic-2.0" }, classifier flipped to"License :: Other/Proprietary License"README.md— license badge + "License" section updateddocs/README.md,PROJECT_SPECS.md— license references updated; changelog entry addedsrc/governs_ai/**/*.py—SPDX-License-Identifierflipped fromMITtoElastic-2.0across all 27 source files (previously set by LIC-1.3)GovernsAI Tracker issue
GOV-574 — [Pixel] 1.4a — Python SDK project scaffolding
Reviewers
Tagging Nexus (code quality) and Cipher (security/arch) — both approvals required. Cipher, please sanity-check the Elastic 2.0 text against the canonical version; the divergence from sister
typescript-sdk(MIT) is intentional per TASKS.md.Test plan
pip install -e .in a freshpython3 -m venv— succeeds, builds editable wheelgoverns-ai-sdk-0.1.0a1import governs_aiplus all public symbols (GovernsAIClient,GovernsAIError,PrecheckError,PrecheckResult,BudgetResult,MemoryClient,MemoryResult) resolvegoverns_ai.clients,.models,.utils,.exceptionsimport cleanlypytest tests/— 36 passed, 2 integration tests deselected (no local services)grep -r MITacross tree — only remaining hits are the historical changelog entries inPROJECT_SPECS.md, intentionally preservedblack,flake8,mypy,pytest,gitleaksjobs green on this branch