Definition of done
A task is not done until the change is reviewed as a minimal and focused diff with no unrelated reformatting.
A task is not done until no generated files or virtual environment artifacts are modified or committed.
A task is not done until
uv run pytestpasses from the repository root.A task is not done until new or changed behavior has tests including relevant edge cases.
A task is not done until solver-related work has at least one test covering a failure or non-convergence path where practical.
A task is not done until
uv run ruff check .passes with no new ignores unless justified inline.A task is not done until
uv run ruff format . --checkpasses.A task is not done until
uv run mypypasses for the configured scope ofsrc/,examples/, andtests/.A task is not done until
uv run basedpyrightpasses for the configured scope ofsrc/,examples/, andtests/.A task is not done until substantial changes pass
./scripts/run_checks.sh.A task is not done until public APIs, conversion helpers, runtime methods with non-obvious parameterization or continuity behavior, and nontrivial schema dataclasses have substantive NumPy-style docstrings documenting shapes and key assumptions.
Avoid one-line docstrings for public or nontrivial APIs when parameters, return shapes, continuity conventions, or workflow intent are not obvious.
A task is not done until schema or behavior changes update the corresponding document in
docs/specs/ordocs/design/in the same PR.A task is not done until at least one example under
examples/is added or updated when a change materially affects public usage patterns, discoverability, or analysis workflow.For pure docs file moves, renames, archive changes, and wording-only documentation edits, prefer reference and link verification over full Python validation unless code-facing docs or examples changed.
For docs-only changes, test, lint, type-check, and docs-build commands may be skipped when no code paths changed, but the final summary must say which checks were not run.
A task is not done until the final summary includes what changed, why it changed, and which commands were run with their results.
Favor grouped end-of-task verification over many intermediate full-suite reruns unless an earlier focused check is needed to unblock the work.