Contribution Guide

0. Read the engineering memory first

This repository is developed by multiple coordinated AI agents under a strict

contract. A human contributor benefits from the same discipline:

  1. ">https://github.com/Opselon/NexusTradingForexBot/blob/main/agents/skill.md">agents/skill.md — authoritative architecture map
  2. ">https://github.com/Opselon/NexusTradingForexBot/blob/main/agents/multi-agent-git-contract.md">agents/multi-agent-git-contract.md — the collaboration contract
  3. ">https://github.com/Opselon/NexusTradingForexBot/blob/main/agents/contracts.md">agents/contracts.md + ">https://github.com/Opselon/NexusTradingForexBot/blob/main/agents/runtime_invariants.md">agents/runtime_invariants.md — contracts & invariants
  4. ">https://github.com/Opselon/NexusTradingForexBot/blob/main/agents/bugs.md">agents/bugs.md — don't re-discover known bugs

1. Where things live

2. Bootstrap

git clone https://github.com/Opselon/NexusTradingForexBot.git
cd NexusTradingForexBot
python -m venv .venv && .\.venv\Scripts\Activate.ps1
pip install -e .[dev]
pytest tests/unit -q          # must be green before you start

3. Change discipline

change without a contract update; no bug fix without a reproducer when

practical.

(live_engine.py, order_manager.py, policy.py) require explicit

justification and golden tests.

4. Commits & PRs

(what/why/evidence/verification).

travel with the fix, CI checks respected, documentation updated when

behavior or contracts change.

5. Quality gates

beforePush.sh / .ps1: ruff → format → mypy → critical pytest suite →

forensic deploy gate. See Quality & Testing.

6. Fork-and-PR flow

Fork & PR (PEP 8 via ruff, strict mypy, pytest coverage — the gates enforce

it), or open an issue with [Research] / [Proposal] tags. External PRs

should not touch agents/ registries (agent-owned) except to add a taskboard

row.