Agent and Contributor Rules¶
Stack Identification¶
Before executing any task, audit the active dependency stack. Do not assume the presence of any library.
Parse
pyproject.toml([project.dependencies]and[project.optional-dependencies]) anduv.lockto identify the exact versions in use.Use only libraries already declared in those files. Never introduce a conflicting or unlisted package without an explicit instruction to update dependencies.
Apply the following decision matrix when selecting implementation patterns:
Concern |
Source of truth |
Current library |
|---|---|---|
HTTP client |
|
|
Data validation / models |
|
|
CLI framework |
|
|
Retry logic |
|
|
HTTP mocking in tests |
|
|
Type checking |
|
|
Linting |
|
|
Formatting |
|
|
Immutable Constraints¶
Credential Handling¶
Never log, print, write to disk, or transmit API keys, security keys, tokens, or authorization headers in plaintext under any circumstance.
Mask credential values in all log output and exception messages.
Testing Boundaries¶
Test location |
Network access |
Required mock library |
|---|---|---|
|
Forbidden — no live requests |
|
|
Forbidden — use recorded fixtures |
|
|
Permitted — real API calls |
None (guarded by |
All new or modified code must include or update tests in
tests/unit/.Coverage must remain ≥ 90%.
Do not add
tests/live/calls to the defaultpytestrun.
Commit Messages and Pull Requests¶
PR titles must follow Conventional Commits. Permitted prefixes:
feat:,fix:,chore:,docs:,ci:,test:,refactor:,perf:,revert:. TheSemantic PR TitleCI check enforces this.Merge to
mainvia Squash and merge so the PR title becomes the commit message.Changes that affect the public API, CLI interface, or environment variables must be noted in the PR description for Render deployment review.
Release Process¶
Do not manually edit package versions in
packages/*/pyproject.toml. Versions are managed automatically byrelease-please.Releases are fully automated. After merging a Release PR,
release-pleasecreates a package-specific Git tag and thePipelineworkflow publishes the tagged package to PyPI.