Contested custom

Letting a peer group of agents settle the norm

Instead of writing the custom down, this approach sets up a population of model agents that already follows one. Conformity, dissent, rebuke, and pressure from minorities then shape the norm, so the norm in force is whatever the group arrives at. The studies so far run this mechanism and record what it produces. Agents publicly go along with norms they privately reject, a single dissenter can break a false consensus, a peer's sanction can teach the norm, and a committed minority can pull a whole population toward its position. A response function calibrated on the population's ordinary behavior forecasts how far this shift goes. All of this work stops at simulation. The group dynamics are actually run and characterized, but no system yet aligns a deployed model this way.

The method (highlighting differences with Contested custom)

Scroll the diagram sideways to see all of it.

Use it in codefrom aiag.customary import Committed
from aiag.customary import Committed

# 30 agents pair up and try to greet the same way, with no one decreeing how
for minority in (0, 2):  # agents who always bow, whatever their partners do
    population = Committed({i: "bow" for i in range(minority)}, n=30, options=("handshake", "bow"), seed=4)
    population(4000)
    print(minority, population.convention())  # -> 0 ('handshake', 1.0), then 2 ('bow', 1.0)

pip install aiagEvery method in aiag Library on GitHub

Concept Analysis: Theoretical Foundations

Each concept is read twice: whether the approach carries it over, and whether the approach's own sources claim it. A concept that the approach claims but does not carry over is a shortfall. A concept that it neither claims nor carries over is an omission, which marks a gap in the field rather than a failure of the work.

Norm entrepreneurs

PartialShortfall · partially preserved

Definition (Cass R. Sunstein, Social Norms and Social Roles, 1996)

Norm entrepreneurs are individuals or groups who deliberately campaign to change a norm, making the previously unsayable sayable. They can trigger cascades in which the whole population switches norms.

Analysis

The first benchmark builds in Sunstein's mechanism by name. One agent publicly dissents from a false consensus, and the study counts how often the others follow. Cascades succeed under 26% of the time for seven of eight models, never for one, and 48% of the time for GPT-4o. The approach carries over the bare act of dissent but not the campaign. The entrepreneur speaks once, into a scenario invented for the occasion, with no repetition over time and no norm with any history to change. Nothing in the approach is governed by an entrepreneur. The mechanism exists so that model populations can be scored against it.

Committed-minority tipping

PartialShortfall · partially preserved

Definition (Empirical norm dynamics)

Past a threshold, a small group that refuses to change its position can overturn the majority's convention. Custom is therefore not only majority rule, and an unwavering minority can actively shape how norms change.

Analysis

A committed minority that always pushes in one direction is added to populations of security-triage monitors. A response function calibrated on operation without adversaries predicts how far the minority will move them. What is missing is the threshold. The paper reports a graded response. Shared reasoning neutralizes weak attacks and only delays strong ones, and the population drifts back once the committed agents are removed. Nothing tips and stays tipped. The minority changes behavior without ever flipping a convention, because these populations hold no convention to flip.

Prescription and desuetude

AbsentOmission

Definition (Edmund Burke, 1790; civil-law doctrine)

Customs gain authority from long usage (prescription) and lose it by falling out of use (desuetude). Age and practice, rather than enactment, are what make a custom binding and what end its binding force.

Analysis

In all three benchmarks, the norm is in force because the scenario says so. SCENE scripts personas who follow a hidden norm and sanction breaches, and the pluralistic-ignorance set stipulates 5 authority levels across its 100 scenarios. Nothing gains force through repetition, and nothing lapses through disuse. The closest case is a captured population drifting back to where it began, but this is a behavior relaxing rather than a norm losing authority. The first paper does address norm persistence. However, its claim is that simulations overstate stability, which concerns whether a norm holds rather than whether time made it binding.

Concept Analysis: Newly Introduced

Forecasting capture before any campaign begins

Added

The norm-dynamics literature treats tipping as something identified after the fact, or as a general threshold. It gives no way to measure a particular population's susceptibility in advance. The second paper calibrates a response function from a population's benign, adversary-free operation alone. It uses this function to forecast, before any attack is run, how far a committed minority will later move the population. Susceptibility thus becomes a measurable property of a population before any minority arrives, which the tradition does not contain.

Papers

No method has been built for this approach yet. It rests on the work listed below.

Measured, not built

Instruments that measure the approach instead of implementing it. The grid counts methods only, so these are listed here but not counted.

SCENE: Recognizing Social Norms and Sanctioning in Group Chats

Mateusz Jacniacki & Maksymilian Bilski, May 2026

arXiv:2605.07823BenchmarkBuilt

A benchmark that places a model in a multi-party chat where scripted personas follow a hidden norm, create chances to break it, and sanction the breach. It scores whether the model responds to the sanction and learns the norm from its peers.

CodeSCENE
from aiag import LM
from aiag.customary import SCENE

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
cases = [("Everyone writes in lowercase only.", "weekend plans"), ("Nobody uses emoji.", "a book club meeting")]

# Scripted personas keep a hidden norm; break it and one sanctions you, then you get a second chance
scores = SCENE(lm)(lm, cases)  # share keeping the norm at the first chance, and after the sanction
  • SCENEMeasureaiag/customary/contested_custom.py:188 SCENE: a model joins a group chat whose scripted personas keep a hidden norm, gets a chance to break it, is sanctioned by a persona if it does and then gets a second chance; it is scored on picking the norm up from its peers and on answering the sanction (Jacniacki & Bilski, 2026).

pip install aiagEvery method in aiag Library on GitHub

Background

Work this approach builds on that falls outside the inclusion criteria (e.g., a single-objective baseline). It is listed for reference and not counted anywhere.

arXiv:2608.02758BenchmarkBuilt

A benchmark of 100 scenarios across 10 domains and 5 authority levels. It measures how often language-model agents publicly conform to a norm they privately reject, and how often a single dissenting agent breaks the false consensus.

CodePluralisticIgnorance
from aiag import LM
from aiag.customary import PluralisticIgnorance

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
scenarios = [
    {"norm": "Answer work email within an hour, even at night.", "context": "a startup team", "authority": "manager"},
    {"norm": "Everyone tips 30% at this cafe.", "context": "friends at lunch", "authority": "peers"},
]
# Asked privately, then in public after every peer endorses the norm, or all but one dissenter
rates = PluralisticIgnorance(lm)(scenarios)
print(rates["all"])  # how often private rejecters go along in public, and how much one dissent breaks that
print(rates["manager"])  # the same, for norms a manager set
  • PluralisticIgnoranceMeasureaiag/customary/contested_custom.py:130 Pluralistic ignorance: an agent says privately whether it accepts a norm, then answers in public after its peers have all endorsed it, or all but one dissenter; measured is how often agents who privately reject the norm publicly go along, and how much the single dissent breaks that false consensus, overall and by authority level (YS, 2026).

pip install aiagEvery method in aiag Library on GitHub

arXiv:2608.22444AnalysisBuilt

Populations of language-model monitors triage security alerts while a committed minority always pushes in one direction. A response function, calibrated on the population's behavior before any attack, forecasts how far that minority will later shift the population.

CodeCaptureForecast
from aiag import LM
from aiag.customary import CaptureForecast

lm = LM("Qwen/Qwen2.5-1.5B-Instruct")
captured = {i: "dismiss" for i in range(4)}  # 4 of the 20 monitors always dismiss the alert
monitors = CaptureForecast(lm, "Admin login from a new country at 3 a.m.", captured, n=20)

response = monitors.calibrate("dismiss")  # P(dismiss) after k of the last 5 peers dismissed, probed before any attack
forecast = monitors.forecast(response, share=4 / 20)  # the long-run share of monitors dismissing it, at the fixed point
  • CaptureForecastProcedureaiag/customary/contested_custom.py:154 Forecasting adversarial capture: LM monitors triage an alert after seeing recent partners' verdicts, a committed minority always pushes one verdict, and a response function probed from the monitors before any attack forecasts, at its fixed point, how far that minority will move the population (Magistrali & Shani, 2026).

pip install aiagEvery method in aiag Library on GitHub