otko/CONTRIBUTING.md
smillmorel 3d809ca301
Some checks failed
CI / lint (pull_request) Has been cancelled
CI / test (macos-latest, 3.10) (pull_request) Has been cancelled
CI / test (macos-latest, 3.11) (pull_request) Has been cancelled
CI / test (macos-latest, 3.12) (pull_request) Has been cancelled
CI / test (ubuntu-latest, 3.10) (pull_request) Has been cancelled
CI / test (ubuntu-latest, 3.11) (pull_request) Has been cancelled
CI / test (ubuntu-latest, 3.12) (pull_request) Has been cancelled
CI / test (windows-latest, 3.10) (pull_request) Has been cancelled
CI / test (windows-latest, 3.11) (pull_request) Has been cancelled
CI / test (windows-latest, 3.12) (pull_request) Has been cancelled
docs: rewrite READMEs dry and blunt, rename Studio to OTKO
2026-09-08 02:41:03 -04:00

943 B

Contributing

Early-stage project. The bar is architecture cleanliness, not feature count. If your change breaks a layering rule below, it won't merge — no matter how useful the feature.

Dev setup

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pre-commit install

Before opening a PR

ruff check src tests
ruff format src tests
mypy src/otko/core src/otko/services
pytest -m "not slow"

Architectural rules (enforced in review)

  1. core/ may not import Qt or openseespy. Period.
  2. services/ may not import Qt.
  3. views/ may not import openseespy directly — go through a service.
  4. Public functions and methods need type hints and a docstring.
  5. New domain entities go through Pydantic validation.
  6. Long-running operations (>50 ms) run off the GUI thread.

Commit style

Conventional Commits — feat:, fix:, refactor:, docs:, test:, chore:, ci:.