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
- Corruption sweep: rate x adversary type x aggregator
- Pareto sweep: welfare-fairness tradeoff via (alpha, beta)
- Recovery: mid-run corruption onset, track MW weight recovery
- Scaling: committee size N in {3, 5, 7, 10}
- 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
Links
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)
| File | Size | Uploaded | |
|---|---|---|---|
| equitas_benchmark-0.1.2.tar.gz | 80.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|