Descent Tree Explorer — walk the family tree of the gods
Concept
An interactive family tree of religious lineages rendered as a living tree you can walk. The roots sit in the deep past at the bottom of the screen; the canopy is the present at the top. Three great trunks grow side by side in one orchard:
- PIE religion → Vedic / Iranian / Greek / Norse (and Baltic, Italic, Anatolian twigs)
- Canaanite/Ugaritic substrate → Israelite religion → Judaism → Christianity → Islam
- Vedic → Hinduism; śramaṇa fork → Buddhism / Jainism (Sikhism as late shoot)
Branch forks are dated divergences. Fruit hanging on each branch are earliest dated attestations — each fruit carries its date, evidence class (1-archaeology / 2-text / 3-reconstruction), and links straight to the vault note that backs it. Hovering a deity name (Zeus) makes its cognates light up across branches simultaneously (Dyauṣ Pitā, Iūpiter, Týr, Dievas, Tiwaz) with the sound-law chain shown on the connecting glow. Edge semantics follow vault law: descent = solid living wood, contact = a graft/vine crossing between trunks (Anu borrowed into Hittite religion; Atrahasis flood → Gilgamesh XI → Genesis), convergence = deliberately no connection — two fruits pulse in sympathy with a "looks alike, isn't kin" label. Common origins stay a hypothesis, not a premise: the orchard has three trees, not one.
Why it takes you back in time
Time is not a label on this visualization — it is the vertical axis you physically travel. You land in the canopy at 2026 CE and scroll down, descending through strata: past the Quran's first manuscripts, past Eddic Iceland, past Homer, past the Knossos tablet that wrote Zeus's name in 1400 BCE, down into the dark unattested root-zone below ~3000 BCE where everything is rendered as translucent ghost-wood (evidence class 3 — reconstruction, honestly marked). The background ages with you: parchment → papyrus → clay → ochre-stained rock, and the ambient light dims from daylight to firelight. The emotional payload is the moment the cognate glow fires: you hover Zeus high in the Greek branch and watch a thread of light run down the branch, through the Mycenaean fruit, into the trunk, and back up into India, Rome, and Scandinavia — five thousand years and five thousand kilometres of separated peoples saying the same two words, Sky Father, because their great-great-…-grandparents once said it together. That is the comparative method made physical, and it lands like vertigo.
Experience walkthrough
1. Arrival. Full-viewport SVG orchard, camera at canopy level (present day). A thin time-rail on the left edge shows your current depth: 2026 CE. Three crowns are labeled with living traditions; leaf-count subtly encodes adherent scale.
2. Descent. Scroll/drag descends the tree. The time-rail spins backwards; era strata bands (CE / classical / Bronze Age / unattested) slide past. Branches converge as you go down — Christianity and Islam merge back into Second-Temple Judaism, which merges into Israelite religion, which fuses (at the El-Yahweh node) into the Canaanite trunk.
3. Fruit. Each attestation is a small amber (archaeology) or blue (text) fruit. Click → side panel with the note's frontmatter card (date, evidence class, confidence, counter-evidence) and a link to the rendered vault note. The Knossos di-we fruit at 1400 BCE is the oldest written "Zeus"; the Kuntillet Ajrud fruit (~800 BCE) shows "Yahweh and his Asherah."
4. Cognate glow. Hover any deity name → all cognates across all branches ignite; the connecting path is annotated with the reconstruction (Dyḗus ph₂tḗr) drawn in the ghost-wood root zone. The Anatolian branch glows differently* — root reflex only (šiu-, Tiwaz), no father formula — visually preserving the vault's central steelman.
5. Grafts. Contact edges arc between trunks as vines with a direction arrow and a date window: Mesopotamian flood → Genesis; Anu → Hittite pantheon; Zoroastrian eschatology → Second-Temple Judaism (marked unresolved/dashed where the vault verdict says so).
6. The root zone. Below the earliest attestation everything is translucent and explicitly labeled "reconstruction — no text exists." Reaching the PIE root plays no fanfare; it shows the honest void, with the three anchor cognate branches faintly converging into it. Date-or-label, rendered.
Data from the vault
All of it already exists at tier 1–2; the explorer is a view, not new research:
- Cognate set + per-branch table:
04_indo_european/2_notes/dyeus-sky-father-cognate-set.md(the 7-branch theonym/formula table is the glow dataset, including the Anatolian root-reflex-only nuance and the Týr demotion). - Dated attestation fruit:
09_comparative/2_notes/sky-father.md— the "Occurrences (dated)" table maps 1:1 onto fruit (Linear B KN Fp 1 c. 1400 BCE; Old Hittite šiu- 16th c. BCE; Rigveda composition c. 1500–1200 BCE with the oral-gap caveat from04_indo_european/2_notes/rigveda-oral-gap-composition-vs-attestation.md; Homer; Iguvine Tablets; Kylver stone c. 400 CE; Latvian Dievs folk corpus). - Abrahamic trunk:
05_abrahamic/2_notes/el-yahweh-identification-canaanite.md,israelite-religion-origins.md,kuntillet-ajrud-yahweh-asherah-popular-religion.md— the El→Yahweh fusion node and the popular-religion fruit. - Dharmic trunk:
06_dharmic/2_notes/vedic-religion.md,karma-rebirth-doctrine-origins.md(the śramaṇa fork node, Greater-Magadha hypothesis as a contested fork annotation). - Cross-trunk vines:
09_comparative/2_notes/great-flood.md(descent within Mesopotamia, contact into Genesis),dying-rising-god.md;02_mesopotamian/2_notes/atrahasis-antedates-gilgamesh-flood-tablet.md. - Frontmatter contract as schema:
attestation_earliest,transmission,confidence,counter_evidenceare already mandatory fields — the tree builder parses them; nothing is hand-duplicated except the edge list itself.
Implementation sketch
Stack: bun only, zero npm deps, vanilla JS + inline SVG, served from the existing tools/server.ts (Bun.serve if-chain — two new branches before the catch-all file handler).
tools/tree-data.json(checked in, hand-curated, ~150 lines): nodes (id, label, parent, era_start, era_end, trunk, kind: lineage|fork|reconstruction), edges (from, to, type: descent|contact|convergence, verdict_note), andcognate_sets(set_id, members: [{node, name, formula: bool, note}]). This is the only new data artifact; everything dated links to a vault note path.GET /api/tree.json— loadstree-data.json, then enriches each node's fruit by parsing frontmatter (attestation_earliest,confidence,evidence class) from the linked vault notes with the existingparseFrontmatter()already inserver.ts. Cached on vault mtime likevaultVersion().GET /tree— serves one self-contained HTML page through the existingpage()wrapper: an<svg>orchard plus ~300 lines of vanilla JS. Vertical layout = simple era-band y-scale (no layout library needed; positions precomputed in tree-data.json asxlane + era y). Scroll/wheel translates a<g>viewport transform; hover usesdata-cognate-setattributes and a CSS class toggle for the glow; fruit click fills a fixed side panel from the JSON and deep-links to the note route the server already renders.- Visual language: descent =
<path>with wood gradient; contact = dashed bezier vine + arrowhead marker; reconstruction zone =opacity:.35+ dotted; fruit =<circle>amber/blue per evidence class. Era strata = full-width rects with the background textures below. - Wiring: link from INDEX.md "Visual explorer" line (per AGENTS rule: not linked = doesn't exist) once shipped; route stays read-only, no state, no auth — consistent with the server's contract.
Images needed
Numbered GPT-5.5 (codex CLI) photorealistic prompts — no text in images, no devotional framing, no recognizable living people:
1. Hero / page banner — "Photorealistic ancient gnarled oak at dawn on the Pontic-Caspian steppe, immense root system partially exposed in eroded earth, three massive trunks growing from one buried root mass, golden hour mist, shot on medium-format film, archaeological-documentary mood, no text."
2. Era stratum: Bronze Age band — "Macro photograph of a sun-dried clay tablet surface with faint cuneiform impressions, warm raking light, shallow depth of field, texture fills frame edge to edge, suitable as a dim background band, no legible text."
3. Era stratum: classical band — "Macro photograph of aged papyrus fibre texture with faded iron-gall ink stains, soft museum lighting, fills frame, background-texture use, no legible writing."
4. Era stratum: medieval-to-modern band — "Macro photograph of stretched vellum parchment with wax-seal residue and candle-soot edge darkening, raking light, full-frame texture, no legible writing."
5. Root zone (reconstruction stratum) — "Photorealistic underground cross-section of deep tree roots in dark loess soil fading into black, single shaft of light from above, ochre hand-print faintly on a buried stone, archaeological excavation lighting, mysterious but not mystical, no text."
6. PIE fork vignette — "Photorealistic Bronze Age steppe scene at dusk: wheeled wagons and horses beside a river, distant figures around a fire under an enormous clear darkening sky, c. 3300 BCE material culture, cinematic wide shot, no faces in close-up, no text."
7. Canaanite fork vignette — "Photorealistic Late Bronze Age Levantine coastal city at sunset, mudbrick temple platform above a harbor, storm clouds over the Mediterranean, Ugarit-inspired architecture, archaeological reconstruction realism, no text."
8. Śramaṇa fork vignette — "Photorealistic dawn on the middle Ganges plain c. 500 BCE, mist over the river, a solitary ascetic figure seated far from a walled early-historic city on the horizon, muted naturalistic palette, documentary framing, no text."
9. Cognate-glow social card — "Photorealistic night sky over a dark treeline, a single bright star with thin light refractions reaching toward five points on the horizon, long-exposure astrophotography feel, restrained and precise, no text."
Effort
M overall.
- Ships first (S, one sitting):
tree-data.jsonwith the three trunks and ~25 nodes,/api/tree.json, and a static (non-animated)/treeSVG with clickable fruit linking to vault notes. Already useful and already true to the data. - Second (S): cognate-glow hover from the *Dyḗus set + era strata backgrounds (images 1–5).
- Third (M): scroll-descent camera, contact vines, root-zone ghost rendering, fork vignettes (images 6–8), INDEX link. Stretch: per-fruit confidence styling and an "unresolved" pulse for convergence pairs.