- Core packages live in
src/<module>; each module (e.g.,runtime,wizard,grpc,utils,ddb,physics,avmf,tools,controller,driver,eval) bundles its code with a colocatedtestsfolder. - Shared docs in
docs/(onboarding, design), assets & sample data indata/, CI wiring incicd/. - Proto files compile under
src/grpc; generated stubs feed other packages. - Scripts and helpers sit in
tools/(includesbuildauth, map utilities). Keep temp artifacts undertmp/or gitignored caches.
- Create/update a local env:
./setup_local_env.sh(usesuvto create.venv, install editable packages, compile gRPC stubs, and registerpre-commithooks). - Activate tooling with
source .venv/bin/activate, then run module tasks usinguv run …. - Run the fast test bundle:
uv run pytest(respects default-m 'not manual'marker). Target a module withuv run pytest src/runtime/tests. - Static checks:
pre-commit run --all-filescoversblack,ruff, import sorting, and basic lint. Type-check runtime-heavy code viauv run mypy src/runtime.
- Python 3.12+, 4-space indentation, limit files to UTF-8 ASCII unless data demands otherwise.
- Auto-format with
black; keep imports sorted by the hooks. Useruffto satisfy lint warnings before pushing. - Follow PEP 8 naming plus domain hints: prefix vectors/poses with frames (
pose_local_to_rig,velocity_vehicle_in_local) to avoid ambiguity in physics/AV math. - Document complex flows with concise comments; prefer dataclasses and type hints for public APIs.
- Place tests next to their module under
src/<module>/testsand name filestest_*.py. - Default pytest config skips
@pytest.mark.manualsuites; mark long-running or cluster-dependent cases accordingly. - Use fixtures over hard-coded paths; when acting on sample assets, reference
data/or create temporary files. - Extend async tests with
pytest-asyncio; keep gRPC client stubs isolated to avoid network side-effects.
- Keep commits focused and imperative (
runtime: guard invalid rig transforms). Avoidwipin final history. - Rebase onto
mainbefore submitting; force-pushes are expected after rebases due to the linear history requirement. - Pipelines auto-bump versions for touched packages; allow the bot-generated commit to land and re-trigger CI if needed.
- PRs should explain scenario impact, reference issue IDs, and attach logs/screens for
wizard/runtime regressions. Confirm tests and
pre-commitpass before requesting review.
- Conventions on the used coordinate frames can be found in
CONTRIBUTING.md