Summary
Add a reproducible, hashed Python 3.11 Linux dependency lock for CI while preserving flexible source requirements for users.
Context
Implementation Notes
- Keep direct ranged requirements as the human-edited source contract.
- Use one existing/lightweight compilation tool and record the exact deterministic refresh command.
- Scope the lock explicitly to Python 3.11 on Linux; do not imply it is a universal user lock.
- Install the lock with hash verification in CI.
Acceptance Criteria
Tests/Evals
- Verify the lock from an empty Python 3.11 virtual environment.
- Do not install globally or run provider-capable commands.
Verification
- Install the CI lock in a disposable Python 3.11 virtual environment with
--require-hashes.
python3 -m ruff check .
npm test
npm run docs:check
- Confirm regenerating the lock produces no diff.
Agent Instructions
Human Checkpoints
- Stop if the selected resolver cannot produce stable hashes for the supported CI platform.
Out of Scope
- Poetry, uv, or a project-wide packaging migration.
- Locking every operating system and Python version.
- Application dependency upgrades unrelated to resolution.
- Global package installation.
Linear
Not applicable. Rafiki delivery is GitHub-only; do not create or update a Linear issue.
Summary
Add a reproducible, hashed Python 3.11 Linux dependency lock for CI while preserving flexible source requirements for users.
Context
.github/workflows/ci.ymlchanges are serialized.requirements.txt,requirements-dev.txt, a new CI lock file,.github/workflows/ci.yml,README.md, andCONTRIBUTING.mdImplementation Notes
Acceptance Criteria
--require-hasheson Python 3.11 Linux.Tests/Evals
Verification
--require-hashes.python3 -m ruff check .npm testnpm run docs:checkAgent Instructions
codex/issue-<this-issue>-python-ci-lock.Human Checkpoints
Out of Scope
Linear
Not applicable. Rafiki delivery is GitHub-only; do not create or update a Linear issue.