# Fork the repo on GitHub first, then:
git clone https://github.com/<your-github-username>/quadro.git
cd quadro
pip install -e ".[dev]"pytestAll tests use LocalA2ANetwork and SqliteBoardBackend(":memory:"). No external
processes, no HTTP, no real databases required.
- Unit tests go in
tests/unit/. Test a single component in isolation. - Integration tests go in
tests/integration/. Test component interactions through the A2A layer. - All board access in tests goes through
network.request()with typed A2A envelopes. Do not call board methods directly or access private methods (prefixed_). - Use
A2ARequestfromquadro.a2a.contractsto build envelopes.
These must hold in all new code and tests:
- Board is the single source of truth. All coordination state is persisted on the board. No state is held in agents between invocations.
- A2A-only boundaries. No direct method calls between board, chief, and workers.
All cross-component calls go through
network.request(). - Single transition, single event. Every valid state transition emits exactly one immutable event. Invalid transitions emit nothing.
- Chief serialization. Only one chief decision loop runs at a time.
- Frozen event taxonomy. Only the event types in
FROZEN_EVENT_TYPESare valid. Adding a new event type is a versioning decision, not a convenience.
python examples/newsroom_cooperation.py
python examples/ordering_system.pypython examples/newsroom_cooperation.py
python -m quadro.ui newsroom.db --open