OSSF Silver Criterion
build_repeatable (MUST) — The project MUST have a reproducible build. If no build is required, select "not applicable."
Description
Generate and commit pip lock files for the repository's Python dependencies. The requirements.txt at the repository root currently has loosely pinned dependencies with no lock file, making Python builds non-reproducible. This issue covers the Python portion of build_repeatable. The Terraform portion is addressed in #166.
Acceptance Criteria
Implementation Guidance
Use uv pip compile to generate a hash-pinned lock file from the existing requirements.txt. The uv lock command requires a pyproject.toml which does not exist — uv pip compile works directly with requirements.txt and aligns with project conventions (.github/instructions/uv-projects.instructions.md).
# Generate hash-pinned lock file
uv pip compile requirements.txt -o requirements.lock --generate-hashes
# Install from lock file in CI
uv pip install -r requirements.lock
Update CI scripts that install Python dependencies to use requirements.lock instead of requirements.txt. Add a regeneration note to CONTRIBUTING.md or the lock file header.
References
- Research:
.copilot-tracking/research/2026-02-07-ossf-silver-gaps-detail-research.md — build_repeatable
Relationships
OSSF Silver Criterion
build_repeatable(MUST) — The project MUST have a reproducible build. If no build is required, select "not applicable."Description
Generate and commit pip lock files for the repository's Python dependencies. The
requirements.txtat the repository root currently has loosely pinned dependencies with no lock file, making Python builds non-reproducible. This issue covers the Python portion ofbuild_repeatable. The Terraform portion is addressed in #166.Acceptance Criteria
requirements.lockviauv pip compile --generate-hashes)uv pip install -r requirements.lock)Implementation Guidance
Use
uv pip compileto generate a hash-pinned lock file from the existingrequirements.txt. Theuv lockcommand requires apyproject.tomlwhich does not exist —uv pip compileworks directly withrequirements.txtand aligns with project conventions (.github/instructions/uv-projects.instructions.md).Update CI scripts that install Python dependencies to use
requirements.lockinstead ofrequirements.txt. Add a regeneration note to CONTRIBUTING.md or the lock file header.References
.copilot-tracking/research/2026-02-07-ossf-silver-gaps-detail-research.md— build_repeatableRelationships