Skip to main content

Equitas

Corruption-Robust Aggregation for Multi-LLM Governance Committees

A benchmark for evaluating aggregation strategies in hierarchical multi-LLM committees under adversarial corruption.

Quick Start

pip install equitas-benchmark          # from PyPI
# or for local development:
pip install -e .
python -m equitas --config configs/governance_sweep_fh.yaml

Aggregation Methods (8 baselines + oracle)

Method Key Idea
Oracle Hindsight-optimal action (upper bound)
Multiplicative Weights w *= exp(-eta * loss), adapts to corruption
Supervisor Rerank Follow-the-leader: re-rank by best recent agent
Confidence-Weighted Weight by self-reported confidence
EMA Trust Exponential moving average of past performance
Trimmed Vote Drop outlier agents, then majority
Majority Vote Equal-weight plurality
Oracle Upper Bound Best single agent in hindsight
Random Dictator Uniformly random agent each round

Experiments

  1. Corruption sweep: rate x adversary type x aggregator
  2. Pareto sweep: welfare-fairness tradeoff via (alpha, beta)
  3. Recovery: mid-run corruption onset, track MW weight recovery
  4. Scaling: committee size N in {3, 5, 7, 10}
  5. Hierarchical vs flat: architecture comparison

Reproducibility

Raw experiment outputs in outputs/ include historical runs with all methods tested during development (including self_consistency). The reported benchmark results exclude self_consistency at the analysis layer: table-generation scripts (scripts/generate_benchmark_tables.py, scripts/generate_go_vs_fh_tables.py) and figure-generation (regenerate_figures.py) filter it out on read. The self_consistency aggregator is also hard-disabled in the codebase (equitas/config.py raises ValueError if used) because it implements a committee-level subsampled majority vote, not canonical within-agent self-consistency sampling. See the future-work discussion in the paper.

To regenerate all artifacts from raw data:

python scripts/generate_benchmark_tables.py   # tables/benchmark/
python scripts/generate_go_vs_fh_tables.py    # tables/
python regenerate_figures.py                   # paper/figures/
python -m pytest tests/ -q                    # 88 tests

Project Structure

equitas/          # pip-installable package
  agents/         # LLM client, member/leader/judge/governor agents
  aggregators/    # 8 aggregation strategies (registry pattern)
  adversaries/    # 4 adversary types (selfish, coordinated, scheduled, deceptive)
  metrics/        # fairness, welfare, Pareto, robust statistics
  simulation/     # hierarchical + flat engine
  experiments/    # sweep, recovery, scaling, pareto, hier-vs-flat
  plotting/       # paper-quality matplotlib figures
configs/          # YAML experiment configs
scripts/          # table generation, analysis
paper/            # LaTeX source + figures
tests/            # 88 unit + integration tests

Metadata

Release files for equitas-benchmark 0.1.2

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

Source distribution (sdist)

Source distribution for equitas-benchmark 0.1.2
File Size Uploaded
equitas_benchmark-0.1.2.tar.gz 80.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for equitas-benchmark 0.1.2
File Interpreter ABI Platform
equitas_benchmark-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 189.6 kB

Release files / equitas_benchmark-0.1.2.tar.gz

Download URL equitas_benchmark-0.1.2.tar.gz
Size 80.2 kB
Tags Source
SHA-256 checksum
How to use checksums
1ad9e0fa174d20381d60e4c1ff822489ab8685ee25f5814c8e31e85993d38e52
BLAKE2b-256 checksum
How to use checksums
9bf43c4a6709f7c410b9b151a9daaf704bae8fff730980993e0b7f7208ea7374
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.8

Release files / equitas_benchmark-0.1.2-py3-none-any.whl

Download URL equitas_benchmark-0.1.2-py3-none-any.whl
Size 109.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
547649ed032d352cfaf2ecac1bb5be121fda7e6e9a1c575d23b89639ad5b205c
BLAKE2b-256 checksum
How to use checksums
27c600530a6aa06c990ca4b3d4fe787db4f220707eb49cdde63879221b0c94f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.8

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

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