METHODOLOGY

A thousand minds. One verdict.

Holon runs a vectorized Bass-SIR-D model — adoption, churn, negative contagion — over a directed weighted graph of 600–10,000 agents. Zero LLM calls per tick. A 90-day run on 1,000 agents finishes in ~21 ms. Replayable from a seed. Backtests public.

1,000 minds → one verdictp10 · p50 · p90

TECHNICAL REPORT · DRAFT

The instrument explained.

01 · THE MODEL

Bass-SIR-D, vectorized.

Each agent occupies one of four states — Susceptible, Adopter, Quiet, Detractor — and transitions probabilistically per tick. Adoption hazard combines an exogenous innovation term p with an endogenous imitation term q·φ⁺, modulated by role-based friction f and dampened by negative social pressure φ⁻.

Churn isn't a coin flip — it's gated by personal aversion and inflamed by neighbors who already defected. Detractors decay back to quiet at rate δ ≈ 0.07/tick (a half-life calibrated on firestorm literature).

02 · THE GRAPH

Directed, weighted, column-normalized.

Every citizen sees their in-neighbors weighted by influence. Influencers act as hubs (out-degree ×10). Department Heads form team-trees (10 strong ties ×4 weight to their reports). Cautious buyers, CFOs, and Heads require ≥2 distinct adopter contacts before social proof counts — Centola complex-contagion.

22% of the city is out-of-market: they never adopt, but they can still pile on. This is the canonical case where the dashboard shows lower numbers than the marketplace narrative.

03 · ANTI-SYCOPHANCY

Built to say no.

The compliance bias of LLM personas is the #1 documented failure of synthetic research. Holon encodes resistance as a friction coefficient f ≥ 1 per role × event type. A Skeptical CFO facing a price increase has f = 4 — they need 4× the social proof of an Early Adopter to flip.

Critically: friction applies only to POSITIVE pressure. Negative signals are weighted 2.5× (negativity bias, Baumeister) and bypass the dampener. Resisting enthusiasm is human. Resisting fear is not.

04 · DETERMINISM

Same seed, same hash.

The engine uses a seeded Mulberry32 PRNG. A run is a pure function of (scenario, seed) — we hash the final state to verify replay. Every shared URL is a reproducible scientific result; every backtest is a public notebook.

Date.now() and Math.random() are forbidden inside the engine. Reproducibility isn't a feature — it's how we earn the right to publish numbers.

05 · CALIBRATION

Priors first, your data second.

Free runs use public industry templates (B2B SaaS seat-based, PLG self-serve, DTC). Calibrated cities (tier Scale) fit p, q, μ from your historical adoption curves (Mixpanel/Amplitude/CSV exports) and report a per-account MAPE on rétrodiction holdout.

We never claim a global accuracy figure. Accuracy is reported per account, with the holdout horizon and the seeds used. That's the only honest number.

06 · WHAT THE MODEL MISSES

Honest limits.

High-stakes decisions dominated by emotion or identity (politics, sensitive products). Novel categories with no precedent. Rare-event tail risk. We log these explicitly per backtest in a dedicated section.

The model is a pre-filter, not an oracle. Use it to kill bad ideas fast and protect your research budget. Run real interviews on the survivors.