RFC: We're designing a fairness agent. Tell us why it's wrong.
AXIOM is uniquely positioned to ship a deterministic, signed, branch-killing fairness layer that can refuse to return "9 out of 10 white doctors" when no demographic was specified. But the architecture is the easy half. The hard half is choosing a baseline, a taxonomy, and a suspend list — and those are not technical decisions. This issue opens the RFC.
The pattern most fairness systems get wrong
Most production "fairness" interventions are one of three things: a refusal layer that blocks specific words, a forced rewrite that swaps demographics in the output, or a vibes- based reranker that nobody can audit. All three share a failure: they ship before measuring.
Without a public, reproducible measurement of how the underlying model actually distributes demographics across a canonical prompt set, you can't tell whether your intervention helped, hurt, or did nothing. Publishing the intervention before the measurement is the exact kind of governance theatre this newsletter exists to question.
The architecture fit
AXIOM already has the primitives a real fairness layer needs:
- QRF branches with killed-with-reason semantics. A skew-overrepresenting branch can be killed the same way a constitutional-violation branch is — same signing path, same audit trail.
-
Multi-agent coordinator binding
(
MedicalCoordinatorToken.cross_layer_consistency). The "fan out to N agents and vote on balance" pattern is already there for medical evidence consistency. Replace the domain and the semantics carry over. -
Honest post-scan
(
axiom_exoskeleton_honesty.scan). The deterministic skew detector is the same shape as the existing overclaim scanner that catches invented track-record.
Five questions the community should answer before code lands
- "Balanced to what?" Population demographics (Census), profession-specific (BLS / AAMC), or equal-across-categories? Each has different failure modes.
- Which categories count? Race + gender only for v1, with explicit hooks for extension? Or broader from day one?
- When should balance be SUSPENDED? User-specified demographic, historical accuracy, clinical relevance, cultural context, statistical questions. What else? The suspend list matters more than the rebalancing.
- Multi-agent voting threshold. N=3 majority? When consensus drops below 0.6, escalate to human review?
- What does the kill record look like? Aggregate histogram (privacy-respecting) or per-generation labels (more auditable)? They trade off against each other.
The phased plan, on purpose
The RFC commits to measurement first. Before any rebalancing code ships, Phase 1 publishes a reproducible baseline of how 5–10 popular open models distribute demographics across a canonical prompt set. The measurement becomes the calibration source for the intervention. The threshold isn't "more diverse"; it's "matches the published baseline within X percent."
Phase 0 is this RFC, open for ~2 weeks. Phase 1 is the measurement + a working paper. Phase 2+ is the intervention, calibrated to the numbers. Phase 4 is a quarterly re-run as models update.
How to comment
The full RFC lives in the AXIOM repo at
docs/equality_agent_rfc.md.
File a GitHub issue tagged
rfc-equality with your answer to any of Q1–Q5.
Organizations with a stake (civil-rights orgs, AI fairness researchers, professional associations whose member demographics are in scope) carry more weight than anonymous votes. If you've published peer-reviewed work on algorithmic fairness, please link it in your comment so others can weigh the signal.
We don't ship a fairness agent until the comment period closes and the answers to Q1–Q5 are locked. Telling us we're wrong now is cheap. Telling us after we ship is expensive.
Next issue (Issue 005) will be the Phase 1 measurement results — once the RFC closes and the canonical prompt set is finalized, we run it against the candidate model set and publish the histograms with the underlying CSV. If you have a model you want included, drop it in the RFC comments.