git clone https://github.com/YOUR-ORG/gps.git && cd gps
cp .env.example .env
uv run scripts/build_db.py --force
scripts/test.sh- Fork the repo and create a feature branch from
main - Make your changes
- Run
scripts/test.sh— all checks must pass - Open a PR against
main - PRs are squash-merged
- Python: ruff enforced by pre-commit hooks
- Line length: 120 characters
- Target: Python 3.11+
Run manually:
uv run ruff check .
uv run ruff format .scripts/test.sh runs:
- Config validation (
.envexists) - Lint (
ruff check,ruff format --check) - Database build (
build_db.py --force) - SQLite integrity check
- Key table population checks
- Schema diff against baseline
Accept schema changes with:
scripts/test.sh --accept-schema- Place a CSV/XLSX/PDF in
data/ - Add a loader function in
scripts/build_db.py(follow existing patterns) - Add the corresponding table(s) to the
SCHEMAstring - Wire the loader into
build_database() - Add a meta hash entry for change detection
- If the data needs an MCP tool, add one in
mcp_server.py - Run
scripts/test.sh --accept-schemato update the schema baseline
- Never commit:
.csv,.xlsx,.pdf,.db,.env, tokens, secrets - Exception:
data/acme-*example files are tracked - Use
uv(notpip) - Database is always opened read-only by consumers
- Governance policy edits require explicit approval