Skip to content

Blinding dependencies as core: Smokescreen fork pin, sacc, cryptography; Python floor 3.12#243

Merged
cailmdaley merged 1 commit into
developfrom
feat/sacc-1-deps
Jul 15, 2026
Merged

Blinding dependencies as core: Smokescreen fork pin, sacc, cryptography; Python floor 3.12#243
cailmdaley merged 1 commit into
developfrom
feat/sacc-1-deps

Conversation

@cailmdaley

@cailmdaley cailmdaley commented Jul 9, 2026

Copy link
Copy Markdown
Collaborator

Makes the blinding dependencies installable and reproducible as core runtime dependencies of sp_validation — blinding needs Smokescreen with its CCL theory backend, and with firecrown out of the picture the closure is small (Smokescreen fork + cryptography + sacc; pyccl already core), so it lives in the base install with no [blinding] extra.

Closes #242.

What this PR declares

  • Smokescreen, pinned as a single git install identity into the UNIONS-WL fork:
    smokescreen @ git+https://github.com/UNIONS-WL/Smokescreen@588a6b9
    The fork at this ref declares pyccl and imports its theory backends lazily, so the resolved graph is CCL-only — no firecrown, no numpy ceiling. Nothing is published to PyPI; the fork ships as a git pin only. Provisional pin: the SHA points at the fork's packaging branch; it will be swapped to the fork's release tag (same content, stable name) before merge.
  • sacc>=0.12 and cryptography, explicit in core dependencies, so the runtime closure is self-documenting and independent of fork-metadata drift.
  • uv.lock regenerated against the new closure.

Dockerfile and CI are unchanged: the closure is core, so the existing install line covers it, and an install failure of the fork pin already fails the image build.

Verified

On Python 3.12, a fresh uv venv + uv pip install -e . resolves without firecrown and without any numpy upper bound, and import smokescreen succeeds in the installed environment. uv lock resolves the fork ref cleanly.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QWF72ofwJh6ekgnCt9Xx6C

@cailmdaley cailmdaley changed the title deps: py3.12 floor + SACC/blinding stack (sacc, firecrown, smokescreen) Blinding dependencies as core: Smokescreen fork pin, sacc, cryptography; Python floor 3.12 Jul 10, 2026
cailmdaley added a commit that referenced this pull request Jul 11, 2026
…ll image from lock (#266)

* felt: fork-implementation — #243 green, #253 rework under fix; fork PRs reviewed

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KpaRHk3QwN13myduQ3hJyf

* felt: fork-implementation — constitution absorbs #241 re-rulings (one-file layout, per-part blinding at birth)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KpaRHk3QwN13myduQ3hJyf

* deps: declare cosmo_numba + numba, adopt committed uv.lock, install image from lock

Make sp_validation's environment reproducible so an image build can never
re-resolve numpy past numba's ceiling — the drift that silently upgraded numpy
to 2.5 and broke numba/ngmix.

- Declare cosmo-numba (aguinot/cosmo-numba@main; not on PyPI) — the numba
  B-mode kernels b_modes.py imports. main carries numpy-2 FFT support via its
  rocket-fft dep and declares its own deps, so numba's numpy window reaches the
  resolver. Also pin numba directly: the one load-bearing constraint, made
  visible and resilient to cosmo-numba's dep metadata (which has emptied out
  between refs).
- Declare the other imported-but-undeclared deps the audit found: matplotlib,
  pandas, pyyaml (core, src/); fitsio (glass extra); a new `workflow` extra for
  snakemake + mpi4py. cv_runner and unions_wl left undeclared (no resolvable
  source) with a NOTE.
- requires-python and ruff target -> 3.12 (the container's Python; cosmo-numba's
  floor).
- Commit uv.lock (un-ignored) as the SSOT; scope it to Linux via [tool.uv].
  numpy resolves to 2.4.6, inside numba 0.66's <2.5 window.
- Dockerfile installs from the lock: `uv sync --frozen --inexact` into the base
  image's /app/.venv (--inexact keeps the ShapePipe stack). Drops the ad-hoc
  snakemake layer and the cs_util `--upgrade` workaround — the lock pins
  cs_util 0.2.2 (with cs_util.size), decoupling us from the base image's cs_util.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vtw1qcgTrQ6YuMvxwYzNup

* felt: uv-lock-cosmo-numba — @main resolution, install model, cosmo-numba gotcha finding

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vtw1qcgTrQ6YuMvxwYzNup

* test: don't load base image's stale pytest-pydocstyle/pycodestyle plugins

uv sync installs a newer pytest than the base ShapePipe image's
pytest-pydocstyle/pytest-pycodestyle (>=2.4) expect; their pytest_collect_file
hooks use the removed `path` arg and crash collection. sp_validation lints with
ruff, so disable both via addopts (`-p no:`).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Vtw1qcgTrQ6YuMvxwYzNup

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
The blinding dependencies are core runtime dependencies — no optional
extra. The Smokescreen install identity is the UNIONS-WL fork pinned by
SHA on its packaging branch (declares pyccl, lazy theory-backend
imports, so the closure is CCL-only); the pin will be swapped to the
fork's release tag once the fork packaging PRs merge. sacc>=0.12 and
cryptography are declared explicitly; pyccl was already core.

The py3.12 floor arrived on develop independently (cosmo-numba), so it
drops out of this PR. uv.lock regenerated: fork ref resolved, no
firecrown and no numpy ceiling anywhere in the graph. No CI smoke test
for the fork import: an install failure already fails the image build,
and the SHA pin can't drift underneath us; real coverage arrives with
the blinding code (PR 6).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QWF72ofwJh6ekgnCt9Xx6C
@cailmdaley

Copy link
Copy Markdown
Collaborator Author

trivial PR, just adding dependencies

@cailmdaley
cailmdaley merged commit 1510563 into develop Jul 15, 2026
3 checks passed
@cailmdaley
cailmdaley deleted the feat/sacc-1-deps branch July 15, 2026 23:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dependencies: py3.12 floor + core blinding stack (fork pin, cryptography, sacc)

1 participant