Arco is developed as a workspace so Rust crates, the Python-facing API surface,
and tooling can evolve together. Before opening a PR, sync your branch with the
latest main so manifests, docs, and active work stay aligned.
Use workspace just targets as the default contributor entry point. This repository requires just >= 1.43.0 because the root justfile uses recipe group attributes unsupported by older releases.
If needed, install a compatible version with:
cargo install just --locked --version 1.43.0Use workspace just targets as the default contributor entry point:
just fmt
just clippy
just checkTreat clippy and compiler warnings as errors and fix them immediately.
For a full local gate before PR creation:
just ciFor Python commands, use uv consistently:
uv run pytestIf you touch Python bindings or Python test harnesses, keep execution under
uv run so environments and dependency resolution stay reproducible.
The repository ships GitHub Actions for package validation and release:
CIruns install/import smoke tests for built wheels across Python 3.10-3.14, validates source-distribution installation, and runs docs doctests.release-pleaseruns onmain, manages release PRs, creates tags and draft GitHub Releases, then dispatchescargo-dist-release.ymland publishes to PyPI.cargo-dist-release.ymlbuilds CLI binaries and installers, uploads them to the draft GitHub Release, and publishes it.- Releases follow one platform version stream (
arco) that updates workspace and Python package versions together. arcopublishes artifacts and releases; Rust crates are internal and versioned as part of the same platform release.- Shared package smoke logic lives in
scripts/python_package_smoke.py. - For policy and operator guidance, use
RELEASE_POLICY.mdas the source of truth.
Use targeted tests first, then broaden based on risk:
- Run tests for the crates and modules you changed.
- Add regression tests for every bug fix.
- Prefer realistic unit and end-to-end coverage over mock-heavy tests.
- When touching optimization plumbing, include cases that exercise memory behavior and hot paths.
- For benchmark-sensitive changes, gate regressions against a baseline artifact:
just bench-gate <baseline.jsonl> <candidate.jsonl> <duration_pct> <memory_pct>.
Suggested baseline command:
just testAnd when Python tests are present:
uv run pytestCall out any skipped suites, feature flags, or known test gaps in the PR description.
Documentation ships with behavior changes.
- If docs do not exist for a feature, the feature is not complete.
- Update
README.mdfor user-facing behavior and onboarding changes. - Update
AGENTS.mdwhen contributor workflow or engineering rules change. - Keep architecture and design docs in sync if you introduce new docs
directories (for example
docs/orrfd/).
Include reproduction or validation steps in docs when they help others verify the change quickly.