THE BELIEF NEBULA
A breathing claim-cosmos with twin time — the one view that holds all six dimensions of a 40-million-claim contradiction-saturated substrate at once, and refuses to collapse a single one.
2026-06-05
The provocation
This week we built donto twelve dashboards. One per dimension: a maturity histogram, a tx_time accretion curve, a valid_time validity-extent chart, an evidence-coverage gauge stuck honestly at 2.4%, a predicate Zipf plot, an argument sign-ratio bar, an identity-edge census. Each is correct. Each is useful. Together they are a lie of omission.
Because the substrate is not twelve things. It is one thing, and its dimensions are coupled in a way no grid of small multiples can show. A contradiction in donto is not an event you can plot on the "contradiction chart." When ex:port-louis acquires an eleventh competing rdfType, that single act is simultaneously a transaction-time event (someone believed it at instant T), a valid-time fact (it claims to hold over some world-interval), an evidence event (anchored to a span, or — as it happens — not), an identity event (is this Port-Louis the same as that one?), and an epistemic event (a new fork at some maturity, some confidence, some polarity). Splitting that one moment across twelve charts is like describing a chord by playing its notes on twelve different days.
The 6D goal, then, is not decoration. It is fidelity. Show all six dimensions of a claim — who it is about (entity), what relation (predicate), what value (object), when we believed it (tx_time), when it is true in the world (valid_time), and what we epistemically know about it (evidence + maturity + confidence + polarity) — in a single coherent frame where you can see the coupling, not just the marginals. Not six charts. One sky.
The six dimensions, and why they will not separate
D1 — Entity / subject. Who or what the claim is about. ~23,000 contexts, millions of subjects. Semantic identity, and in donto it is soft: same, possibly_same, distinct, not_enough_information all coexist on the same symbol. There is no canonical node to point at.
D2 — Predicate. The freely-minted relation — ~880,000 of them, embedding-positioned, query-time-foldable into alignment families. This is the abundance signature itself. killedBy and assassinatedBy are different predicates that fold but never merge. The long tail of hapax predicates is not noise; it is the firehose working as designed.
D3 — Object. The value: an IRI (a thing) or a typed literal (a string, a date, a number). The same (subject, predicate) routinely carries many surviving objects. This is the irreducible site of contradiction.
D4 — tx_time. Belief time — when donto came to hold the claim. Retraction caps its upper bound; the claim is never deleted, only ember-capped. This is the substrate coming to know.
D5 — valid_time. World time — the daterange over which the claim asserts it is true. Orthogonal to D4 by construction. Brooks was exonerated and valid as innocent from 1996, but donto only believed it in 2026. The thirty-year gap between D4 and D5 is not an artifact. It is the harm, made measurable.
D6 — Epistemic status. A composite, but its sub-channels are independent and must stay independent: maturity E0–E7 (lifecycle, with the load-bearing E1→E2 waterline where a hypothesis is first pulled toward reality); evidence-anchoring (anchored vs. hollow — only 2.4% of statements are anchored, the single most important hole in the substrate); confidence [0,1]; and polarity (asserted vs. negated).
These six are irreducible because they are coupled at the moment of the claim and decouple only in time. A popular-but-unproven claim (high belief-mass, low maturity, zero evidence) is geometrically distinct from a quiet-but-solid one — but only if maturity, evidence, and belief-mass are on separate channels of the same mark. The instant you average them into a "truthiness" score, you have told the central lie. The view's whole job is to keep them apart while keeping them together in one frame.
The visualization: THE BELIEF NEBULA
Render the substrate as a deep-field astrophotograph that breathes through belief-time.
Every claim is a star in a semantic sky. The sky is not a backdrop — it is the 880K-predicate abundance field, rendered as faint nebular gas so the long tail is luminous mass, never pruned. Where claims are dense, the gas glows; the rarest hapax predicates are the brightest individual sparks, not greyed-out dust. Zipf becomes light.
Position is a precomputed 2D UMAP of each claim's predicate-embedding ⊕ entity-embedding vector. So claims about the same subject pull together: constellations are subjects. Aligned predicates share a region: neighborhoods are predicate-families. The space is not arbitrary; it is the substrate's own learned geometry of meaning.
The glyph: one star, packed concentrically
A single claim is one star. From its core outward, each ring is a channel:
corona bloom ← confidence (soft halo opacity)
╱──────────────╲
│ photosphere │ ← evidence-link count (fine ticks)
│ ╱────────╲ │
│ │ CORE │ │ ← anchored = solid / unanchored = hollow ring
│ │ E5 ✦ │ │ negated = absorption-disk (dark anti-star)
│ ╲────────╱ │ ← SIZE+BRIGHTNESS = maturity E0..E7
╲──────────────╱ (waterline glow ring at the E1→E2 gate)
║
hue = predicate alignment-family (spectral class)
gas = context/domain (ambient, low-saturation)
║
════════════════════════> comet TAIL = valid_time extent
(length=duration · hatched stub=unwired · ∞ fade=unbounded)
tail offset behind clock-position = belief-latency
- Core fill — solid bright if evidence-anchored; a dark hole rimmed by a light-ring if unanchored. Negation inverts the core to an absorption-disk: a dark anti-star on a bright rim.
- Size + brightness — maturity E0..E7. A protostar at E0 is tiny and barely glowing; a brilliant main-sequence sun at E4+. A faint waterline ring inside the body marks the E1→E2 crossing, so you see at a glance whether this star has been pulled from hypothesis toward reality.
- Photosphere — fine tick-marks counting evidence_links; zero ticks is the hollow tell.
- Corona — soft bloom whose opacity is confidence. (Maturity and confidence are different rings, on purpose.)
- Spectral hue — the predicate's alignment-family. The nebular gas behind it — low-saturation so it never competes — is the context: genealogy teal, memory violet, beam amber, greek-myth gold.
- Comet tail — valid_time. Length is duration; an infinite diffuse fade for unbounded validity; a hatched stub when valid_time is unwired (drawing the hole). The angle and offset between where the tail points and where the star sits on the clock is the belief-latency.
The central conceit: contradictions are multiple-star systems
A contested (subject, predicate) is never one star. It is a multiple-star system — N co-orbiting suns, one per surviving object-variant, gravitationally bound in a tight dance, each carrying its own size, fill, tail, and evidence independently. ex:port-louis rdfType is an eleven-star system: Place, City, CapitalCity, NavalBase, Colony, Port, and five more, eleven suns wheeling around one barycenter, none extinguishing the others.
The barycenter glows brighter as more belief-mass accretes — but the system never collapses to a single sun. That collapse is the argmax lie donto refuses, so the Nebula simply never draws it.
THE BELIEF NEBULA tx-clock ▸ [1996 ·····|2026·▮· now] ⏯ τ=0.74 ▭▭○── fold:◻
╔══════════════════════════════════════════════════════════════════════════════╗
║ ░░░ teal gas: ctx:genealogy ░░░ · · violet: ctx:memory · · ║
║ ·········· E1→E2 WATERLINE ISOBAR (only ~6% of the sky lies above) ··········║
║ ⊛ ←E5 anchored,bright ◌ ··········→ (hollow=0 evidence, DRAWN) ║
║ /│\ photosphere||| (8 ticks) a single dim protostar, E0 ║
║ ╲ ════════════════> unbounded valid tail ║
║ ┌── MULTIPLE-STAR SYSTEM: ex:port-louis rdfType (11 suns, kept) ──┐ ║
║ │ ⊙Place ⊙City ✦CapitalCity ◌NavalBase(hollow) │ ║
║ │ ╲ ╱ barycenter ╱ ╲ ⊙Colony ⊙Port ... │ ║
║ │ ◍ ─ ◍ ── ✺ ── ◍ ─ ◍ none extinguishes the others │ ║
║ └──────────────────────────────────────────────────────────────────┘ ║
║ ╲rebuts (red shock-front) ╱supports (bright bridge) ║
║ [system A] ◄══════╳══════► [system B] ◄──────accretes──── [C] ║
║ ✶ Brooks: ignites at tx=2026 ←···············comet trails to valid=1996 ║
║ (30-yr belief-latency = the gap is the harm, rendered as tail offset) ║
║ ●→ ember: was primary, RETRACTED — core extinguished, star STAYS in sky ║
║ ⊘ negated claim (absorption-disk / anti-star) ⌗ unwired valid_time stub ║
║ (( feathered halo overlap = possibly_same subjects, τ-tunable, never merged ))║
╚══════════════════════════════════════════════════════════════════════════════╝
legend ⊛solid/anchored ◌hollow/unanchored ✺barycenter ◍variant-sun ⊘negated
tail=valid_time size/glow=maturity(E0..E7, waterline isobar at E1→E2)
hue=predicate-family gas=context ═red rebuts ─bright supports ⌗=hole
The dimension → channel table
| Dimension | Visual channel | How it reads |
|---|---|---|
| D1 entity/subject | POSITION (x,y) from entity-embedding | Constellations are subjects; same-subject claims cluster |
| D2 predicate | POSITION + spectral HUE | Co-determines (x,y); alignment-family sets the star's spectral class |
| D3 object | STAR IDENTITY within a system | Each surviving variant = its own sun; IRI = sharp disk, literal = soft glow |
| D4 tx_time | GLOBAL CLOCK | When the star ignites; retraction caps it to an ember (kept in sky) |
| D5 valid_time | COMET TAIL | Length = duration; ∞ fade = unbounded; hatched stub = unwired; offset = belief-latency |
| D6a maturity E0–E7 | SIZE + LUMINOSITY + waterline ring | Protostar → main-sequence; bright isobar threads the E1→E2 gate across the whole sky |
| D6b evidence | CORE FILL + photosphere ticks + collar dots | Solid = anchored, hollow ring = unanchored; ticks/dots count evidence_links |
| D6c confidence | CORONA bloom opacity | Independent halo — not fused with maturity |
| D6d polarity | star vs. ANTI-star | Negated = dark absorption-disk |
| context/domain | nebular GAS color (low-sat) | Ambient teal/violet/amber/gold, never competes with marks |
| abundance (880K preds) | NEBULAR GAS density | Zipf-as-light; the long tail glows; hapax = brightest sparks |
| argument links | GRAVITATIONAL FILAMENTS | supports = bright in-falling bridge; rebuts = red shock-front; undercuts = dashed orange sever |
| identity-as-hypothesis | feathered τ-tunable HALOS | possibly_same constellations bleed together; never hard-merge |
| alignment family | reversible FOLD toggle | swirls variants into a shared orbital ring and back — a lens, not a write |
Twin time, in two orthogonal media
The two times live in genuinely separate media so they cannot be conflated — the failure of every two-axis bitemporal lattice.
tx_time is the global clock. A scrubber along the bottom drives the entire cosmos through belief-time. Drag it and stars ignite at their tx_time, extinguish to embers at retraction, and companions in multiple-star systems re-rank — a dim sun brightening past the old primary while the old primary keeps shining, muted, never deleted. Press play and the field breathes: belief accreting, contradictions blooming into multiple-star systems, the re-ranking shimmer.
valid_time is the comet tail. It is not on the clock. Freeze tx at "now" and you can still read every claim's world-validity in its tail. The angle between the tail and the star's clock-position is belief-latency — and the Brooks star, igniting at tx=2026 with a comet trailing thirty years back to valid=1996, is the rare data-mark that is both instrument and elegy.
Interaction: the lenses, strictly gated
Everything that would crowd the frame is interaction-gated, so the default view stays a clean deep field:
- Hover a star → a HUD with the full claim, both timestamps, E-level, evidence spans one brush away.
- Click a star → ignite its local argument filaments (the live 12:1 rebuts:supports ratio means an all-filaments-on default would be an unreadable red hairball, so they stay local).
- τ-slider → feather the identity halos; watch
possibly_sameconstellations bleed together or separate, never hard-merging. - Fold toggle → swirl predicate-variant stars into their alignment-family orbital ring, and back. A reversible lens, never a write-time canonicalization. Inverse and sub_property relations stay drawn as distinct filaments, not folded to synonymy.
- "As-of" parking → leave the clock at a past instant and the Nebula answers what did donto wrongly believe at tx=T? — the then-primary suns that have since dimmed are still there, shining muted. A playable epistemic-audit instrument.
- Draw-the-holes lens → dim every anchored star and light only the hollow ones and hatched valid_time stubs, turning the honest 2.4% coverage into a luminous steering map of exactly what to anchor or wire next. Absence as figure.
And threading the whole frame, with zero added interaction: the E1→E2 waterline isobar — a single faint bright contour across the entire sky. The ~6% of claims that have crossed from hypothesis into reality-pull become a visible coastline, so "how much has the substrate actually believed?" is legible at a glance.
Why it is honest
The Nebula is built so that every collapse donto refuses is a thing it cannot draw:
- No argmax. A contested (S,P) is a multiple-star system. The barycenter glows with belief-mass, but the system never resolves to one sun. The argmax cut is the move donto refuses — so it is literally never rendered.
- Two time axes, truly separate. tx in the global clock, valid in the per-star comet tail, in orthogonal media. You can read either without the other. Their angle is belief-latency. They are never fused onto shared geometry.
- Draw the holes. Unanchored claims are hollow stars — a ring of light around a dark center. Unwired valid_time is a hatched stub. The 2.4% coverage shows as a sky that is mostly hollow rings, and a dedicated lens turns that absence into a worklist. Honest, not hidden.
- Never overwrite. Retraction caps tx_time and dims the star to an ember that stays in the sky forever. Re-ranking is a companion brightening past the old primary while the old primary keeps shining muted. History is preserved as visible state.
- Hold disagreement, never average it. Argument filaments keep their sign — supports bridge, rebuts shock-front, undercuts sever. The live 12:1 rebuts dominance (≈2,247 vs ≈180 across only ~2,433 edges) shows as a sky honestly webbed with red, not smoothed to grey "related" edges.
- Maturity and confidence are separate channels. Luminosity/size vs. corona bloom, with the waterline isobar drawn inside the view. A popular-but-unproven claim looks long-tailed and dim; a quiet-but-solid one looks small and bright. They are never the same mark.
- Abundance aggregated, not pruned. 880K predicates are luminous gas; the rare hapax are the brightest sparks; zero truncation.
- Alignment is reversible. The fold is a lens that swirls and un-swirls. Inverse and sub_property stay distinct filaments — never folded to synonymy at write time.
- Identity is soft. Feathered τ-tunable halos for
same/possibly_same/distinct, and a distinct treatment for the abstentionnot_enough_information. Nothing hard-merges.
The one honesty caveat is stated plainly: at extreme zoom-out the gas aggregates individual maturity and evidence into density, recoverable only on drill-in. That is LOD-honest, not lossy — the holes-lens and the waterline isobar keep the two most ethically-loaded channels (evidence absence and the reality-pull frontier) legible even at the macro scale.
Why it is beautiful
It hijacks the single most awe-loaded image humans have — a deep-field night sky — and makes every photon mean something. Deep space is already the visual language of vastness, depth, and humility before the unknown, which is exactly the emotional register of a 40-million-claim contradiction-holding substrate. You do not need to teach a person to feel small before a star field. You only have to make the smallness true.
The palette is naturally gorgeous and accessible: a dark field, jewel-toned low-saturation nebular gas per domain, white-hot main-sequence stars for matured-anchored claims, dim-red protostars for the hypothesis zone. The motion is organic — accretion, ignition, the slow wheel of binary systems — so the substrate does not tick like a dashboard; it breathes. That is the difference between an instrument panel and a living thing.
The aesthetic argument is, at bottom, an emergence argument. A table shows you rows. A field shows you pattern. At 40M claims, no enumeration is legible — but a kernel-density nebula is, and scale stops being a problem and becomes the texture. The 880K-predicate long tail, which every other knowledge-graph tool truncates as an embarrassment, becomes the luminous gas that gives the image its depth. The holes become the negative space that the eye reads as form. The forks become the multiple-star systems that draw the eye as structure. The thing donto is worst at advertising — its 2.4% evidence coverage, its contradiction-saturation, its 12:1 disagreement — becomes the source of the image's drama. This is the rare data-art that is both instrument and elegy: the Brooks comet trailing thirty years behind its star is beauty in the service of an ethical point. The gap is the harm.
There is a strict Tufte/whitespace contract underneath the romance. One dominant metaphor, exploited fully, rather than a busy mess of competing encodings. A clear visual hierarchy: bright resolved stars draw the eye, gas gives depth, filaments are tertiary and gated. Generous black whitespace. Restraint is what keeps a six-dimensional frame from becoming a hairball — and restraint is also what makes it beautiful.
How to build it
It is a Next.js 16 page on donto-admin-web (admin.donto.org) — already a Next app with a read-only donto_ro pool and the /api/beam precompute pattern. It lives as the capstone above the twelve per-dimension charts: those become the drill-down panels the HUD links to; the Nebula is the one frame that holds them all.
Rendering — deck.gl is the fast path. A ScatterplotLayer (or custom Layer) for resolved stars over a HeatmapLayer/ScreenGridLayer for the nebular gas; ArcLayer for argument filaments (only ~2,433 rows — trivial, colored by sign); LineLayer/PathLayer for comet tails derived from valid_time geometry. deck.gl's GPU picking gives hover/click for free. A three.js + custom GLSL sprite-shader path is available if we want finer control of the corona bloom and additive-blended gas, but it is not required for v1. No refraction shaders, no fluid sim, no far-side-of-a-globe occlusion to fight.
Precompute is the load-bearing step — there are no live 40M scans. A nightly Rust job (donto-agent style, in the Cargo workspace, resumable + segmented + progress-verified by real row-count deltas, not its self-reported rate — this box has already burned hours on jobs that looked launched but stalled at 0/s in a swap-thrash leak) materializes:
donto_claim_layout— UMAP 2D coords per claim, run once over the existingdonto_predicate_embedding ⊕ donto_entity_embeddingvectors, stored as(claim_id, x, y).- A binned density tile-pyramid per context for the gas LOD.
- Per-(S,P) contradiction-cluster membership + barycenter for the multiple-star systems.
- Argument-filament endpoints from
donto_argument(≈2,433 rows — trivial).
bitemporal ranges come from donto_statement via the donto_maturity / donto_polarity SQL helpers at precompute time; the fold reads donto_predicate_closure (≈883K edges) for family-centroid coords.
Live per-frame data is tiny. Viewport-bounded star attributes, and the tx-clock is a single shader uniform comparing each star's [tx_lo, tx_hi] against the clock value — visibility, ignition, ember-capping, and re-ranking all happen on the GPU with no requery per frame. The fold animates positions with a GPU lerp toward family centroids. Time scrubber, τ, fold, and draw-holes are React state → shader uniforms. d3 handles scales, the legend, and the SVG HUD overlay.
LOD for 40M: at far zoom show only position + domain-gas + the waterline isobar + the holes texture (gas aggregated, never enumerated). Resolve individual star anatomy — ticks, tails, polarity — only at mid-zoom. Keep filaments and the τ/fold lenses strictly interaction-gated.
Archival fallback, required not optional: one canonical hero PNG at tx=now, with the waterline isobar, a labelled Brooks belief-latency comet, and a holes-lens inset — so this report and every future one renders beautifully in the gold-standard pandoc template even with JS disabled. The animation is the bonus; a single frame is already the image.
Coda: the steering wheel
donto's discipline has always been measurement as the steering wheel — you cannot steer an abundance firehose you cannot see. The twelve dashboards measure the substrate's organs. The Belief Nebula measures the substrate itself: one living instrument panel where you watch donto come to believe, retract without forgetting, and re-rank by reality — and where the things that look like flaws on any other chart (the hollow majority, the contradiction systems, the red shock-fronts, the thirty-year comets) resolve into the honest, breathing portrait of a knowledge base that grows in all directions and prunes only by reality.
It is the one view that does not lie about the data, because it refuses every collapse the data refuses. And it is beautiful for exactly the same reason: a sky that holds its contradictions, keeps its embers, and never throws a single light away.