Skip to main content

Orchestrator Evaluation Harness

Installable, contract-driven comparison of two software-development orchestrator models. It supports OpenRouter and other OpenAI-compatible Chat Completions endpoints, including different endpoints for the two candidates and the coding worker.

The package contains the v2 contract gateway, deterministic Oracle arm, live worker arm with replay cassettes, six validated task/scenario pairs, budget ledger, paired statistics, Markdown/JSON reporting, and neutral evidence-bundle export. It contains no historical results.

Install

Build locally:

python3 -m build
python3 -m pip install dist/orchestrator_eval_harness-0.2.0-py3-none-any.whl

Or install the source checkout:

python3 -m pip install .

Create an editable configuration:

orchestrator-eval --output experiment.json init-config

Configure endpoints and models

Credentials are never stored in JSON. api_key_env names the environment variable that contains the bearer token. Set it to null for an endpoint that does not require authentication.

{
  "experiment_id": "candidate-a-vs-candidate-b",
  "endpoints": {
    "openrouter": {
      "url": "https://openrouter.ai/api/v1/chat/completions",
      "api_key_env": "OPENROUTER_API_KEY",
      "provider_routing": true,
      "include_usage": true,
      "headers": {
        "HTTP-Referer": "https://localhost/orchestrator-eval",
        "X-Title": "Orchestrator Evaluation Harness"
      }
    },
    "local": {
      "url": "http://127.0.0.1:1234/v1/chat/completions",
      "api_key_env": null,
      "provider_routing": false,
      "include_usage": false,
      "headers": {}
    }
  },
  "orchestrators": {
    "candidate_a": {
      "endpoint": "openrouter",
      "model": "vendor/model-a",
      "input_price_per_token": 0.0000001,
      "output_price_per_token": 0.0000004,
      "reasoning": {"enabled": true}
    },
    "candidate_b": {
      "endpoint": "local",
      "model": "model-b",
      "input_price_per_token": 0,
      "output_price_per_token": 0,
      "reasoning": {}
    }
  },
  "worker": {
    "endpoint": "local",
    "model": "coding-worker",
    "input_price_per_token": 0,
    "output_price_per_token": 0,
    "reasoning": {}
  }
}

Keep the remaining limits and statistical parameters from the generated template. Exactly two orchestrators are required. Static authorization, cookie, and API-key headers are rejected; secrets must come from environment variables.

provider_routing: true enables OpenRouter provider discovery and pins each model to its discovered provider for scored calls. Generic endpoints should normally use false. include_usage: true sends OpenRouter's explicit usage request field; leave it false for generic OpenAI-compatible servers.

Run

Offline checks require no credentials:

orchestrator-eval --config experiment.json validate
orchestrator-eval --config experiment.json power
orchestrator-eval --config experiment.json --results-dir /tmp/eval-dry dry-run

Live evaluation:

export OPENROUTER_API_KEY="..."
orchestrator-eval --config experiment.json run

By default, results are written to ./results/<experiment_id>/. Use --results-dir to choose another location. Stages are resumable:

orchestrator-eval --config experiment.json smoke
orchestrator-eval --config experiment.json screen
orchestrator-eval --config experiment.json e2e
orchestrator-eval --config experiment.json report

Custom task/scenario sets can be supplied together:

orchestrator-eval \
  --config experiment.json \
  --tasks-dir ./my-tasks \
  --scenarios-dir ./my-scenarios \
  validate

Both directories must contain matching unique id and class fields.

Analyze an existing run

report recomputes the paired statistics and writes report.json plus report.md. It does not call a model:

orchestrator-eval \
  --config experiment.json \
  --results-dir ./results/candidate-a-vs-candidate-b \
  report

Export the raw run rows, screening rows, configuration, report, ledger, provider pins, cassette statistics, and integrity hashes into one neutral JSON file:

orchestrator-eval \
  --config experiment.json \
  --results-dir ./results/candidate-a-vs-candidate-b \
  bundle

What the evaluation measures

The primary orchestration arm uses a deterministic Oracle worker, isolating delegation, ownership, verification, correction, and finalization behavior. The secondary system arm uses the configured coding worker behind a cassette store. Provider failures are recorded as infra_error and excluded from model success rates.

Every manager tool call is locally schema-validated. Delegated paths must be authorized and disjoint, acceptance checks must name manifest checks, worker test claims are checked, and finalization requires fresh harness-issued verification evidence.

The decision rule requires the configured minimum number of complete pairs, a paired bootstrap interval excluding zero, the configured practical effect size, and exact McNemar significance.

Verify a distribution

python3 scripts/verify_distribution.py dist/*.whl dist/*.tar.gz

The verifier rejects archives containing result directories, workspaces, cassettes, generated reports/bundles, caches, or secret-looking API keys.

Metadata

Release files for orchestrator-eval-harness 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for orchestrator-eval-harness 0.2.0
File Size Uploaded Provenance Actions
orchestrator_eval_harness-0.2.0.tar.gz 66.8 kB Without provenance Details for orchestrator_eval_harness-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for orchestrator-eval-harness 0.2.0
File Interpreter ABI Platform Actions
orchestrator_eval_harness-0.2.0-py3-none-any.whl Python 3 none any Details for orchestrator_eval_harness-0.2.0-py3-none-any.whl

Total release size: 130.1 kB

Release files / orchestrator_eval_harness-0.2.0.tar.gz

Download URL orchestrator_eval_harness-0.2.0.tar.gz
Size 66.8 kB
Tags Source
SHA-256 checksum
How to use checksums
15b6fb0ff9c82e8c556dbf6a4f77fbb0f0b350dbb229a16fe25c28f595c34bad
BLAKE2b-256 checksum
How to use checksums
70c6d65ee6392d0cdb164c5fa121321e2beda132c6211636fc08255782ff8a11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / orchestrator_eval_harness-0.2.0-py3-none-any.whl

Download URL orchestrator_eval_harness-0.2.0-py3-none-any.whl
Size 63.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
618c1cf1fa12a77364da58691972f983c67a194956b2c47709dcbbd2530b26df
BLAKE2b-256 checksum
How to use checksums
0ae24880013df2bf2faa6505261c8eb46012b6852e5d6b2dc6d33f42d4a8c596
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Security for orchestrator-eval-harness 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page