61b5572e2b
Builds scripts/audit_license_cve.py: single audit script that checks third-party deps (pyproject.toml + uv.lock transitive tree) for: (1) license compliance against the project's policy, (2) known CVEs (via pip-audit subprocess), (3) version-pinning, and (4) source-file SPDX license headers in src/ and scripts/. LICENSE POLICY (encoded in the script) Allowlist (permissive or weak copyleft or public domain): - Permissive: MIT, BSD, Apache 2.0, ISC, Unlicense, Zlib, Python-2.0, 0BSD, PSF-2.0 - Weak copyleft (Python import-safe): LGPL 2.1/3.0, MPL-2.0 - Public domain: CC0, WTFPL Blocklist (non-OSI / restricted-source): - GPL (any version), AGPL (any version) - SSPL (MongoDB 2018) - broad service-provider trigger - BSL / BUSL - delayed open source; competitive-use restriction - Commons Clause - 'cannot sell the software' addendum - Elastic License v2 - 'cannot offer as managed service' - Unknown / unparseable / missing metadata (catches packaging bugs and custom licenses) The two lists are explicit. Default rule: unknown = violation (never auto-pass). The script's --help references the policy table for transparency. Specific per-license additions go in scripts/audit_license_cve.py directly; no spec change needed. TRACK SCOPE In scope: third-party deps (direct + transitive), source-file SPDX headers, vendored libraries (defensive), version pinning. Out of scope: the project's own LICENSE file, project's own SPDX/Copyright headers, recommendations on project license. The user reserves all rights to the repo; no LICENSE file is created by the track. The audit reports third-party state only. OUTPUT FORMAT (sanitized: no JSON in user-facing output) - Stdout: line-per-violation, parseable by eye and by grep - Markdown report in docs/reports/license_cve_audit/2026-06-07/ - Baseline file: JSON (matches existing audit_weak_types convention; internal state for --strict mode only) CI GATE --strict mode + scripts/audit_license_cve.baseline.json. Fails CI on any new violation OR any new CVE. Mirrors the 3 existing audit scripts (audit_main_thread_imports, audit_weak_types, check_test_toml_paths). COMMITS PLANNED 1. chore(audit): add license_cve audit script + initial report 2. chore(deps): tilde-pin all deps; delete requirements.txt 3. chore(audit): add --strict mode + baseline file (CI gate) 4. conductor(tracks): mark License CVE Audit track complete NO NEW PIP DEPENDENCIES IN PROJECT Pure stdlib (importlib.metadata, tomllib, pathlib, re) + subprocess to pip-audit (an optional dev tool, installed via 'uv tool install pip-audit' if user wants CVE checks).