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
943 B
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)
core/may not import Qt oropenseespy. Period.services/may not import Qt.views/may not importopenseespydirectly — go through a service.- Public functions and methods need type hints and a docstring.
- New domain entities go through Pydantic validation.
- Long-running operations (>50 ms) run off the GUI thread.
Commit style
Conventional Commits — feat:, fix:, refactor:, docs:, test:,
chore:, ci:.