Contributing to The Tower Stats¶
Thank you for contributing to The Tower Stats. This project prioritizes correctness, traceability, and player trust.
Before starting, read docs/philosophy.md, docs/design_philosophy.md, and agents.md.
Contribution Principles¶
- Keep every change small, tested, and documented.
- Preserve raw game data; do not normalize destructively.
- Use descriptive, non-prescriptive language in user-facing text.
- Prefer deterministic, testable outputs over clever heuristics.
Required Workflow¶
- Follow the guidance in
agents.mdfor every contribution. - If you use a chatbot or automated assistant, it must follow
agents.mdwithout exception. - Add or update tests for every behavior change.
- Update documentation in
docs/for any functional change and ensuremkdocs.ymlstays accurate. - Follow versioning and changelog rules in
VERSIONING.md. - Do not change version numbers or
CHANGELOG.mdunless explicitly asked.
Engineering Standards¶
- Add concise Google-style docstrings to new public functions, classes, and modules.
- Confirm SemVer expectations in
VERSIONING.mdbefore proposing any version-related changes. - Enforce safe redirects via the centralized helper; never redirect to user-supplied URLs directly.
- New management commands must include permission checks.
- Analysis code must remain pure: no Django imports, no database writes.
Local Checks¶
Run the full validation suite before opening a PR:
./scripts/checks
Pull Requests¶
Every PR should describe:
- purpose
- approach
- touched files
- limitations
- follow-up tasks