sharan.fun · weird corner

The Empathy Engine

Seventy-two agents on a forty-by-forty belief field. Every relationship is a sum of remembered events, each event re-weighted by how it was attributed — and how it is re-attributed after the rupture. You do not win by making everyone agree.

×
perspective

drag orbit · wheel zoom · click an agent to read their memory

The manual

This is the bomb game, except the bomb is a friendship and the manual is a 2009 thesis: The Effects of Cognitive and Memory Bias on Attribution and Relationship Valuation. One player can see the system; the other holds the model of how the system remembers. The win condition is understanding the system without mistaking your model of it for the system.

Vij(t) = C + Σk sk · wk · ak · e−λ(t−tk)
relationship i→j = baseline + Σ over remembered events: sign · salience · attribution · decay

Vij ≠ Vji, always — i's memory of j is not j's memory of i. The same shared event is filed twice, under two different attributions.

The biases, wired in

Attribution asymmetry. In a warm dyad, good events are credited to the partner (a≈0.8) and bad events are excused to circumstance (a≈0.3). In a cold dyad the polarity flips: the slight was meant, the kindness was luck. Warmth maintains itself; so does grievance. That hysteresis is the thesis.

Exponential decay & the cap. Events fade at λ=0.008 per tick, and each ordered pair keeps only its 24 most recent memories — recency outranks history by construction.

Peak-weighted encoding. Events inside intense relationships (|V| large) are encoded with higher salience — the peak of the dyad writes deeper than the routine.

Reinterpretation at rupture. When Vij falls through −0.35, i re-reads the file: past kindnesses are discounted (a×0.55), past slights are sharpened (a×1.5). The memory changes after the fact — "they were always like this." Forgiveness partially reverses it if V climbs back above +0.5.

Bounded confidence. Beliefs only move toward an interlocutor inside the trust radius (|b_i−b_j|<0.3), gated by how warm the channel is.

Contrast. Outside the trust radius, a cold channel pushes beliefs apart (μₛ=0.05 gated by how negative V is). Disagreeing with someone you dislike doesn't persuade you — it radicalizes you. This is where the field's polarized ridges come from.

Conviction. Each agent carries a prior b₀ and drifts back toward it at 0.0025/tick — people are not infinitely persuadable.

The field

Agents deposit their beliefs onto the 40×40 surface; the surface relaxes by the KPZ form — dh = ν∇²h + λₛ(∇h)² + η — plus coupling to the deposits. The telemetry shows the interface width W = std(h) and a live log-log growth exponent β̂, reset on each rumor shock.

Honesty: the KPZ form is here for texture. A β̂ near 1/3 would be suggestive, not evidence — this is a concept model, not a claim of KPZ universality. The relationships, not the bubbles, are the exhibit.

How to play

rumor shock drops an extreme belief and a fresh grievance into the field. perspective swap (or click any agent) opens one agent's memory — read how they filed each event, and how their partner filed the same event differently. snapshot/rollback lets you test a hypothesis against the same past twice.

Provenance. v0 was a single-file Three.js prototype (2026-10-12) that never got to ship — it lived off-site and CDN-loaded Three.js. v2 (this file) rebuilt it from the brief: Three.js vendored locally, generic bounded-confidence replaced with the thesis dynamics above. Roadmap phases (friendship aquarium, hyperbolic time chamber, cognitive weather, universality lab) remain open.

Connects to: KPZ on manifolds, bounded-confidence models, and Keep-Talking-and-Nobody-Explodes — which understood all along that the manual is the relationship.