Skip to content

Commit 82b4a94

Browse files
authored
fix(deps): the hvac cap the comment described was never in the specifier (#125)
The [vault] extra read `hvac>=2.3.0` while its own comment said "a bare `>=` would silently jump a major on re-lock, so keep the floor pinned to the 2.x series". A bare `>=` is exactly what it was, so the intent was documented and unenforced — the prose was a compensating control resting on a false premise. That matters more here than for a typical dep: hvac fronts the store DEK (ADR 0019 §3 Vault Transit envelope decryption), and CI never installs the [vault] extra, so a major arriving through a re-lock would reach a release without one test exercising it. `hvac>=2.3.0,<3`. hvac stays at 2.4.0, so this is a no-op for the resolution: `uv lock` moves one specifier line and all SIX exported locks re-export byte-identically (verified with the CI-pinned uv 0.12.0 — requirements.lock, constraints.lock, both docker/locks, both ci/locks). DEP-1 sees no churn. No Dependabot ignore entry to match it, deliberately: auto-merge already routes majors to manual review, and an ignore would suppress hvac's security track for no gain.
1 parent 599f9e2 commit 82b4a94

2 files changed

Lines changed: 10 additions & 5 deletions

File tree

pyproject.toml

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,18 @@ webauthn = ["webauthn>=3.0.0,<4"]
170170
# HashiCorp Vault KeyProvider (ADR 0019 §3, BACKLOG #196): envelope-decrypt the store DEK via Vault
171171
# Transit. `hvac` is the OFFICIAL HashiCorp Vault Python client (Apache-2.0), named in ADR 0019 §3's
172172
# provider table. Lazy-imported (store/keyprovider_vault.py), so installs that never select
173-
# `[store].key_provider=vault` skip it and the base install still pulls ZERO Vault SDK. Floor >=2.3.0:
174-
# the current 2.x line (Python 3.8+, requests-based); a bare `>=` would silently jump a major on re-lock,
175-
# so keep the floor pinned to the 2.x series. Net-new transitives (dep-vet 2026-07-10): requests + urllib3
173+
# `[store].key_provider=vault` skip it and the base install still pulls ZERO Vault SDK. Bounded
174+
# >=2.3.0,<3: the current 2.x line (Python 3.8+, requests-based). The cap is the half that was missing —
175+
# the prose already said "a bare `>=` would silently jump a major on re-lock", which is exactly what
176+
# `hvac>=2.3.0` was, so the intent was documented and unenforced. hvac fronts the store DEK (ADR 0019
177+
# §3), and CI never installs the [vault] extra, so a major arriving through a re-lock would reach a
178+
# release without a single test exercising it. Deliberately NOT mirrored by a Dependabot ignore entry:
179+
# auto-merge already routes majors to manual review, and an ignore would suppress hvac's security track
180+
# for no gain. Net-new transitives (dep-vet 2026-07-10): requests + urllib3
176181
# (both ubiquitous, mature; the lock resolves urllib3>=2.7.0 — CVE-2025-50181/50182 SSRF-redirect fixes)
177182
# plus charset-normalizer/idna/certifi. hvac ships NO type stubs — mypy-strict containment lives inside
178183
# store/keyprovider_vault.py (a targeted typed local), never a repo-wide ignore.
179-
vault = ["hvac>=2.3.0"]
184+
vault = ["hvac>=2.3.0,<3"]
180185
# The browser ops console ([api].serve_ui, ADR 0065) is a separately-versioned second wheel
181186
# (messagefoundry-webconsole, in packaging/messagefoundry-webconsole/) mounted same-origin in-process via
182187
# mount_ui. It is deliberately NOT declared as a [webconsole] extra yet: the wheel isn't published to an

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)