# Contributing to UGTC Thank you for your interest in contributing to UGTC! ## Getting Started ```bash git clone https://github.com/ethosoftai/ugtc.git cd ugtc pip install -e ".[dev]" ``` ## Development Setup ```bash pip install ruff black isort mypy pytest pytest-cov ``` ## Running Tests ```bash pytest tests/ -v pytest tests/ -v --cov=ugtc --cov-report=html ``` ## Code Style We use: - **black** for formatting (line length 100) - **isort** for import ordering - **ruff** for linting - **mypy** for type checking ```bash black ugtc/ tests/ examples/ isort ugtc/ tests/ examples/ ruff check ugtc/ tests/ examples/ mypy ugtc/ --ignore-missing-imports ``` ## Types of Contributions ### Bug Reports Open an issue with: - Minimal reproducible example - Expected vs actual behavior - Python/PyTorch/OS version ### New RL Algorithm Integrations When adding a new RL backbone integration (e.g., UGTC-IMPALA): 1. Create `ugtc/impala.py` following the pattern of `ugtc/ppo.py` 2. Add integration tests to `tests/test_integrations.py` 3. Add an example to `examples/` 4. Clearly label if the integration is from the paper or a proposed extension ### New Benchmark Scripts Add to `benchmarks/` with: - Clear docstring explaining the experiment - Config at the top of the file - Full standalone runnable script ### Documentation - Improve `docs/index.html` - Fix typos in README or pseudocode ## Transparency Requirements UGTC is a published research codebase. Please: 1. **Do not fabricate benchmark numbers.** If you run experiments and get results, share them as your own empirical findings, not as paper claims. 2. **Label assumptions.** If you implement an extension not described in the paper, mark it with `# NOTE: implementation extension — not in paper`. 3. **Cite correctly.** Reference [the paper](https://doi.org/10.5281/zenodo.19715116) when using this work. ## Pull Request Process 1. Fork the repository 2. Create a feature branch: `git checkout -b feature/my-feature` 3. Commit changes with clear messages 4. Ensure all tests pass and linting is clean 5. Open a PR with a description of what changed and why ## Code of Conduct This project follows the [Contributor Covenant](CODE_OF_CONDUCT.md).