3871 stories
·
3 followers

Agentic Patterns — Veso Research

1 Share
Research Agentic Patterns Start

The universal architecture emerging across all frontier agentic systems.

Convergence.

Claude Code, OpenAI Codex, Gemini CLI, LangGraph, CrewAI, Google ADK, Amazon Bedrock — built by different companies, in different languages, under different constraints. They converged on the same design.

Not because they copied each other. Because the constraints are physics. Finite context windows. Tools that need a protocol. Safety that can’t depend on the model obeying. Tasks too complex for a single invocation. Any team that builds long enough arrives here.


Which kind of system are you building?

The patterns in this guide apply universally, but their weight depends on which seam in the agent ecosystem you’re working on. Read in the order that matches your problem.

If you are building…You care most about…Start with
A domain context substrate (an MCP server that gives any agent structured access to one domain: a codebase, a screen, a system)Deterministic extraction, fixed ontology, behavior contracts installed at the user’s project/tool-protocols, /instructions, /anti-patterns
A personal AI runtime (an agent that the user owns, that runs in the background, with long-running state)Memory architecture, compaction-resident state, hooks, scheduler-gated background work/memory, /enforcement, /multi-agent
A multi-agent shell (an orchestrator over other people’s agents, with chat-platform reach)Adapter patterns, isolated sub-agent tool registries, settings architecture, cost controls/multi-agent, /enforcement, /cost-management

These categories aren’t airtight — many systems blur them. But knowing which one is your load-bearing concern keeps you from over-applying patterns that don’t fit your seam.


The 8 Postulates

These are not suggestions. They are the load-bearing walls of every production agentic system. Violate them and you will rediscover why they exist.

#PostulateWhat to do
1Start with a persistent instruction fileCreate a CLAUDE.md, AGENTS.md, or GEMINI.md before writing any agent config. Cover conventions, stack, testing, git, and security. Keep it under 200 lines.
2Enforce safety outside the promptPut style preferences in the instruction file. Put linting in hooks. Put destructive command blocking in permissions. Never rely on the model remembering a safety rule.
3Budget your context windowReserve 10-15% for instructions, 30-40% for conversation, 20-30% for tool results. Compact at 70%. Clear at 80%. Separate cacheable content from compactable content.
4Build tools on MCPUse .mcp.json for tool connections. 97M+ downloads/month across every major platform. If you need agent-to-agent communication across systems, add A2A — but start with MCP.
5Coordinate through shared stateWithin a system, agents read from and write to shared state — not messages to each other. Between systems or organizations, use messaging protocols (A2A). Default to state; reach for messaging only when you must.
6Decompose before you hit the cliffAgent coherence degrades after extended sessions. The threshold moves with each model generation. Don’t find the limit — stay well under it. Break work into sub-tasks that complete in the safe zone.
7Track cost per task from day oneSet token budgets per session. Route simple work to cheap models. Cache stable prompts. Monitor with alerts at 50%, 75%, and 90% of budget. Cost management is infrastructure, not optimization.
8Add complexity in weekly incrementsWeek 1: instruction file. Week 2: hooks. Week 3: MCP tools. Week 4: skills. Month 2+: sub-agents. If your team has distributed systems experience, you can move faster — but still validate each layer before adding the next.

The Architecture


Who This Is For

RoleWhat you get
Agent developersPatterns for instruction files, hooks, MCP tools, and context management.
Platform engineersMulti-agent architecture, shared state, delegation, and cost controls.
Infrastructure teamsObservability, token accounting, safety enforcement, and production runbooks.
Engineering managersAdoption roadmaps, cost models, and risk frameworks.

Reading Order

SectionKey questions answered
PromptWhat does the agent read at session start? What does the harness compile around it?
ControlHow do you bind the agent’s behavior outside the prompt?
ContextWhat does the agent remember? How do multiple agents coordinate?
InterfaceHow does the agent talk to tools, code, the web, and editors?
OperateHow do you run it in production — cost, observability, credentials, lifecycle?
Anti-PatternsWhat failure looks like — named and citable.

First agent? Start with Prompt → Control. Skip Context until one agent works reliably.

Scaling? Jump to Context and Operate. That’s where the failure modes live.

Production generative AI engineering, applied to the industries, jurisdictions, and use cases buyers actually face.

Solutions · Framing

Solutions · Delivery

Company

Read

Read the whole story
emrox
50 minutes ago
reply
Hamburg, Germany
Share this story
Delete

Jira IS Turing-Complete

1 Share

Nicolas Seriot

Computation > Jira is Turing-Complete

Building a Minsky Machine in Atlassian Automation
22nd May 2026

Engineering folklore holds that Jira (Atlassian's project-tracking tool) is Turing-complete. Existing claims point vaguely at automation features without exhibiting a reduction. This article supplies a proof, with setup instructions and execution trace.

Mapping the Computational Model

A Minsky register machine needs only two unbounded counters and a finite set of labeled instructions:

  • INC r; goto S
  • DEC r; if r == 0 goto S else goto S'

Or, in plain English:

  • increment register R, then goto some state S
  • decrement register R, if R == 0 goto zero-state S, else goto nonzero-state S'

A Minsky program that adds register A into register B looks like:

1. DEC A; if A == 0 goto 3 else goto 2
2. INC B; goto 1
3. HALT

Minsky proved this model Turing-complete (1967). Exhibiting it in Jira's automation language therefore establishes the reduction. Here is how the model maps onto Jira:

Minsky Machine Jira
Register A Count of linked issues of type Bug
Register B Count of linked issues of type Task
Program Counter Status of a single Epic issue
Dispatch Table Jira Automation rules, one per instruction state
Clock Automation-triggered transitions, or external re-triggering past chain caps

The Epic's status encodes the current instruction. Automation rules inspect the linked-issue counts and decide the next status. INC and DEC are implemented as issue creation and deletion on the appropriate linked-issue type. Conditional branching is implemented as a JQL-conditioned rule.

Implementing Addition

Here is a minimal working implementation using one Epic, five linked issues, and one Automation rule per instruction state (Space Settings > Automation).

1. Create Workflow

Create a Jira Workflow with statuses initial state BACKLOG, then TODO, DEV and PROD. Any state can transition to any other.

Create an Epic in status BACKLOG.

2. Create Rule for TODO

DEC A; if A=0 halt, else goto DEV.

  • Trigger: Epic status changed to TODO.
  • If at least one linked Bug exists: delete one Bug, transition Epic to DEV.
  • Else: transition Epic to PROD (halt).

3. Create Rule for DEV

INC B; goto TODO.

  • Trigger: Epic status changed to DEV.
  • Create a new Task, link it to the Epic.
  • Transition Epic to TODO.

Both rules have "Allow rule to trigger other rules" enabled.

The screenshot below shows the two rules wired into the Epic's workflow.

4. Init Registers

Link 2 Bugs (A=2) and 3 Tasks (B=3) to the Epic.

5. Bootstrap the Machine.

Transition the Epic to TODO to start the cascade. Five transitions:

(2,3) TODO → 
(1,3) DEV  → 
(1,4) TODO → 
(0,4) DEV  → 
(0,5) TODO → 
(0,5) PROD

Recorded on a real *.atlassian.net instance.

The Epic lands in PROD with 0 Bugs and 5 Tasks linked. We've just added 2 + 3 = 5.

Fibonacci in Three States

The reduction above suffices to prove Turing-completeness. In addition to that, Jira's automation language can simplify Minsky operations. Convert Issue Type changes an issue's type instantly: Bug → Story, Story → Task, and so on.

CONVERT is expressible as DEC + INC. It doesn't extend Jira's computational power, but it shrinks the dispatch table dramatically for any move-loop, making non-trivial programs tractable.

Fibonacci as (A, B) → (B, A+B) collapses to three states with three registers (A=Bug, B=Task, C=Story), using TODO, QA (add it to the workflow), and DEV as the three instruction states:

TODO:
    if any linked Task exists:
        CONVERT Task → Story
        INC Bug
        transition to TODO
    else:
        transition to QA

QA:
    if any linked Bug exists:
        CONVERT Bug → Task
        transition to QA
    else:
        transition to DEV

DEV:
    if any linked Story exists:
        CONVERT Story → Bug
        transition to DEV
    else:
        transition to TODO

Initial state A=1, B=1, C=0. The sequence 1, 1, 2, 3, 5, 8, 13, … appears in B (Task count).

Unlike the addition machine, the Fibonacci machine has no halt state. It runs until Jira Cloud's chain-depth cap of 10 triggers, at which point the operator re-triggers the Epic to continue. A single status edit restarts the cascade.

The reduction still holds, the human just supplies the next clock tick. Jira Data Center exposes the same as automation.rule.execution.timeout and related, configurable properties.

Conclusion

Jira's automation language can encode a two-counter machine given unbounded issue creation and rule execution. Every physical computer is finite, so Jira Cloud's finite quotas do not refute the construction. Under that standard convention, Jira is Turing-complete.

So, if complex Jira automations feel like programs, it is because they literally are.

Read the whole story
emrox
21 hours ago
reply
Hamburg, Germany
Share this story
Delete

Why Do We Sleep Under Blankets, Even on the Hottest Nights?

1 Share
Originally, only the wealthy could afford bed coverings. Originally, only the wealthy could afford bed coverings. Maria Morri/ CC BY-SA 2.0

Late July. New York City. A bedroom on the top floor of a four-story building in which I installed an air conditioner with several thousand too few BTUs. I barely know what a BTU is. The temperature that day reached into the upper 90s Fahrenheit, with humidity just short of actual water. The tiny weak air conditioner struggled to cool the room down while a few feet away I struggled to fall asleep. And yet I was unable to sleep without some sort of covering. In this case it was the barest edge of my lightest sheet, touching the smallest possible part of my torso.

Why this compulsion to be covered, however minimally, in order to sleep?

A Red Cross nurse change the sheets on a patient's bed, 1917.A Red Cross nurse change the sheets on a patient’s bed, 1917. National Archives/ 20802254

Blankets are common, but not universal, to humans during sleep, at least in the modern day. But historically, the effort involved in weaving large sheets put blankets at much too high a price point for most to afford. From the linen bedsheets of Egypt around 3500 B.C. to wool sheets during the Roman empire straight through to cotton in medieval Europe, bed coverings were for the wealthy.

By the Early Modern period in Europe, which followed the Middle Ages, production had increased enough so that more middle-class people could afford bedding, though not easily. “The bed, throughout Western Europe at this time, was the most expensive item in the house,” says Roger Ekirch, a historian at Virginia Tech who has written extensively about sleep. “It was the first major item that a newly married couple, if they had the wherewithal, would invest in.” The bed and bedding could make up about a third of the total value of an entire household’s possessions, which explains why bedsheets frequently showed up in wills.

Sign up for the Atlas Obscura Daily Newsletter

A daily dose of hidden gems to visit, extraordinary places to eat and wondrous stories from around the world.

Your newsletter subscriptions with us are subject to Atlas Obscura's Privacy Policy and Terms and Conditions.

ATLAS OBSCURA BOOKS

A Visual Odyssey Through the Marvels of Life

Venture into Nature's Unseen Realms with Our New Book Atlas Obscura: Wild Life Order Now

Gastro Obscura Book

A depiction of a 15th-century bed. A depiction of a 15th-century bed. Public Domain

In place of blankets and sheets, other sources of heat were common at night, usually from multiple people sharing a bed, or often livestock.

Today, there’s minimal anthropological work about bedding around the world. The best is a 2002 paper by Carol Worthman and Melissa Melby of Emory University, who compiled a study of sleeping arrangements in different parts of the world. “Recognition of the paucity of anthropological work on sleep is galvanizing: a significant domain of human behavior that claims a third of daily life remains largely overlooked by a discipline dedicated to the holistic study of the human condition,” they wrote. This passes for outrage in an academic paper.

The paper looked into some foraging and non-foraging peoples who live in hot climates near the equator, and found that only the nomadic foragers regularly sleep without bed coverings. Everyone else uses some form of covering, whether that’s plant matter or woven fabric, even in central Africa and Papua New Guinea, both tropical climates. Much more common than sheets or blankets are some form of padding; basically nobody sleeps simply on the ground as a matter of course.

As one more example of the goodness of blankets, there has also been a decent amount of research about the calming effect of weighted blankets, which can weigh up to 30 pounds. Studies indicate that they can curb anxiety and even be used in the treatment of autism.

A linen bed sheet from the early 1800s. A linen bed sheet from the early 1800s. Public Domain

“The requirement for blankets takes on two components to it,” says Dr. Alice Hoagland, the director of the insomnia clinic at the Unity Sleep Disorder Center in Rochester, New York. “There’s a behavioral component and a physiological component.” The latter is a little more clear-cut, so let’s dive into that first.

About 60 to 90 minutes before a usual bedtime, the body starts losing core temperature. There’s a physiological explanation for that: when the body is heated, we feel more alert. And conversely, when the body cools down, we tend to feel sleepier. Cooler internal body temperatures are correlated with a rise in melatonin, a hormone that induces sleepiness. A bunch of doctors tested this out by making people wear skinsuits—they kind of look like cycling outfits—that dropped their body temperature just a touch, one or two degrees Fahrenheit, to see if they’d sleep better. They did.

Your body’s ability to regulate its own heat gets way more complicated than that at night, though. Say you sleep for eight hours each night. In the first four hours, plus the hour or so before you fall asleep, your body temperature will drop a bit, from around 98 degrees Fahrenheit to around 96 or 97. But the second four hours are marked by periods of rapid eye movement (REM) sleep, a phenomenon in which most of our dreams take place, along with a host of physical changes.

One of those physical changes is an inability to thermoregulate. “You almost revert to a more, and this is my word, reptilian form of thermoregulation,” says Hoagland. She says “reptilian” because reptiles are unable to regulate their own body temperature the way we mammals can; instead of sweating and shivering, reptiles have to adjust their temperature through external means, like moving into the sun or into cooler shadows. And for those brief periods of REM sleep, we all turn into lizards.

A bed sheet drying in the sun. A bed sheet drying in the sun. Linda/ CC BY-ND 2.0

Even in perpetually hot climates, nighttime temperatures drop, and the night is coldest, coincidentally, right at the time when our bodies are freaking out and unable to adjust to it. (The night is coldest right after dawn, in direct contradiction to aphorism.) So, like lizards, we have to have some way to externally regulate our body temperatures. You may think it’s unnecessary to use a blanket at 10 p.m., when it’s still hot, but by 4 a.m., when it’s colder and you’re unable to shiver? You might need it. So we may know from past experience that we’ll thank ourselves later for having a blanket, and thus force ourselves to use one (or at least have one nearby) when going to bed.

There’s more to it than that, though. Another strange thing that happens in the REM periods of sleep is that our bodies drastically lower their levels of serotonin, the neurotransmitter most associated with feelings of calm, happiness, and well-being. You know what’s associated with higher levels of serotonin? Blankets. Various studies have indicated that sleeping with a weighted blanket can trigger an uptick in the brain’s production of serotonin. So yet again, the blanket might be filling a need that our REM-addled brains create.

A bed with a bassinet.A bed with a bassinet. Christophe.Finot/ CC BY-SA 3.0

The other element that might explain our need for blankets is what Hoagland refers to as “pure conditioning.” “Chances are you were raised to always have a blanket on you when you went to sleep,” she says. “So that’s a version of a transitional object, in sort of Pavlovian way.” Basically, our parents always gave us blankets to sleep with—babies are a bit worse than adults at thermoregulation, meaning they get cold easily, meaning well-meaning adults put blankets on them—and so getting under a sheet or blanket is associated with the process of falling asleep. Instead of Pavlov’s dogs drooling at the sound of a bell, we get sleepy when covered with a sheet.

If you Google around for this question, you’ll end up with a bunch of theories about blankets simulating the warm, enclosed feeling we had in the womb. There could be some element of theoretical protection or security imbued by the blanket, which might be another bit of conditioning, but Hoagland thinks the womb comparison is pretty unlikely. “I’m very suspicious of anyone who implies that this goes back to the feeling of being in the womb,” she says. “I think that’s very far-fetched.”

Another possible reason is that blankets are soft and feel good. I could not find any studies that examine the question of whether people like blankets because they’re soft and feel good, so this may remain a great unanswered question.

Read the whole story
emrox
21 hours ago
reply
Hamburg, Germany
Share this story
Delete

Abuse of Notation - writings on math, logic, philosophy and art

1 Share

In my last post about generality, I tried to show how our ambition to discover ideas that are all-encompassing and eternal makes our worldview crumble, leaving us unable to think clearly even about simple issues with obvious solutions. Today, I want to discuss another instance of the same problem, in a simpler and more direct way. You can think of this essay as a prequel to “When Universality Breaks.”

What is boolean thinking

Every time someone asks you a yes/no question, you are being coerced into accepting a pattern of thought that we’ll call boolean thinking. The word “boolean” here is used in the sense of the Boolean logic, and the Boolean datatype in logic and programming — a type that admits only two values: true and false. By “boolean thinking,” I am referring to the precondition that every statement should necessarily be categorized as either true or false. This is a law in Boolean logic, known as the “law of excluded middle”).

“But every statement is either true or false,” some might object. This principle might not be entirely false, but it is also not entirely true (ba-dum-tss).

Context is key. By “context”, I mean the set of premises/postulates/axioms, which we presume in order to think. Depending on the context, a statement can be:

  • Unknown or unknowable (if the context is incomplete)
  • Senseless (if the question is meaningless)
  • Both true and false (if the context varies)

You are probably aware of such situations, but you might still not see them as contradicting the Boolean doctrine (boolean thinking, as we shall see, is precisely that—a doctrine). It’s a mode of thought that, although not universally valid, is often useful. For instance, you can’t make plans with someone who says there’s a 40% chance they’ll go out tonight, or that the question doesn’t make sense. Thus, you might be tempted to treat all imperfections of the Boolean model as imperfections of the world — or of thinking agents themselves:

  1. No statement is unknowable — somewhere out there, there must be an answer.
  2. No statement is senseless — given enough effort, every statement can be interpreted.
  3. A statement is both true and false only because we lack sufficient information.

People who think this way, I would say, suffer from a serious case of Boolean thinking. Fortunately, the condition is curable, provided that we understand its cause. As I mentioned, Boolean thinking always has to do with context. Generally speaking:

  1. Each statement can be true in one context and false in another.
  2. Every statement is senseless when presented without context.
  3. Every statement is unknown when the context is incomplete.

The case against boolean logic

We’ve established that the truth or falsity of a statement depends on its context — that is, on the assumptions we take as true or false in order to justify it. Boolean thinking, boolean logic is applicable only if we agree on some universal context — a universal set of true statements on which every evaluation can rest.

Note that aside from being universal (valid for all statements) the context for boolean logic has to also be all-encompassing (relevant for every statement) i.e. the set of logical statements that form it should never, under no interpretation tell something invalid, and at the same time would let us deduce all that is valid. As I argue later, such context resembles what political philosophers call an authoritarian doctrine (although the phrase “authoritarian doctrines” is somewhat deceiving, because it isn’t the doctrines themselves that are authoritarian, but the role they play in people’s thinking patterns).

So, while boolean logic may be splendid when viewed by itself, when viewed in relation to the “real world” there is a huge issue with it, the namely that no logical context, no logical framework is strong enough to capture the things that we usually want to dissect, (the real world, if you must). Proving the claim above is a subject of a different text, for now it suffices to say that although it may not look logical or scientific, it is, however, very backed up by both logic and science. Rather than asking why this is the case, it is more appropriate to ask what makes us think the reverse, what makes us think that the real world may be captured by a boolean logical framework — I’d argue that the thought that it can be is an instance of the so called “is-ought fallacy” — the idea that something is true just because it will be good for us that it is true. But that’s a separate topic as well (see “When Universality Breaks”.

Now, we are ready to make the case against boolean logic:

Because boolean logic overlooks the importance of context (that each proposition can be true in one context, false in another, and also neither true nor false) it inspires dichotomous thinking, also known as black-and-white thinking.

i.e. boolean logic is apt for a world where there is a single unifying and also complete framework… a universal set of axioms. But that is not our world. Our world is a place where we constantly have to compare different frameworks and, different sets of axioms, which are all incomplete (here is the place where I should reference Godel’s theorem, but I am not going to do it, as it is too cliche, (pardon my lack of diacritics)).

In our world, we, for example, try to be happy with what we have, but at the same time strive to achieve more. We try to believe that people are good, but at the same time defend ourselves against evil etc. The boolean framework says it is either one and the other (e.g. people are either good or evil).

When we encounter something that doesn’t fit our Boolean framework, we have two options:

  1. Pretend it didn’t happen (or twist our perception until it fits).
  2. Declare that “the world isn’t logical” and stop trying to make sense of it.

Non-Boolean thinking, in contrast, allows multiple frameworks to coexist—without one diminishing the others.

Non-Boolean logic

Criticizing something is (nearly) pointless unless we offer an alternative and I will do my best to do just that.

Most people are aware of non-classical logics, but they tend to regard them as curiosities rather than real alternatives to traditional boolean logic. One branch of non-Boolean logic, however — intuitionistic or constructive logic — is increasingly relevant to many fields. It is, for example, the logic that is at the heart of the so called “proof assistants”. Boolean logic is also a special case of intuitionistic logic (the only difference is that it lacks the law of excluded middle).

Rather than resting on truth and falsehood, intuitionistic logic revolves around the concept of a proof. In contrast with classical logic, where a proof is primarily a process, intuitionistic logic treats a proof as an object: a construction that demonstrates the truth of a statement (you can see how this is related to programming — in intuitionistic logic, proving thing is similar to transforming some objects from one format to another).

Each proof depends on a context – a set of premises or other proofs we assume to exist. So, before evaluating any statement, intuitionistic reasoning asks: “What is the context?” i.e. “Give me the set of premises from which we are operating.”

From there, we proceed to manipulate the proofs of the premises in order to construct a proof of our statement.

You might say that this is much like “normal” logic. But there is a difference — intuitionistic logic makes us more acutely aware of the context in which we are operating. And if we start paying attention, we would observe that when trying to prove a statement, instead of the two truth values (true/false), there are actually three possibilities:

  1. We might be able to construct a proof that a statement is true.
  2. We might be able to construct a proof that it is false.
  3. We might not be able to construct neither—the statement is neither true nor false.

And without the correct context, the statement might not make sense at all.

(Yes, in a perfect world, where we know everything, we would be able to prove or disprove every statement that we can formulate, but not in this world.

And with that realization, we are free from the Boolean prison — we realize that all thinking is relative there is no a single truth, (nor a single falsity).

For more on intuitionistic logic, see my book Category Theory Illustrated.

My reasons for criticising Boolean thinking are not merely academic. The way we think about logic shapes how we think about everything — and, ultimately, how we live our lives. This is why what I call “Boolean thinking” in logic has many names elsewhere. In philosophy, it’s called Platonism. In politics, it manifests as authoritarianism.

The second point is important. You might define authoritarian ideologies in many ways, but the key thing about them is that are based on a doctrine on which all people must abide to, in their thinking — a shared “context” or set of premises. The power of authoritarian rulers arises from the way they limit the things that people can think and say: rulers define what the premises are and from then on, then you are “free” to make the conclusions yourself. To rephrase Orwell’s famous slogan:

“Who controls the premises controls the conclusions.”

Authoritarian regimes rely on propaganda, and propaganda often uses Boolean thinking: the belief that if something doesn’t follow from the “official” premises, must be necessarily false (black and white thinking). Or that if two things seem opposed, one of them must be true and the other false (false dichotomies).

To combat such propaganda techniques always remember the two rules of the contexts:

  1. There are many of them.
  2. No-one gets to decide which is more important.
Read the whole story
emrox
3 days ago
reply
Hamburg, Germany
Share this story
Delete

The Noisy Room

1 Share

It began with a study. In December of 2025, Stanford researchers analyzed 2.2 billion social media posts looking for a pattern. They wanted to know what percentage of users posted severely toxic content. Not rudeness, not sarcasm, but speech that was so hateful that 90% of the world would flag it as being problematic.1

With this data in hand, they then asked thousands of people to answer a simple question:

Take a guess.

What percentage of social media users do you think post severely toxic content?

0%50%100%

3.1%

That's the actual number.

Your guess: 13%. You overestimated by 3x. The average American guessed 43% — a 13x overestimate.

They were surprised by the results. They had discovered an enormous reservoir of misperception that had been hidden in plain view.

The Bar

Here is the simplest version of the problem. Imagine walking into a bar with a hundred people inside.

Three of them are shouting — about politics, about each other, about whatever gets a reaction. The other ninety-seven are talking at a normal volume. But there's a bouncer at the door, and he gets paid by the minute you spend staring. So he's wired the three loudest people into the sound system and turned it all the way up.

You walk in, hear the roar, and conclude: this place is full of lunatics. Never hearing the 97 people having normal conversations a few feet away. You could leave, but all your friends are inside. You're stuck.

This is how social media deals with contentious topics. The bouncer is an algorithm. And whether you like it or not, you've been a bystander.

Pick a contentious topic. This is what your feed might look like.

@close_the_border_NOW

Every ILLEGAL crossing is a CRIME. Every sanctuary city is an ACCESSORY. These aren't "migrants" — they're INVADERS. The Great Replacement is not a theory, it's POLICY. 🚨🧱

♡ 11.2K💬 7,892↻ 4,301

@no_borders_no_nations

Borders are a colonial invention designed to hoard stolen wealth. NO human being is "illegal." Abolish ICE. Abolish CBP. Abolish the concept of citizenship. Full stop. 🌍✊

♡ 7,643💬 5,201↻ 3,187

@patriot_alert_2024

They're not sending their best. Actually, they're sending criminals, drug dealers, gang members. And YOUR tax dollars are funding their hotels. This is an INVASION and your government is COMPLICIT. 🇺🇸

♡ 8,901💬 6,334↻ 3,765

Reading this feed, you might reasonably conclude that the country is split between unhinged extremes. It is not. And the gap between what Americans actually believe and what the feed suggests they believe may be the most consequential thing the platforms haven't shown you.

See the Room

Let's visualize this as a single room with 100 people inside. This is what it looks like:

3 users who have posted toxic content

3%33% On most platforms, ~3% of accounts produce 1/3 of all content

Your feed Engagement ranking amplifies high-reaction content from the prolific few

The actual room. 3 out of 100 users have ever posted severely toxic content.

This pattern repeats across platforms. On Twitter/X, toxic tweets receive ~86% more retweets and ~27% more visibility than non-toxic ones, 0.3% of users shared 80% of all contested news,14 and just 6% of users produce roughly 73% of all political tweets.16 On TikTok, 25% of users produce 98% of all public videos.15 The specific numbers vary. The dynamic is the same: a small minority of highly active users overwhelms the majority.

After a time consuming content in this room, your brain performs a kind of ambient demography. The feed becomes a sort of census. You conclude — logically — that the behavior must be widespread. The room might just be full of extreme people! Maybe most people do believe these crazy things.

This is not just about what we see on social media

If this were just about tone of our social posts, it wouldn't matter very much. But this distortion ends up causing some seriously bad patterns of behavior.

Pattern 1 The Majority Goes Silent

When the majority of people looks at the feed and assumes they're outnumbered, people will often self-censor.3 The dynamic replicates on social media17 — fear of social isolation suppresses opinion expression on platforms where it's perceived to be unwelcome. They go quiet, or they leave a platform entirely. They cede the space to users with more extreme politics.

Pattern 2 The Loud Minority Thinks It's the Majority

The minority who aggressively post end up with their own distortion – believing they are part of the majority.5

A study of 17 extremist forums found the same pattern: the more someone posted, the more they believed the public agreed with them. More engaged participation bred false consensus.

Pattern 3 Everyone Gets Each Other Wrong

Both sides develop wildly inaccurate beliefs about who the other side actually is.6 See how some of your own beliefs line up:

What percentage of Democratic supporters do you think are LGBTQ?

0%50%100%

Your guess: 10%. In reality, 6% of Democratic supporters identify as LGBTQ. That’s a overestimate.

What percentage of Republican supporters do you think earn over $250,000 a year?

0%50%100%

Your guess: 5%. In reality, 2% of Republican supporters earn $250K+. That’s a overestimate.

The average American overestimates these kinds of figures by 342%. Social media turns the visible few into your mental model of the whole group.

The distortion extends to policy beliefs. Step through to see the perception gap on the issue of immigration.

On a scale of completely-open to completely-closed borders, where do Democrats place Republicans?

Source: More in Common (2019) & Moore-Berg et al., PNAS 2020. Illustrative.

Pattern 4 Politicians Follow the Perceived Room, Not the Real One

Elected officials are very good at sensing political sentiment. It's literally their job. (They are not elected to correct people's beliefs.)

Politicians who can build a coalition about a perceived belief are more likely to win. They position themselves against an opponent that doesn't exist, but their supporters think exists.

And remember: most of our politics now happens on social media. Candidates often read the same distorted feed. They are unlikely to change their minds.

The window of discourse shifts. Not because opinions changed, but because perceptions of opinions did.

Pattern 5 Misperception Turns into Hostility

When you believe the other side is extreme, you become more willing to treat them as a threat.7

Both Democrats and Republicans vastly overestimate how many on the other side support political violence. The result is a populace primed to assume the other side is ready to do horrible things.

"What percentage of the other side supports political violence?"

Democrats believe

estimate

of Republicans support political violence

Republicans believe

estimate

of Democrats support political violence

Both sides were wrong by 3 to 4 times. When researchers corrected these beliefs, partisan hostility dropped.

Each step feeds the next. The distortion is self-reinforcing.

Knowing Isn't Enough

Okay. So now you know that a small minority dominates the feed.

You know that Republicans and Democrats actually have a far more nuanced set of opinions about contested issues.

Does that fix it? Not really. You also know that everyone else doesn't know it. And if the world continues operating as if the distortion is real, you should probably act the same — even though you know it's wrong. The room hasn't changed, even if you know people inside it are confused.

This is called a common knowledge problem.

You’ve read the stat. But you have no idea who else has. The feed still looks the same. You still assume you’re outnumbered. You stay quiet.

Steven Pinker lays this out cleanly in his excellent recent book When Everyone Knows That Everyone Knows.8 Learning a fact changes what you know. Seeing it displayed publicly — where everyone else can see it too — where you know others can also see it, changes what everyone knows, and subsequently how they act.

Social media has no public square. It has 300 million private windows, each showing a different distortion of the same room. Illuminating the common thoughts between us has the potential to radically change it.

The Idea

So what can we do about this?

Fortunately, there's some good evidence showing how it can be fixed. Multiple studies show that when misperceptions are corrected in a public way, hostility drops. Mernyk et al. found that a single correction reduced partisan hostility for a full month.7 Lee et al. found that correcting overestimates of toxic users improved how people felt about their country and each other.1

We can do this today.

Imagine every post on a contested topic had a quiet link beneath it. Not a fact check, a label, or a warning. Instead — what if it had a Community Check?

click here

A Community Check is an open-source design layer that could be deployed across social media, beneath contentious posts, to help users understand how other people on the platform (or the nation) actually feel about an issue.

It is a way of quickly adding context to the most hot-button viral issues, giving people more visibility into the opinions of the public.

The Idea in Action

Let's explore this intervention with a topic that cuts across political identity:

Money in Politics

On the surface, this seems contentious. But it's actually a supermajority issue: 81% are concerned about the influence of money on elections, including 78% of Republicans and 90% of Democrats. 75% say unlimited spending weakens democracy. Only 15% believe unlimited political spending is protected free speech.

And yet, very little changes, largely because everyone assumes the other side is fine with it. The feed is full of people defending their team's donors and attacking the other team's. It might look like a 50/50 partisan battle, but it's not. It's a majority consensus that cannot see itself.

What if you could see this consensus?

@real_talk_politics · 2h

Everyone complains about money in politics but the second their candidate gets a massive donation they shut up real fast. You don't hate money in politics. You hate when the OTHER side has more of it.

♡ 11,847💬 6,203↻ 2,891

click here

Community Check draws from a random sample of platform users + robust national polls, surveyed independently of the content. The sample is statistically representative. The results update continuously. And critically: everyone sees the same numbers.

Why This Isn't Fact Checking or Audience Polling

Traditional fact-checking is a top-down approach that often feels like it's dictating from above. This is hard for people to stomach. Content moderation for many years now has been perceived as removing speech. This simply adds context, much like the crowdsourced feature Community Notes (an inspiration for this project).

Nor is this just a user-poll under a post. Instead it's drawing from all platform users, coupled with statistically significant national surveys. It's an actual window into the views of the majority, not just the views of those looking at the post.

It Works for Video Too

Short-form video is the fastest-growing vector for political distortion. The same dynamic applies — a small minority of creators produce the vast majority of political content — but video bypasses the pause that text gives you. Community Check can adapt. Tap through to see how.

Money IS free speech.

Deal with it. 🇺🇸

Citizens United was CORRECT

@liberty_caucus_tv Follow

#FreeSpeech #CitizensUnited 🔥

A political video crosses the engagement threshold. 51K views, 612 comments (1.2%), 1.7K shares (3.4%). The feed shows outrage. But what do people actually think?

See technical specs for how it works below ↓

We Could Do This Now

Platforms already have a lot of these capabilities. They already survey users. They even know how to run sophisticated polls. There are a few technical details to work out (spec here), but this is not a hard problem to solve.

The unseen majority is the public. And the public deserves to know itself.

A tiny minority, dominating the feed. That's all it ever was. The rest of us were here the whole time, quiet and decent and waiting to be seen.

Follow my other work here

Community Check is a free and open specification.

The complete technical spec, research base, and open questions are published for researchers, engineers, and platform designers to stress-test and build on. Please steal it with attribution.

View on GitHub

Common Questions

You can't flood a system that chooses its respondents randomly. Community Check uses stratified random sampling — the gold standard in survey methodology (Groves et al., Survey Methodology, 2nd ed., Wiley, 2009). You don't volunteer to respond. You're selected, like jury duty. Each user responds once per question per 90-day cycle. Coordinated response patterns are anomaly-detected and excluded. The sampling algorithm and exclusion criteria are open-source and auditable.

This is the same methodology behind national polls that reliably measure opinion across 330 million people using samples of just 1,000–2,000 respondents. The key isn't sample size — it's random selection. A platform with hundreds of millions of users has an even larger pool to draw from, making representative sampling more robust, not less.

Right now, a single viral post from one account can shape the perceived consensus of millions. Community Check replaces that with N>100,000 randomly selected responses — orders of magnitude larger than any national poll, and a dramatically higher bar than the status quo.

In the ideal implementation, questions are governed by a bridging algorithm — the same approach Community Notes uses. Questions are proposed by a diverse pool of contributors and only enter the active taxonomy if they earn approval from contributors who historically disagree with each other. Loaded or partisan questions are filtered out structurally, not by any single editorial board. AAPOR standards for neutral question design apply: balanced language, all reasonable response options, no leading framing.

For the open-source starting point, questions come from established polling organizations (Pew, Gallup, AP-NORC) with published methodology. The full question taxonomy is open — any researcher or journalist can audit the wording. That's a level of transparency no social media algorithm currently offers.

Right now, the system already silences the actual majority. The spiral of silence — people self-censoring because they falsely believe they're in the minority — is one of the most replicated findings in political communication (Noelle-Neumann, 1974). Hampton et al. (Pew Research, 2014) found social media makes this worse: people who sensed their Facebook network disagreed with them were less likely to speak up both online and in person. Community Check breaks that cycle.

It also explicitly displays minority positions — when 15% hold a view, that number appears clearly. A minority position accurately shown at 15% is far healthier than one that looks like 50% through amplification or 0% through suppression. Everyone benefits from seeing the real picture.

Election forecasting and opinion measurement are different things. Community Check doesn't predict elections. It measures policy preferences — "Do you support background checks?" — which are far more stable and far easier to measure than vote intention. When Pew reports 87% support for background checks across 15 years of polling with N=5,000+, that's a measurement with a published margin of error, not a prediction.

The platform sample adds N>100,000 — 50–100x larger than typical national polls, with margins of error below ±0.5%. That's an extraordinarily reliable signal, and it updates continuously.

Your perception is already being shaped — by algorithms that prioritize engagement over accuracy. Community Check simply makes additional information visible: what a representative sample of people actually believe. You can agree, disagree, or ignore it entirely.

Think of nutrition labels. The Nutrition Labeling and Education Act of 1990 didn't tell people what to eat — it made the information available. Community Check does the same for public opinion: standardized, transparent data beneath content that is already shaping how you see the world.

They solve different problems. Community Notes evaluates whether specific claims are true or false, written by self-selected volunteers rated via a bridging algorithm (Wojcik et al., 2022). Community Check doesn't assess truth — it shows what people think about the policy topic a post discusses. A post can be entirely accurate and still create a distorted picture of where the public stands.

The data source matters too. Community Notes contributors self-select in — and More in Common (2019) found that the most politically engaged users have the largest perception gaps (nearly 3x more distorted than disengaged users). Community Check uses random sampling and peer-reviewed national surveys. Both tools are valuable; they complement each other.

The research consistently shows the opposite. The social norms approach — correcting misperceived norms by showing accurate data — has been validated across 200+ studies (Berkowitz, Changing the Culture of College Drinking, Hampton Press, 2004). Tankard & Paluck (2016) found that accurate norm information corrects misperceptions without coercion — it reveals what people already privately believe, rather than pressuring them into something new.

Mernyk et al. (PNAS, 2022, n=4,741) showed this directly: correcting inaccurate metaperceptions reduced support for partisan violence, with effects lasting ~26 days. People didn't conform — they recalibrated, and felt better about each other as a result.

Community Check doesn't claim majority opinion equals truth. It provides a map of what people actually think — which is valuable precisely when your estimate of the room is off by 200–400%, as Ahler & Sood (2018) documented. If 70% of people believe something you disagree with, knowing that number helps you understand the world you're operating in. Hiding it doesn't make the disagreement go away.

Both majority and minority positions are always displayed with their numbers. This isn't "the crowd says you're wrong." It's "here's what the room actually looks like" — and that's useful no matter where you stand in it.

Correct — by design. Community Check activates only when reliable polling data exists, a documented perception gap has been identified, and a post reaches >10K impressions. That covers ~50–100 major policy questions. Posts about niche topics or emerging controversies without polling data get no Community Check.

The topic-matching confidence threshold is 0.8 — if the system isn't sure, it stays silent. False positives are worse than gaps. This is intentionally focused on the specific, well-documented cases where perception gaps are largest: gun policy, climate, immigration, healthcare, money in politics. Start where the data is strongest, and expand from there.

This is a legitimate question, and one worth exploring carefully. It's entirely possible that a government — or any well-resourced actor — could try to use a system like this to pollute polling data and distort public perception. The history of opinion measurement is full of attempts to do exactly that. For this reason, transparency is the most important property of the design.

The architecture is built to make manipulation detectable. Data comes from independent polling organizations — not governments, not platforms. The sampling algorithm is open-source. Question wording is published. Methodology is auditable. Quarterly transparency reports detail every step from sampling to display.

Compromising it would require simultaneously infiltrating multiple independent polling organizations, altering open-source code inspected by thousands of researchers, and evading anomaly detection. That's a high bar — and one that gets higher as more independent eyes are watching. Today's platform algorithms shape public perception at scale with zero transparency and zero public oversight. Community Check raises the baseline significantly, but it depends on a vigilant community of researchers, journalists, and engineers continuing to inspect it.

Independent thinking requires accurate inputs. Right now, the feed is giving you wildly inaccurate ones. Sparkman et al. (Nature Communications, 2022, n=6,119) found Americans underestimate popular climate policy support by nearly half — 80% actually support renewable energy siting, but people estimate 43%. Moore-Berg et al. (PNAS, 2020) found partisans overestimate the other side's hostility by roughly 2x. These aren't matters of opinion — they're factual errors about the world around you.

Community Check doesn't ask you to care what others think. It gives you an accurate picture so your independent opinions are based on reality, not on an algorithmically curated distortion of it.

Correcting metaperceptions — beliefs about what others believe — works differently than correcting factual beliefs. Factual corrections can trigger defensiveness. But learning "the other side is less extreme than you thought" tends to be relieving, not threatening. It lowers the temperature.

Lee et al. (PNAS Nexus, 2025, n=1,090) found that correcting overestimates of toxic social media users improved positive emotions and reduced perceived moral decline. Mernyk et al. (PNAS, 2022, n=4,741) found effects lasting ~26 days from a single correction. Community Check targets this same mechanism — not what you believe, but what you believe others believe. That's where the distortion lives, and that's where the correction is most effective.

Technical Specification

How Community Check would work in practice, from data sources to platform integration.

Read the whole story
emrox
13 days ago
reply
Hamburg, Germany
Share this story
Delete

Three-Em Dash

1 Share
Name:Three-Em Dash[1]
Unicode Version:6.1 (January 2012)[2]
Block:Supplemental Punctuation, U+2E00 - U+2E7F[3]
Plane:Basic Multilingual Plane, U+0000 - U+FFFF[3]
Script:Code for undetermined script (Zyyy) [4]
Category:Dash Punctuation (Pd) [1]
Bidirectional Class:Other Neutral (ON) [1]
Combining Class:Not Reordered (0) [1]
Character is Mirrored:No [1]
HTML Entity:
  • ⸻
  • ⸻
UTF-8 Encoding:0xE2 0xB8 0xBB
UTF-16 Encoding:0x2E3B
UTF-32 Encoding:0x00002E3B
Read the whole story
emrox
18 days ago
reply
Hamburg, Germany
Share this story
Delete
Next Page of Stories