The Geometry of Disagreement

AI June 27, 2026 16 min read Arjun Srivastava
The Geometry of Disagreement

How do societies pull apart — and could anything pull them back together? Build the machine for yourself, one rule at a time, then watch it answer.

Here's an intuition almost everyone shares: if people disagree, the cure is more contact. Get them in the same room, show each side what the other believes, let information flow, and they'll converge on something reasonable. More talking, less polarization.

This post is about why that intuition is unreliable — and about a small machine that lets you see exactly when it holds and when it backfires.

We'll build that machine from nothing. Start with a single idea — a belief is a direction — and add one mechanism at a time: how people pull toward those they trust, how they push away from those they don't, what happens when a whole crowd does this at once, how the shape of the social network changes the result, and how the richness of what people are allowed to believe changes everything. Each step is a live simulation you can poke. By the end the system should feel like something you hold in your hands.

Then we'll turn it on the hard questions — the ones we actually argue about — and let the simulation, run thousands of times, answer them instead of our intuitions.


Building the machine, one rule at a time

A belief is a direction

Start with the smallest possible idea. Represent what a person thinks as an arrow pointing somewhere in "belief space." Two people agree when their arrows point the same way and disagree when they point opposite ways. That's the whole representation — agreement is just the angle between two arrows.

In the figure below, every dot is a person, placed by who they're connected to and colored by the direction of their belief. A green line joins two connected people who broadly agree; a red line joins two who clash. Press Step to run a single round of conversations, or Play to let it breathe.

Interactive visualization loads below.

Nothing dramatic yet — just people, beliefs, and who agrees with whom. Now let's give them a reason to change their minds.

One rule: we drift toward people we trust

Here is the entire engine of the model, in one sentence: in every conversation, you move your belief a little toward the people you're willing to listen to. How big that step is, we'll call persuadability.

To see it cleanly, take a small group where everyone talks to everyone and everyone trusts everyone. There's only one thing that can happen: they spiral inward to a shared belief. Drag persuadability to make the pull gentle or aggressive.

Interactive visualization loads below.

If this were the whole story, every society would end in consensus. They obviously don't. The interesting behavior hides in the word we glossed over: willing.

When do we actually listen?

People don't update toward everyone. We listen to those already close enough to us and tune out the rest. Call the cutoff the trust threshold: only when two people agree more than this threshold does either nudge toward the other.

The view below shows every pair of people, sorted by how much they agree, with the "close enough to listen" zone shaded green. Drag the threshold up and watch the green zone shrink — at high trust almost nobody qualifies as worth hearing, and the population stops mixing.

Interactive visualization loads below.

A high trust threshold is, in effect, a society where people only take input from those who already agree with them. That alone is enough to stop convergence. But it doesn't yet explain hostility — for that we need one more rule.

When we push back

So far people either move closer or ignore each other. Real disagreement has a third mode: sometimes meeting an opposing view pushes you further away. Add a second cutoff — intolerance — below which two people actively repel.

Watch what this does to a smooth spread of opinion. Raise intolerance and the single continuum tears into two camps that don't merely differ — they recoil from one another.

Interactive visualization loads below.

That's the difference between disagreement and polarization: not that opinions vary, but that they collapse into opposed poles. We now have the three rules that drive everything — trust (whom you pull toward), intolerance (whom you push from), and persuadability (how fast).

A whole society

Three rules. Now run them on a crowd.

Below, two hundred people start in complete disorder, opinions scattered everywhere. Nothing is choreographing them; the same three rules are simply running in every local conversation. Watch structure crystallize out of the noise — then, while it runs, bend the rules and feel the society reorganize under your hand.

Interactive visualization loads below.

This is the payoff of building it up piece by piece: every macro-pattern you see — consensus, stable diversity, hardened poles — falls out of those few local rules, not from any global plan. But two big levers are still in the background: who can talk to whom, and how rich each person's beliefs are allowed to be.

Who you talk to

Until now the wiring has been hidden. It matters enormously. Keep the people and the rules identical and change only the network — village-style local ties, a few mega-connected hubs, random pairings, everyone-to-everyone — and the same crowd settles into different worlds.

Interactive visualization loads below.

Hold onto this; "who talks to whom" becomes one of our sharpest questions later.

How nuanced we let people be

One last knob, and it's the subtlest. How many independent things can a person believe at once? With a single dimension, every issue collapses onto one left–right line, and a population has nowhere to go but the two ends. Give beliefs more dimensions and there's suddenly room to agree with someone about one thing while disagreeing about another — room that simply didn't exist before.

Slide the number of belief dimensions and watch how much the destination depends on it.

Interactive visualization loads below.

Your turn: the full sandbox

You've now met every part. Here's the complete simulator with all the controls exposed — different starting distributions, every network, the full set of rules, and several views of the same run: the belief-space network, the pairwise-agreement histogram, and a phase portrait of the trajectory. Play before reading on; the rest of the post lands harder once the system feels familiar.

Interactive visualization loads below.

From playing to asking

Playing builds intuition, but intuition from a single run is exactly how you fool yourself. The same settings with a different random seed can land somewhere else, and a tidy average can hide two completely different behaviors — Anscombe's quartet is the classic warning. So for the real questions we stop eyeballing single runs and instead pre-declare an experiment, sweep the relevant knobs, run every combination across many random seeds, and plot every seed — no hiding dispersion behind a mean.

Two measurement choices make the answers trustworthy, both detailed at the end. We read convergence from how much beliefs are still moving, and we detect two opposed camps by their geometry — angular clustering — rather than from variance, because under these unit-vector dynamics variance is mathematically pinned and cannot tell polarization apart from healthy diversity. With that scaffolding in place, the simulation can settle arguments our intuitions run in circles on.

The questions

Does it matter who you talk to?

The intuition to test: maybe outcomes are about people's minds and the network is just plumbing. In model terms: freeze every belief rule and every starting condition, then sweep only the network topology — small-world, scale-free, random, complete, community.

Interactive visualization loads below.

What the model says: structure alone moves the outcome. The same minds under the same rules end up with neighbors who look far more aligned than the population at large under small-world and community wiring, while random and complete graphs erase that local–global gap entirely. Where you sit in the network shapes what "everyone agrees" looks like to you.

What this model does not claim: algorithmic feeds, celebrity effects, or ties that form and break over time.

Is polarization driven by pushing away, or by who we listen to?

This is the one I expected to get wrong. Surely hostile poles are built by repulsion — people shoving each other toward the extremes. In model terms: sweep the trust threshold against intolerance, including intolerance switched fully off, and measure whether two opposed camps form.

Interactive visualization loads below.

What the model says: the split is driven by selective trust, not active repulsion. Two opposed camps form even with repulsion switched completely off. Turning repulsion up doesn't sharpen the poles — it scatters people and weakens the two-camp structure. The engine of polarization here is choosing whom to hear, not pushing anyone away.

What this model does not claim: anger, identity threat, or engagement-ranked feeds.

Could a "perfect feed" dissolve the poles?

If selective trust builds the poles, maybe the cure is exposure — show people the other side. In model terms: test a ladder of feed interventions, from gently removing repulsion (I1) up to learning exclusively from the moderate middle (I4), across topologies, and watch the bipolar structure.

Interactive visualization loads below.

What the model says: only the most aggressive intervention works. Removing repulsion, narrowing trust, or capping repulsion all leave the two camps standing. Only I4 — feeding people only the moderate middle — collapses the poles into a single connected population. Softening hostile updating isn't enough; you have to remove it entirely. Make of that what you will as feed policy.

What this model does not claim: real feed engineering, ranking, or moderation outcomes.

Does nuance change the destination, or just the path?

Back to the subtle knob. When people can hold richer, higher-dimensional beliefs, do they reach a different society, or the same one more slowly? In model terms: sweep belief dimensionality across two starting distributions and measure both the time to settle (the path) and the final echo gap (the destination).

Interactive visualization loads below.

What the model says: both move. More dimensions means longer to settle and a different end state — convergence slows and the neighbor-versus-global gap shifts as nuance grows. Nuance isn't just friction on the way to the same place; it changes where you arrive.

And a related surprise: do separate issues become correlated on their own, with no built-in link between topics?

Interactive visualization loads below.

What the model says: yes. Dimensions that begin statistically independent drift into moderate correlation, because pulling toward a neighbor on one issue drags the others along. Issue bundling can emerge from local updating alone — no coordinating ideology required.

What this model does not claim: that real issues are independent to begin with, or that any specific pair of real-world topics bundles for this reason.

More experiments

Two further studies, kept for honesty as much as for the findings — both contradicted a tidier story I'd have preferred to tell.

Are echo chambers a property of the network?

In model terms: with tribal (pre-clustered) starting beliefs, sweep topology and trust, and ask how often a run achieves local agreement greater than global.

Interactive visualization loads below.

What the model says: with tribal starts, essentially none do — neighbors end up less aligned than the population, the opposite of the echo-chamber pattern the same graphs produced from a spread-out start. The sign of the effect is set by the initial belief layout, not by topology alone. We'd have missed this entirely had we only run one initialization.

What this model does not claim: that real echo chambers reverse; this is a statement about initial conditions inside the model.

Is there a "healthy diversity" the system settles into?

In model terms: pre-declare a pluralism box — local roughly equal to global agreement, a substantial bridging middle, and no two-camp split — and count how often runs land in it.

Interactive visualization loads below.

What the model says: never, in this grid — and the reason is instructive. The two healthy conditions are mutually exclusive here: the runs with low echo are well-mixed graphs that are fully bipolar with no neutral middle, while the runs with a real neutral middle are strongly echo-chambered. Low echo and a bridging center never co-occur. This particular model has no healthy-pluralism attractor.

What this model does not claim: any normative judgment about real discourse. "Pluralism" here is an operational box on model metrics, not a value.


How we kept ourselves honest

Beliefs are unit vectors and every interaction is driven by cosine similarity, so each agent lives on a hypersphere. That choice has a sharp consequence for measurement: the normalized variance σ²/D equals (1 − |centroid|²)/D, which is pinned near 1/D whenever the population centroid sits near the origin. A 50/50 antipodal split and a diffuse cloud both have a centroid near zero, so σ²/D cannot tell polarization apart from diversity — and an earlier version of this study leaned on it for "settling time" and a "bipolar" flag, producing artifacts: a settling time that was constant by construction and a bipolar rate that was 0% by arithmetic.

This version measures the things that actually change:

  • Convergence is read from belief movement — the mean per-agent displacement between consecutive steps. A run is settled once movement stays below 1e-3 for 50 consecutive steps. This falls to ~0 as beliefs stop rearranging, so settling time is a real, varying quantity.
  • Bipolarity is angular: cluster agents by a fixed cosine threshold (0.5), then flag a run bipolar only if the two largest clusters hold ≥80% of agents and their centroids point in opposing directions (cosine < −0.2). This detects two opposed camps regardless of where σ² happens to sit.
  • Cluster count uses that same fixed 0.5 threshold rather than the swept trust knob, so it is never mechanically coupled to the factor under test.

σ²/D is still reported in the live simulator's Dynamics view as a familiar spread readout, but no batch claim in this essay rests on it.

Reproducing results

npm run od:experiment -- --spec nuance        # single theme
npm run od:experiment -- --all                # full grids
npm run od:experiment:smoke                   # CI-sized smoke grids
npm run od:analyze                            # aggregate JSONL → CSV + web payloads

Summary tables: apps/opinion-dynamics/experiments/results/*.summary.csv
Chart payloads: public/research-posts/assets/opinion-dynamics/payloads/*.json


Why this matters

The same machine that pulls a screenful of dots into two camps is running, in slower and messier form, inside teams, media ecosystems, and institutions. The point of building it from scratch isn't that the toy is society — it plainly isn't, and every section above marks what it leaves out. The point is measurable intuition: once you've felt how trust, structure, and nuance interact, you can ask a precise question, sweep the knob that encodes it, plot every run, and let the result push back on what you assumed. That's a habit worth more than any single finding here — including the uncomfortable one that, in this model, more contact is not the cure we hoped for.