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 pytest passes 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 . --check passes.

  • A task is not done until uv run mypy passes for the configured scope of src/, examples/, and tests/.

  • A task is not done until uv run basedpyright passes for the configured scope of src/, examples/, and tests/.

  • 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/ or docs/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.