Repository rules
Dependency boundary
- Keep
goopdlexactly pinned to a reviewed PyPI release inpyproject.tomlanduv.lock, and record its installed version in provenance. - Call its CLI through subprocess so implementation can be replaced without rewriting builder.
- Add no provider abstraction until second provider exists in repository.
Artifact trust
Build must stop on missing or mismatched integrity metadata, package identity, version, architecture, or signing certificate. Keep downloaded files temporary and untrusted until every required check passes.
Never commit:
- Google Play auth tokens or caches
- Downloaded APK, split, OBB, or asset-pack files
- Secrets, credentials, or authenticated URLs
- Local files under
docs/plan/
Tests
Use Python standard-library unittest. Add one focused regression check for non-trivial branches, parsing, verification, or security behavior.
Required local checks:
bash
uv run python -m unittest discover -s tests
uv lock --checkConventional Commits
Every new commit must follow Conventional Commits 1.0.0:
text
<type>[optional scope]: <description>Examples:
text
feat(download): support separate ARMv7 output
fix(verify): reject truncated split APK
docs: document Google Play authenticationUse feat for features and fix for bug fixes. Other accepted types: docs, test, refactor, build, ci, chore, perf, and revert.
Breaking change:
text
feat(cli)!: rename architecture option
BREAKING CHANGE: callers must replace --abi with --archKeep description concise and imperative. Prefer separate commits when changes have different purposes.
