F17-001: commit the API box's nestquest-api-firewall.service verbatim as deploy/systemd/nestquest-api-firewall.service (DOCKER-USER RETURN for 10.60.1.33 and 10.60.1.14, then DROP tcp/8080) and make the runbook install it from the repository before exposing the API. F17-002: pin the python:3.12-slim base image by digest in both build stages, pin api/requirements.txt to the exact versions installed in the deployed image (direct deps plus transitive closure), and pin the litestream image by digest in deploy/compose.yaml. Task: e4a7b18b-5dad-4387-90ac-33588c280824 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
39 lines
1.3 KiB
Plaintext
39 lines
1.3 KiB
Plaintext
# Runtime dependency manifest for the NestQuest API deployable.
|
|
#
|
|
# The monorepo's pyproject.toml carries fastapi/uvicorn/pyjwt/httpx in
|
|
# the INTEGRATION's dev group only (so the test venv can exercise the
|
|
# API); they are deliberately NOT integration runtime dependencies.
|
|
# Per that manifest's own comment, the API deployable declares its own
|
|
# runtime dependencies HERE — this file is what the container image
|
|
# installs (see the Dockerfile at the repository root).
|
|
#
|
|
# EXACT pins: the versions installed in the deployed image
|
|
# (nestquest-api:latest on the API box, read with importlib.metadata),
|
|
# so a rebuild resolves the same packages. The four direct
|
|
# dependencies come first; the rest is their resolved transitive
|
|
# closure, pinned too so nothing floats. The dev group's floors in
|
|
# pyproject.toml are unchanged. Bump deliberately, together with the
|
|
# Dockerfile's digest-pinned base image.
|
|
fastapi==0.141.1
|
|
uvicorn==0.53.0
|
|
pyjwt[crypto]==2.15.0
|
|
httpx==0.28.1
|
|
|
|
# Transitive dependencies of the above.
|
|
annotated-doc==0.0.5
|
|
annotated-types==0.8.0
|
|
anyio==4.15.1
|
|
certifi==2026.7.22
|
|
cffi==2.1.1
|
|
click==8.5.0
|
|
cryptography==50.0.1
|
|
h11==0.16.0
|
|
httpcore==1.0.9
|
|
idna==3.20
|
|
pycparser==3.0
|
|
pydantic==2.13.5
|
|
pydantic_core==2.46.5
|
|
starlette==1.7.0
|
|
typing-inspection==0.4.4
|
|
typing_extensions==4.16.0
|