agent-orchestrator/CONTRIBUTING.md
Hibryda 5836fb7d80 feat: community export workflow — strip script, leak-check hardening, CLA docs
- scripts/strip-commercial.sh: removes agor-pro/, commercial files, SPDX headers
- leak-check.yml: added LICENSE-COMMERCIAL, SPDX header, and feature flag checks
- CONTRIBUTING.md: external contributor guide, commercial content table, sync docs
2026-03-22 04:39:07 +01:00

5.2 KiB

Contributing to Agent Orchestrator

Dual-Repository Model

This project uses a dual-repo structure:

Repository License Purpose
DexterFromLab/agent-orchestrator MIT Community edition (open source)
agents-orchestrator/agents-orchestrator MIT + Commercial Commercial edition (this repo)

Community contributions target the community repo. Commercial development happens exclusively in this repo. The two share a common main branch that is synced periodically.

Community Contributions

All community contributions go to DexterFromLab/agent-orchestrator. Do not open PRs against this repo for community features.

How to Contribute

  1. Fork the community repo at DexterFromLab/agent-orchestrator
  2. Create a feature branch from main
  3. Make your changes and commit using conventional commits
  4. Open a pull request against DexterFromLab/agent-orchestrator main
  5. Sign the CLA when prompted by the bot on your first PR
  6. Address review feedback
  7. Once approved, a maintainer will merge your PR

Do not fork or open PRs against agents-orchestrator/agents-orchestrator for community contributions. That repository contains commercial code and access is restricted.

Contributor License Agreement (CLA)

Every community contributor must sign the CLA before their first PR is merged. CLA signing is automated via CLA-assistant.io on the community repository. The bot will prompt you on your first PR.

The CLA grants the project maintainers a perpetual, irrevocable license to use your contribution in both the community and commercial editions. You retain full ownership of your code. See CLA.md for the full agreement text.

Commercial Development

Commercial features are developed only in this repository. Access is restricted to authorized team members.

What Content Is Commercial-Only

The following paths and markers identify commercial-only content:

Marker Description
agor-pro/ Commercial feature modules
src/lib/commercial/ Commercial frontend components
tests/commercial/ Commercial test suites
LICENSE-COMMERCIAL Commercial license file
LicenseRef-Commercial SPDX header Any file with this header
test:all:commercial script Commercial test runner

This content is automatically stripped during community sync and never appears in the community repository.

SPDX License Headers

All commercial source files must include the following header as the first line:

// SPDX-License-Identifier: LicenseRef-Commercial

For CSS/HTML files:

/* SPDX-License-Identifier: LicenseRef-Commercial */

For Rust files:

// SPDX-License-Identifier: LicenseRef-Commercial

Community-shared code uses the MIT identifier:

// SPDX-License-Identifier: MIT

Community Sync Workflow

The community repo is kept in sync with this repo via an automated workflow:

  1. Trigger: Manual dispatch or on release tag publication
  2. Strip: scripts/strip-commercial.sh removes all commercial content
  3. Verify: Automated checks ensure no commercial references remain
  4. Push: A sync branch is pushed to DexterFromLab/agent-orchestrator
  5. Merge: A maintainer reviews and merges the sync PR

To preview what would be stripped locally:

# Dry run — shows what files would be removed (modifies working tree)
bash scripts/strip-commercial.sh
# Reset after preview
git checkout .

The leak-check CI workflow runs on every push and PR to main, verifying that no commercial content has been accidentally committed to community-bound code.

Branch Model

Branch Purpose
main Shared with community edition. Never commit commercial code here.
commercial/* Commercial-only features. Merged into the commercial release branch.
feature/*, fix/* Standard development branches.

Sync Flow

The community repo's main is merged into this repo's main periodically:

community/main --> origin/main --> commercial branches

Use make sync to pull community changes. Never force-push main.

Commit Conventions

Use Conventional Commits:

type(scope): description

feat(dashboard): add team analytics panel
fix(sidecar): handle timeout on agent restart
docs(api): update webhook payload reference
chore(deps): bump tauri to 2.3.1

Types: feat, fix, docs, style, refactor, perf, test, chore, ci, build.

Breaking changes use type!: prefix or include BREAKING CHANGE: in the footer.

Testing

Both editions must pass their respective test suites before merge:

# Community tests (must always pass on main)
npm run test:all

# Commercial tests (includes commercial-specific tests)
npm run test:all:commercial

Do not merge a PR if either suite is red. If a community sync introduces failures in commercial tests, fix them before merging.

Code Review

  • All PRs require at least one approval.
  • Commercial PRs must be reviewed by a team member with commercial repo access.
  • Verify no commercial code leaks into community-bound branches before approving.