origins//research
iteration 5/10 Experience build 5/10 · implementing whisper-chain (oral-transmission chasm) + ritual-walkthroughs (Shang divination) 95/95 criteria · 100%
today
type · ideastatus · proposal

Time-Machine Mode

Concept

A site-wide chronological scrubber living in the header of the vault explorer. Drag a single handle from 100,000 BP to today and the entire site responds at once:

The scrubber is not a page; it is a mode the whole explorer enters. Every directory listing, every note, every navigation keeps the era you chose until you scrub again.

Why it takes you back in time

The vault's core discipline — date or label (AGENTS.md §1.6) — means every origin claim already carries a machine-recoverable earliest date. Time-Machine Mode turns that epistemological rule into a physical sensation: standing at a moment in time and seeing only what the evidence says existed.

Experience walkthrough

1. Arrive at the home page. Under the sticky header sits a thin horizontal scrubber — a timeline rail with faint tick marks at the vault's attested events (each tick is a real note). The handle rests at "today"; the site looks as it does now.

2. Grab the handle and drag left. The year readout counts down — 1900 CE, 800 BCE, 2350 BCE — on a logarithmic scale, so the crowded last 5,000 years get most of the rail and the long Paleolithic compresses gracefully.

3. At 2350 BCE the site transforms. Background deepens to temple-stone and lapis. The domain grid reorders: Mesopotamia, Egypt, Prehistoric first (all attested); Abrahamic, Dharmic, East Asian dim to 30% opacity with a small "not yet attested" whisper-label. The context strip reads: ⌛ You are in c. 2350 BCE — the Pyramid Texts are being inscribed in the pyramid of Unas at Saqqara; Eridu's temple sequence is ~3,000 years old; Sumerian god-lists have been written for two centuries; Osiris has just entered the written record. Each item links to its note.

4. Click into a domain. The era persists (URL hash #t=-2350). In 02_mesopotamian/2_notes/, the Atrahasis flood-tablet note (1635 BCE) is dimmed — it doesn't exist for another seven centuries — while the Eridu temple claim glows fully.

5. Open a dimmed note. It still opens (read-only honesty — nothing is hidden), but a banner says "First attested c. 1635 BCE — 715 years after your current position." One click jumps the scrubber to that note's moment.

6. Keep dragging left to 30,000 BP. Nearly everything fades. The palette goes near-black with ember-orange accents. The strip reads: You are in c. 30,000 BP — Sungir's burials are fresh; Chauvet's walls were painted six millennia ago; every religion with a name lies tens of thousands of years in the future.

7. Drag back to today. The palette warms back to the familiar dark theme, all cards re-light in domain order, and the strip dissolves. A small "⏱ Time-Machine" toggle in the header collapses the rail when you want the plain explorer.

Data from the vault

Everything the mode shows is already in frontmatter — no new data entry required:

FieldWhereUse
attestation_earliestclaims, motifs, traditions (REQUIRED by template)The note's "lights up" moment; first parseable date in the string
date_of_evidencesource recordsTick marks + context-strip events for tier-1 sources
transmission, confidencemotifs/claimsStrip styling — speculative items render with a dashed "inferential" treatment
region_origintraditionsLets the strip group events by region ("Egypt: … · Mesopotamia: …")
domain / directoryall notesDomain-card ordering: a domain's "born" date = min attested date of its notes

Real values already present and parseable today: c. 92,000 BP (Qafzeh), c. 34,000–30,000 BP (Sungir), c. 5500 BCE (Eridu Level XVIII), c. 2350 BCE (Unas Pyramid Texts), c. 1635 BCE (Atrahasis), c. 1380 BCE (Mitanni treaty), c. 1250 BCE (oracle bones), c. 800 BCE (Kuntillet Ajrud), 712 CE (Kojiki). That is already enough density for a compelling rail; every new researched note enriches the machine automatically.

Notes with speculative or unparseable dates never dim — they render in a neutral "undated" state with a small hourglass marker, honoring rule §1.6 rather than guessing.

Implementation sketch

Bun, zero npm deps, all inside tools/server.ts (the existing single-file, server-rendered explorer). Four additions, ~250 lines total:

1. Date parser (pure function next to parseFrontmatter):

```ts

// returns astronomical year: BCE → negative (2350 BCE → -2349), CE → positive, BP → 1950 - n

function earliestYear(s: string): number | null {

const bp = s.match(/([\d,]+)(?:[–-][\d,]+)?\s*(?:cal\s+)?BP/i);

const bce = s.match(/([\d,]+)(?:[–-][\d,]+)?\s*BCE/);

const ce = s.match(/(\d{3,4})\s*CE/);

// prefer the oldest hit; strip commas; return null if /speculative/ leads the string

}

```

Take the oldest parseable date in the string (the fields often list several anchors; the first/oldest is the attestation headline).

2. /api/timeline endpoint (new route alongside /api/version): walk the vault once (reuse the vaultVersion() walk pattern, cache keyed on version), parse frontmatter of every .md, emit

```json

[{ "p": "/02_mesopotamian/2_notes/eridu-temple-level-xviii…md",

"t": "Eridu temple Level XVIII…", "d": "02_mesopotamian",

"y": -5499, "label": "mud-brick altar with food offerings, Eridu",

"type": "claim", "conf": "high" }]

```

This one payload powers the rail ticks, the context strip, and domain birth-dates.

3. Server-side data- attributes (two one-line edits): noteCard() adds data-y="${year ?? ''}" to each .cardlink; the domain grid on home() adds data-born per domain card. Dimming/reordering is then pure CSS class toggling — no re-render, no flicker.

4. Header rail + client script (one TIMEJS const, injected by page() like the existing version-poll script; one CSS block appended to CSS):

Read-only guarantee untouched: the mode only renders differently; the server still serves the same markdown.

Images needed

Numbered GPT-5.5 (codex CLI) prompts — all photorealistic, cinematic, archaeologically grounded, no text in image, 21:9 for ambient backdrops, saved to assets/illustrations/:

1. era-paleolithic.png — "Interior of a deep limestone cave at night lit only by a single small fire; ochre handprints and faded animal paintings barely visible on the rock wall; long shadows, ember-orange and near-black palette, photorealistic, cinematic wide shot, no people facing camera, no text."

2. era-neolithic.png — "Dawn at a megalithic hilltop enclosure of carved T-shaped limestone pillars in the style of Göbekli Tepe, low golden light raking across worked stone and dry steppe grass, ochre and bone-grey palette, photorealistic archaeological reconstruction, no modern objects, no text."

3. era-bronze.png — "A Mesopotamian mud-brick temple platform at dusk beside a reed-lined river, oil lamps glowing in doorways, lapis-blue twilight sky over warm baked-brick tones, distant figures carrying offerings, photorealistic cinematic reconstruction, no text."

4. era-axial.png — "A quiet scriptorium scene of the ancient world: papyrus scrolls and clay tablets on a wooden table lit by a clay oil lamp, parchment and ink palette, warm candle-toned shadow, extreme detail, photorealistic, no readable writing, no text."

5. era-modern.png — "Museum gallery at night: a single illuminated display case holding a cuneiform tablet, cool dark-blue ambient light, glass reflections, contemplative cinematic mood, photorealistic, no text."

6. time-machine-mode.png (banner for this idea note) — "A single horizontal beam of light crossing a dark landscape that transitions seamlessly from a firelit cave on the left, through standing stones and a ziggurat at center, to a modern city skyline on the far right, dawn gradient sky, photorealistic composite panorama, cinematic, no text."

Effort

M overall, with a genuinely small core: