{"events":[{"event":"floor_dropped","package_name":"babel","tier":"already_satisfied","detail":"the lock already holds 2.18.0, at or above the floor 2.18.0, so the package is left where it is","cooldown_withheld":null},{"event":"floor_applied","package_name":"certifi","floor_version":"2026.10.19","tier":"cve_free","rationale":"certifi has a CVE-free floor at 2026.10.19 clearing 4 known vulnerabilities.","clearing_vulnerability_ids":["CVE-2022-23491","CVE-2023-37920","CVE-2024-39689","GHSA-6q48-6c7w-9gw2"],"freshness_exemption_needed":false},{"event":"floor_dropped","package_name":"cryptography","tier":"already_satisfied","detail":"the lock already holds 50.0.0, at or above the floor 50.0.0, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"idna","tier":"already_satisfied","detail":"the lock already holds 3.18, at or above the floor 3.18, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"jinja2","tier":"already_satisfied","detail":"the lock already holds 3.1.6, at or above the floor 3.1.6, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"markdown","tier":"already_satisfied","detail":"the lock already holds 3.10.3, at or above the floor 3.10.3, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"markdown-it-py","tier":"already_satisfied","detail":"the lock already holds 4.2.0, at or above the floor 4.2.0, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"mkdocs","tier":"already_satisfied","detail":"the lock already holds 1.6.1, at or above the floor 1.6.1, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"mkdocs-material","tier":"already_satisfied","detail":"the lock already holds 9.7.7, at or above the floor 9.7.7, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"pycryptodome","tier":"already_satisfied","detail":"the lock already holds 3.23.0, at or above the floor 3.23.0, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"pydantic","tier":"already_satisfied","detail":"the lock already holds 2.13.4, at or above the floor 2.13.4, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"pydantic-settings","tier":"already_satisfied","detail":"the lock already holds 2.15.0, at or above the floor 2.15.0, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"pygments","tier":"already_satisfied","detail":"the lock already holds 2.20.0, at or above the floor 2.20.0, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"pymdown-extensions","tier":"already_satisfied","detail":"the lock already holds 11.0.1, at or above the floor 11.0.1, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"pytest","tier":"already_satisfied","detail":"the lock already holds 9.1.1, at or above the floor 9.1.1, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"python-dotenv","tier":"already_satisfied","detail":"the lock already holds 1.2.2, at or above the floor 1.2.2, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"pyyaml","tier":"already_satisfied","detail":"the lock already holds 6.0.3, at or above the floor 6.0.3, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"requests","tier":"already_satisfied","detail":"the lock already holds 2.34.2, at or above the floor 2.34.2, so the package is left where it is","cooldown_withheld":null},{"event":"floor_dropped","package_name":"simplejson","tier":"already_satisfied","detail":"the lock already holds 4.1.1, at or above the floor 4.1.1, so the package is left where it is","cooldown_withheld":null},{"event":"floor_applied","package_name":"urllib3","floor_version":"2.8.0","tier":"cve_free","rationale":"urllib3 has a CVE-free floor at 2.8.0 clearing 22 known vulnerabilities.","clearing_vulnerability_ids":["CVE-2016-9015","CVE-2018-20060","CVE-2018-25091","CVE-2019-11236","CVE-2019-11324","CVE-2020-26137","CVE-2020-7212","CVE-2021-28363","CVE-2021-33503","CVE-2023-43804","CVE-2023-45803","CVE-2024-37891","CVE-2025-50181","CVE-2025-50182","CVE-2025-66418","CVE-2025-66471","CVE-2026-21441","CVE-2026-44431","CVE-2026-44432","CVE-2026-97687","CVE-2026-97688","CVE-2026-97689"],"freshness_exemption_needed":false},{"event":"resolver_invocation","attempt":1,"argv":["/tmp/pkgwarden-remediation/uv-pin/0.12.5/bin/uv","lock","--upgrade-package","certifi==2026.10.19","--upgrade-package","urllib3==2.8.0","--default-index","http://***@127.0.0.1:50013/resolution/remediation/e63c6614-9bfa-4656-9f28-52c7e4f61b9a/simple/"],"exit_code":0,"stderr_excerpt":"Downloading cpython-3.10.21-linux-x86_64-gnu (download) (28.1MiB)\n Downloaded cpython-3.10.21-linux-x86_64-gnu (download)\nUsing CPython 3.10.21\nResolved 77 packages in 8.09s\nUpdated certifi v2026.7.22 -> v2026.10.19\nUpdated urllib3 v2.7.0 -> v2.8.0","eresolve_report":"","resolver":"uv"},{"event":"resolver_invocation_resources","resolver_name":"uv lock","wall_seconds":10.33544421299996,"peak_rss_mb":2654,"worker_peak_rss_mb":2654},{"event":"resolver_invocation","attempt":2,"argv":["/tmp/pkgwarden-remediation/uv-pin/0.12.5/bin/uv","lock","--upgrade-package","annotated-types==0.8.0","--upgrade-package","antlr4-python3-runtime==4.13.2","--upgrade-package","appdirs==1.4.4","--upgrade-package","ast-serialize==0.8.0","--upgrade-package","babel==2.18.0","--upgrade-package","backrefs==8.0","--upgrade-package","betterproto2==0.10.0","--upgrade-package","betterproto2-compiler==0.10.1","--upgrade-package","certifi==2026.10.19","--upgrade-package","cffi==2.1.1","--upgrade-package","charset-normalizer==3.4.9","--upgrade-package","click==8.4.2","--upgrade-package","colorama==0.4.6","--upgrade-package","coverage==7.15.4","--upgrade-package","cryptography==50.0.0","--upgrade-package","exceptiongroup==1.3.1","--upgrade-package","ghp-import==2.1.0","--upgrade-package","idna==3.18","--upgrade-package","iniconfig==2.3.0","--upgrade-package","iphone-backup-decrypt==0.10.0","--upgrade-package","jinja2==3.1.6","--upgrade-package","librt==0.15.0","--upgrade-package","markdown==3.10.3","--upgrade-package","markdown-it-py==4.2.0","--upgrade-package","markupsafe==3.0.3","--upgrade-package","mdurl==0.1.2","--upgrade-package","mergedeep==1.3.4","--upgrade-package","mkdocs==1.6.1","--upgrade-package","mkdocs-autorefs==1.4.4","--upgrade-package","mkdocs-get-deps==0.2.2","--upgrade-package","mkdocs-material==9.7.7","--upgrade-package","mkdocs-material-extensions==1.3.1","--upgrade-package","mkdocstrings==1.0.6","--upgrade-package","mypy==2.3.0","--upgrade-package","mypy-extensions==1.1.0","--upgrade-package","nskeyedunarchiver==1.5.2","--upgrade-package","packaging==26.3","--upgrade-package","paginate==0.5.7","--upgrade-package","pathspec==1.1.1","--upgrade-package","platformdirs==4.11.2","--upgrade-package","pluggy==1.6.0","--upgrade-package","pyahocorasick==2.3.1","--upgrade-package","pycparser==3.0","--upgrade-package","pycryptodome==3.23.0","--upgrade-package","pydantic==2.13.4","--upgrade-package","pydantic-core==2.46.4","--upgrade-package","pydantic-settings==2.15.0","--upgrade-package","pygments==2.20.0","--upgrade-package","pymdown-extensions==11.0.1","--upgrade-package","pytest==9.1.1","--upgrade-package","pytest-cov==7.1.0","--upgrade-package","pytest-github-actions-annotate-failures==0.4.2","--upgrade-package","pytest-mock==3.15.1","--upgrade-package","python-dateutil==2.9.0.post0","--upgrade-package","python-dotenv==1.2.2","--upgrade-package","pytz==2026.3.post1","--upgrade-package","pyyaml==6.0.3","--upgrade-package","pyyaml-env-tag==1.1","--upgrade-package","requests==2.34.2","--upgrade-package","rich==15.0.0","--upgrade-package","ruff==0.16.2","--upgrade-package","simplejson==4.1.1","--upgrade-package","six==1.17.0","--upgrade-package","stix2==3.0.2","--upgrade-package","stix2-patterns==2.1.2","--upgrade-package","strenum==0.4.15","--upgrade-package","tld==0.13.2","--upgrade-package","tomli==2.4.1","--upgrade-package","types-python-dateutil==2.9.0.20260807","--upgrade-package","types-pyyaml==6.0.12.20260724","--upgrade-package","types-requests==2.33.0.20260712","--upgrade-package","typing-extensions==4.16.0","--upgrade-package","typing-inspection==0.4.3","--upgrade-package","tzdata==2026.3","--upgrade-package","urllib3==2.8.0","--upgrade-package","watchdog==6.0.0","--default-index","https://pypi.org/simple"],"exit_code":0,"stderr_excerpt":"Using CPython 3.10.21\nResolved 77 packages in 595ms","eresolve_report":"","resolver":"uv"},{"event":"resolver_invocation_resources","resolver_name":"uv lock","wall_seconds":1.0616398869999557,"peak_rss_mb":2654,"worker_peak_rss_mb":2654},{"event":"final_outcome","status":"converged","summary":"uv lock succeeded on attempt 1","residue":[]},{"event":"verify_result","verdict":"clean","cleared":["CVE-2026-97687","CVE-2026-97688","CVE-2026-97689","GHSA-6q48-6c7w-9gw2"],"cleared_scoped":[],"accounted":[],"unaccounted":[],"unverified":[],"diverged_packages":[]},{"event":"context_source","mode":"db_first","advisory_corpus_age_days":0,"external_calls":22,"packages_by_layer":{"db":76}}]}