Thanks for helping improve Get Physics Done.
GPD is published by Physical Superintelligence PBC (PSI) as an open-source community contribution for physics research workflows. We welcome fixes, tests, documentation improvements, and carefully scoped feature work.
All contributors must sign a CLA before their pull requests can be merged.
Individual contributors: Sign the CLA at https://cla-assistant.io/psi-oss/get-physics-done — the CLA Assistant bot will prompt you automatically when you open a pull request.
Corporate contributors (if your employer owns your IP): Download GPD_CLA_Corporate.pdf, sign it, and email it to legal@psi.inc.
- Search existing issues and pull requests before opening a new one.
- For non-trivial changes, open an issue or discussion first so the implementation direction is clear.
- Keep changes tightly scoped. Small, reviewable pull requests are strongly preferred.
uv sync --dev
source .venv/bin/activateBefore we can accept a contribution, you must complete the applicable CLA:
- Individual contributors should review
CLA/GPD_CLA_Individual.pdf; signing is handled automatically via the CLA Assistant GitHub flow at https://cla-assistant.io/psi-oss/get-physics-done - Corporate contributors, or contributors whose employer owns their IP, should review
CLA/GPD_CLA_Corporate.pdfand email the signed PDF to legal@psi.inc - Corporate CLA submissions are collected manually and should be logged by the owner of contributor agreement tracking, Ted Grace
- If your employer owns the intellectual property for your work, use the corporate CLA flow instead of the individual one
Useful checks:
uv build
npm_config_cache="$(mktemp -d)" npm pack --dry-run --json
uv run python -m scripts.sync_repo_graph_contract
uv run pytest tests/test_metadata_consistency.py -v
uv run pytest tests/test_release_consistency.py -v
uv run pytest tests/adapters/test_registry.py tests/adapters/test_install_roundtrip.py -v
uv run pytest tests/core/test_cli.py -v
uv run pytest tests/ -vCross-runtime release checks:
tests/adapters/test_registry.pyandtests/adapters/test_install_roundtrip.pycover install-time translation across Claude Code, Gemini CLI, Codex, and OpenCode.tests/core/test_cli.pycovers the publicgpdCLI surface.tests/test_metadata_consistency.pycovers public docs, inventory counts, and CLI/registry metadata alignment.tests/test_release_consistency.pycovers the public install flow, release artifacts, and release-facing messaging.uv buildvalidates the published Python wheel and sdist.npm pack --dry-run --jsonvalidates the publishednpxbootstrap package surface before release. Use a temporary cache outside the repo so the worktree does not gain a local.npm-cache/.- Gemini installs are expected to be complete on disk after
GeminiAdapter.install():.gemini/settings.jsonshould already exist withexperimental.enableAgents, GPD hooks, GPD MCP servers, andpolicyPathsconfigured, andpolicies/gpd-auto-edit.tomlshould already be present. - OpenCode installs are expected to leave
opencode.jsoncomplete on disk with GPD-managedpermission.read/permission.external_directoryentries and built-in MCP servers under themcpkey.
- Public install docs should use
npx -y get-physics-done. - Do not reintroduce stale internal paths such as
packages/gpdinto docs or descriptors. - Keep public artifacts present and up to date:
README.md,LICENSE,CITATION.cff,CONTRIBUTING.md,package.json, andpyproject.toml. - Keep the
testsworkflow pinned to the minimum supported Python version (3.11) unless we intentionally broaden CI coverage. - Keep
infra/gpd-*.jsonsynced with the canonical descriptor builder insrc/gpd/mcp/builtin_servers.py. - Keep user-facing validation docs aligned with the CLI surface in
gpd validate, especiallyconsistency,project-contract,review-preflight,paper-quality,referee-decision, andreproducibility-manifest. - Do not commit secrets, private infrastructure details, internal strategy notes, or cached research outputs.
mainis protected: direct pushes are blocked, and pull requests must pass the requiredtestsworkflow before merge.- Feature and fix PRs must not bump package versions or publish releases.
- Add public release notes under
## vNEXTinCHANGELOG.mdso the release workflows can prepare the next tagged release from reviewed notes. - Add or update tests when behavior changes.
- Update public docs when install flow, commands, or release messaging changes.
- Keep commit messages concise and descriptive.