Stratax 0.2.0
Loading...
Searching...
No Matches
Contributing

Contributing

Developer notes for making changes to Stratax consistently.

Purpose

Defines the working conventions for code, tests, and documentation so new changes fit the existing project style.

Main API

Code Style

  • Use C++20.
  • Keep headers self-contained.
  • Prefer existing concepts and helper types.
  • Use constexpr when it improves correctness or clarity.

Testing

  • Add or update tests beside the feature being changed.
  • Cover normal behavior and edge cases.
  • Keep tests focused on public behavior.

Documentation

  • Update the matching file under docs/dev when public behavior or design intent changes.
  • Keep developer docs practical and implementation-focused.
  • Use the Arithmetic document structure for module docs.
  • Update user-facing guides under docs/guides when behavior changes.
  • Regenerate Doxygen output intentionally; do not hand-edit files under docs/output/html.
  • Keep API status notes aligned with implementation.
  • Keep troubleshooting and release notes current when build, packaging, or docs deployment changes.
  • Keep the Python API reference aligned with python/stratax/__init__.py and the .pyi stubs.

Naming

  • Classes use PascalCase.
  • Functions use snake_case.
  • Concepts use PascalCase.
  • Constants use UPPER_CASE.

Validation Notes

  • Changes that affect shape, indexing, construction, or arithmetic should include edge-case tests.
  • Avoid adding validation behavior in docs unless the implementation already supports it or it is clearly marked as future work.
  • Keep validation expectations aligned with the current state of Validation.hpp.

Implementation Notes

  • Prefer small, local changes over broad refactors.
  • Reuse existing container interfaces instead of introducing parallel APIs.
  • Keep generated or build artifacts out of commits.
  • Do not change unrelated files while addressing a focused task.

Future Work

  • Add formatting and linting rules.
  • Add pull request checklist templates.