Changelog

Major project milestones — domain migrations, framework decisions, editorial passes.

≈ 20 min read 3816 words Updated 2026-08-29

On this page

This page records project-level changes — the structural shifts in infrastructure, framing, or editorial program that matter beyond a single commit. For day-to-day commit history, use Git.

2026-08 — The claim catalog: distilled, bound, accepted#

The corpus’s entire claim layer was extracted into the research core: ten distillation batches (2026-08-15/16) took the catalog from its four founding pilots to 69 records, each with a controlling specification and a scoped evidence map, each batch pausing at a founder gate before its derivative pages were bound. The sweep ran until it was dry — episodes (the Flood, Babel, Eden, Sodom, the merkavah), doctrine, method (the neo-euhemerist reading, the literalist convergence, the translation program’s accuracy-first commitment), postures (UAP reception, monument attribution, precursor discrimination), provenance (the canon’s Dhorme quotation layer), and the project’s own instruments (the comparative datasets as tabulated registrations).

ADR 0005 accepted claims 0005–0053 and ADR 0006 claims 0054–0069; the pilots 0001–0004 remain draft pending their own review. Acceptance is lifecycle, not truth: no version, public label, or evidence status changed with promotion, and the scoped/contested grades stand. The rulings also ratified two catalog-wide disciplines — the consonance family (no counting rows as evidence, no feasibility-as-occurrence, no monument or geology enlisted as chronology support) and the no-enlistment rule (scientists, translators, journalists, and declined precursor authors are registered at their own grades and enlisted for nothing).

On the publication side, roughly 190 pages across wiki, articles, timeline, newsroom, datasets, and library now declare their bindings; pages with no claim to carry deliberately stay unbound. The founder pause now prices only genuinely new claims.

2026-08 — The artifact derivation contract#

Production was inverted: new artifacts now derive their load-bearing claims from records in the research core before the prose is written, rather than having the insight invented at writing time. The project had been running on two constitutions that did not talk to each other — publication rules governing how things are said, the core governing what may be claimed — with exactly one page in the entire corpus bound to a claim record.

RFC 0003 (accepted as ADR 0002) added a Ground stage to every production pipeline: resolve the topic against the claim catalog, read the matching records in full, and draft missing ones as draft claims — pausing for founder review before any prose is written on top of them. The finished artifact declares what it renders. Accepting it also closed RFC 0002 by adoption, lifting that contract’s single-page pilot restriction. RFC 0004 (ADR 0003) extended the same discipline to images and scenery through depiction notes, which separate what sources visually report from project interpolation, free art direction, and hard negative constraints — because unlike prose, an image cannot hedge.

The contract was validated backwards before being adopted forwards: the Explainer The World Behind the Odyssey had its central reading extracted into woh-claim-0004, which surfaced an unrecorded dependency, a public label with no controlling record, and falsifiability terms that had lived only in one article’s closing section. Adoption ratchets — new artifacts and fundamental rewrites bind; the existing corpus is grandfathered. Founder gates are unchanged: agents draft records, only the founder promotes them, so review moves from “is this article’s argument sound” to “is this claim record sound,” once, for every artifact and language that later cites it. Editorial guide: Grounded Production.

2026-08 — Comparative-mythology datasets v1.1#

The two curated comparative datasets were expanded and versioned. The Flood-Myth Concordance grew from eight to eleven traditions — adding the Aztec Leyenda de los Soles (Tata and Nena), the Andean Viracocha chronicles, and the Norse Prose Edda (Bergelmir). The Divine-Council Index grew from eleven to seventeen attestations across twelve traditions — adding the Sumerian (Enlil and Ninlil), Greek (Iliad), Roman (Metamorphoses), Egyptian (Contendings of Horus and Seth), Norse (Völuspá), and Hindu (Mahābhārata) councils. Each new row was researched to full column depth against a named primary source. Both bumped to version 1.1 and re-published across all four distribution surfaces: the API, the /datasets/ landing pages, and the Hugging Face and Kaggle mirrors.

2026-08 — Model-C Eden chronology#

The corpus’s antediluvian chronology was reconciled to a single canonical ruler. A flagged-issues review surfaced that entries disagreed on the precessional age boundaries and on when the Eden episode occurred. The resolution (“Model C”): one age lattice (Age of Leo = 11,010–8,850 BCE, anchored at the 1945 Aquarius threshold), a two-stage reading of the human creation — the first Adamite species at the opening of Leo (~11,375 BCE), Genesis’s Adam and Eve as founding individuals at the Leo–Cancer boundary (~8,850 BCE) — and the antediluvian patriarchs living out the Age of Cancer. The decision propagated across ~28 wiki, timeline, and library entries in English and the nine translated locales; the Younger Dryas was corrected from “late Leo / early Cancer” to early-mid Leo, and the recurring duration labels (“~25,000 years”, “one Great Year”) were disentangled from the synthesis date. Every dated claim across the corpus is now internally consistent.

2026-08 — Core claim binding rolled out (RFC 0002)#

The publication-integration contract moved from the single wiki/elohim pilot to a full rollout. Every page that renders one of the three research-core claims now declares core_claim_ids / core_versions in its frontmatter, reciprocated by the claim record’s public_derivatives list: the Elohim-civilization hypothesis (7 pages), the Anunnaki–Elohim identity (2), and the precessional world-age chronology (20). The core validator confirms consistency (publication_integration=checked, zero errors). See Research core and Frontmatter → Core claim binding.

2026-08 — Retrieval benchmark#

The project adopted a quarterly measurement of information penetration — the share of relevant questions for which Wheel of Heaven appears in an AI answer’s retrieval or citation chain, the KPI of the shift from pageviews to pathways. A 50-question set across seven categories (canon-internal, comparative mythology, precession, primary texts, authors, structured data, project-direct) was authored, and the 2026-Q3 baseline recorded 4/50 (8%) via web search — all in the brand-direct category, with a single .world URL surfacing corpus-wide. The baseline confirmed that brand equity still rests on the GitHub org and the legacy .io domain rather than .world, and that several intellectual lanes (machine-readable comparative datasets, divine-council indexes) are wide open. See Retrieval benchmark.

2026-08 — External identifiers extended to the library#

The same_as external-ID program extended from the wiki to the digitized library. The Bifrost Book schema now emits sameAs, and 114 of 124 texts carry Wikidata + Wikipedia + Britannica/VIAF identifiers — the Bible books, the four Gospels, the Quran, Gilgamesh, Enûma Eliš, Theogony, 1 Enoch, and the distinct Book-of-Mormon books among them. Raël’s own books and a few texts without a distinct Wikidata entity stay bare, since sameAs asserts identity, not resemblance. The wiki pass also closed seven first-pass omissions, bringing wiki coverage to 101/146. External-ID alignment now spans wiki, timeline, and library.

2026-08 — Content-pipeline recovery and metadata plumbing#

Several infrastructure defects surfaced during the benchmark work and were fixed. The static JSON API had silently failed to deploy since 2026-07-17 — content had begun using a Bifrost-only shortcode the API repo lacked; six shortcode stubs restored green builds. The API’s page generator was leaking draft entries into its indexes (advertising URLs that then 404), closed by a draft filter. On the main site, Bifrost had never emitted <meta name="description"> at all, and the Open Graph generator keyed images by filename stem rather than page slug, so slug-overridden pages served 404 OG cards — both fixed, which also explained several “invisible” pages the benchmark flagged. The legacy wheelofheaven.io GitHub Pages source was neutralized to a noindex redirect to .world.

2026-08 — Editorial pass: wiki decontamination#

A May 2026 generation incident had salted otherwise-real English wiki entries with telegraphic filler prose. The incident left a reliable lexical marker — “substantive” / “substantively” used as padding — and the campaign used it as the audit signal: read every flagged passage in context, rewrite sentences that carry real information awkwardly, delete pure padding, and never touch citations, shortcode calls, reference blocks, or [extra.references] tables.

The campaign ran in tiers across the ~140-entry English wiki corpus and closed on 2026-08-06: Phase 5 repaired the final ten heavy entries, and a same-day corpus-wide tail sweep cleared 86 residual occurrences across 38 lighter files. The corpus now sits at a documented floor of eight legitimate occurrences across seven entries (method-vs-substance contrasts, grammatical uses, one frontmatter field label); any occurrence beyond the documented list is suspect by definition.

Entries fundamentally rewritten under the campaign carry editorial_pass = "2026-08". The repairs also drove a frontmatter hygiene pattern — oversized description fields split into a question-answering 150–160-character description plus a full-text summary, a one-sentence tldr, and keywords — and a report-first policy for factual errors found along the way (motif-index code glosses, list-count slips, citation form), fixed in follow-up commits after editorial sign-off.

Method and floor list: Wiki Decontamination. Campaign record: .claude/plans/wiki-decontamination.md in the www.wheelofheaven.world repo.

2026-08 — Authority identifiers and structured-data hardening#

Wiki entries now declare same_as external authority identifiers — Wikidata and Wikipedia across 94 entries, with Britannica, VIAF, Pleiades, and SEP enrichment on 63 of them, plus the Age of Aquarius timeline entry. Bifrost emits the values as sameAs in the DefinedTerm and Event JSON-LD, anchoring entries to the global knowledge graph. The same pass caught and fixed a site-wide gap: the theme had never emitted <meta name="description">. Field reference: Frontmatter.

2026-08 — MCP server#

The corpus is now queryable by AI assistants over the Model Context Protocol: an MCP server with an npx install path and a public registry listing, backed by a domain-verification key served at /.well-known/mcp-registry-auth on the main site. llms.txt gained the API-access section, and dataset landing pages were aligned with retrieval-benchmark query language. Reference: MCP Server.

2026-08 — Library readers: Theogony and the Sumerian King List#

Hesiod’s Theogony (complete composition, 1,042 lines, stable/1.3.0) and the Sumerian King List were published to the /library/ reader — the translation program’s latest completions to reach production. Program state: Translation Roadmap.

2026-08 — Research corpus repository#

wheelofheaven/core was established as the public research corpus: a durable claim model across five orthogonal axes, pilot claims with passage-level evidence maps, and an RFC/ADR process — RFC 0002 pilots page↔claim binding against the wiki/elohim entry. Architecture notes: Research Core.

2026-08 — Rendering fixes: uniform glass and the mobile navbar#

Two WebKit-facing Bifrost fixes: backdrop-filter glass stopped rendering under transformed ancestors (transforms removed from the navbar, search-modal, glossary, and dropdown chains, with a token-level @supports fallback), and the mobile navbar’s scroll-hide — broken by an inline style.top handoff from the notification stack — was restored via a --navbar-dock-top CSS variable with class-rule-only positioning as the standing invariant. Details: Bifrost Theme.

2026-08 — Macrobiology joins the wiki#

The Macrobiology Explainer was converted into a /wiki/ DefinedTerm — sibling to astrobiology and fractal cosmology — with the article removed and redirected, and cross-links landed across the corpus.

2026-06 — Provenance panel and source-ID citation rollout#

Two linked releases landed on the reading site.

First, library book pages gained a visible version provenance panel so readers can inspect which source text/version a page is tied to before they rely on it. The shared theme and docs theme were updated together so the component reads consistently across www and docs.

Second, wiki references moved onto stable source IDs as the canonical citation key. extra.references now accepts id = "<source-id>", the cite shortcode lands on the matching #ref-<source-id> anchor, and the site build validates those IDs against data/sources.json before deploy. A small pilot backfill seeded the new contract in reference-corpus-of-the-raelian-canon.md, and the docs here were updated to make the ID-based form the default guidance.

Phase 6 then added generated local source pages at /sources/{id}/ with reverse Cited by blocks, so each source now works as a navigation hub instead of only an index entry.

The follow-up i18n pass kept the source record monolingual in data/sources.json but added localized page shells at /{lang}/sources/{id}/, so translated pages now route to language-aware source URLs while sharing the same canonical data.

The timeline sequence also grew a framing preamble, a closing wheel section, data-backed full-viewport illustration sequences for the landing page using the same figure IDs as the timeline chapters, and a dedicated /timeline/chronology/ overview page linked from the age-page Earth-state card. A follow-up replaced the timed flip-style slideshow with a state-driven opacity dissolve and cache-busted the theme stylesheet links.

2026-05 — Search Console / hreflang fix#

First Google Search Console audit of www.wheelofheaven.world, one week into full crawl coverage. Two structural issues surfaced: hreflang was broken across all ~2,000 translation pages (Zola’s native page.translations doesn’t see directory-prefixed locales, only file-suffix translations), and ~80 URLs were 404’ing from a mix of trailing-slash quirks, stale paths, and the broken hreflang’s side-effect of generating double-slash internal links.

Fix landed as a new manifest-driven hreflang pipeline (scripts/build_translations_manifest.py writes data/translations.json, the partial reads it via load_data) plus five literal redirect rules in static/_redirects for the stale /wiki/age-of-* and /wiki/timeline/* paths Google had cached. Trailing-slash normalization is left to Cloudflare Pages’s built-in behavior — explicit per-locale rules ran into a de-facto rule-count cap (~270) that silently drops anything later in the file.

The pass also committed 700 translation_status = "en_only" library stubs in data-content that had been sitting untracked in the working tree (the missing-content cause of ~40 of the Search Console 404s). The build-translations-manifest script now uses git ls-files so untracked WIP can’t inflate the manifest again.

Full writeup: Indexing & Multilingual SEO.

2026-05 — Landing-page performance pass#

First targeted Lighthouse pass on www.wheelofheaven.world/, then a follow-up to recover a regression and harden CLS.

Initial pass: explicit <link rel="preload"> for the §1 video poster, async-loaded main.css with the pre-existing critical.css filling above-the-fold, and a resized §1 poster (1280×720 132 KB → 800×450 53 KB). The mobile language pane was also given the inert attribute alongside aria-hidden to clear an accessibility violation.

Follow-up after a regression to Performance 52: critical.css is now inlined as <style> (one fewer RTT on cold visits), the iAWriterQuattroS mono font was dropped from the landing critical path (per-selector swap to a system mono stack + url() removed from @font-face, leaving only local()), §2–§6 posters were resized to match §1’s recipe, and the FOUC-prevention gate (html:not(.css-loaded)) was extended to cover footer, translation notice, navbar panes, §7 paths, claim badges, the reader-fab TOC sheet, and JS-mounted PWA / reading-list / offline indicators. A separate fix landed the .read__paths grid layout inside critical.css to eliminate a §7→§8 layout shift when main.css arrived, dropping CLS from 0.26 to 0.

Current scores: Performance 90, Accessibility / Best Practices / SEO all 100; CLS 0. Full writeup: Performance.

2026-05 — Documentation site launched#

docs.wheelofheaven.world (this site) launched as a dedicated author/contributor/developer documentation site, separate from the main knowledge base. Replaces the old browse-on-GitHub wheelofheaven/docs repository. See the plan in .claude/plans/docs-site.md for the design and rollout. Stack: Zola + a minimal docs-theme that imports Bifrost’s design tokens.

2026-05 — Editorial pass: modern working-hypothesis framing#

First major editorial pass (editorial_pass = "2026-05") under the modern, working-hypothesis, human-civilization framing. Dropped the “democratization / knowledge base / lore” register; tightened claim discipline; uses “Elohim were a small advanced human civilization” rather than “extraterrestrial.”

2026-04 — Source program rolled out#

claim_type and the source-registry tier system rolled out. Every new entry declares its epistemic status (direct | inferred | speculative), and resources get tiered (Tier 0: Raëlian canon, Tiers 1–4 for everything else read in dialogue).

Domain migration: wheelofheaven.io → wheelofheaven.world#

Scope: full migration of the public site, JSON API, and asset CDN from the .io TLD to .world. The .io domain is kept indefinitely with permanent 301 redirects to .world.

SubdomainOldNew
Main sitewww.wheelofheaven.iowww.wheelofheaven.world
APIapi.wheelofheaven.ioapi.wheelofheaven.world
Asset CDNassets.wheelofheaven.ioassets.wheelofheaven.world

Hosting: Cloudflare Pages (×3 projects), with Cloudflare DNS in front and Cloudflare Single Redirects on the .io zone for the path-preserving 301 hop.

Repositories changed#

Domain references were updated across the following repos. Commit and push these in dependency order (the website repos depend on the theme and content submodules).

  1. bifrost — theme: hardcoded CDN URL fallbacks in image macros, preconnect/dns-prefetch in base.html, alternateName and email in JSON-LD schema partials, beta.wheelofheaven.io check generalized to beta.wheelofheaven. in link macros, hardcoded asset URLs in timeline.js, regenerated static/js/dist/*.bundle.js, sitemap homepage detection made TLD-agnostic, ask-ai prompt domain mention, _pwa.scss external-link selector generalized to [href*="wheelofheaven."].
  2. data-content — content URL refs in faq.md, cookie-policy.md, wiki/wheel-of-heaven.md, wiki/list-of-exegetic-readings.md, wiki/list-of-close-encounters.md, author/zara-zinsfuss.md across all 9 languages, plus README.md. The migration script /tmp/woh-migrate.py was used to apply substitutions safely (preserving github.com/wheelofheaven/<repo>.io references).
  3. data-libraryREADME.md URL ref. TODO file’s directory-name references intentionally left as .io (local dir names are not being renamed).
  4. data-bibliographyREADME.md URL ref.
  5. www.wheelofheaven.io (the local repo name stays .io) — config.toml (base_url, cdn_url, organization_id), static/CNAME, static/_headers (CSP allowlist), static/robots.txt (sitemap URL), static/site.webmanifest (related_applications, scope_extensions), static/sw.js (CDN_ORIGIN + CACHE_VERSION bump v2 → v3), static/llms.txt, static/llms-full.txt, data/ages.json, content/* and submodule pointer bumps for theme and content.
  6. api.wheelofheaven.ioconfig.toml, CNAME, all six templates/*.json (v1-catalog.json, v1-context.json, v1-context-timeline.json, v1-context-terminology.json, index.json), README.md, submodule pointer bumps.
  7. assets.wheelofheaven.ioREADME.md only.
  8. epub.wheelofheavenbook/metadata.yaml (EPUB identifier URL).

Files deliberately not changed:

  • GitHub repo URLs (github.com/wheelofheaven/wheelofheaven.io, …/www.wheelofheaven.io, etc.) — repo names are not being renamed.
  • Local directory names (www.wheelofheaven.io/, api.wheelofheaven.io/, assets.wheelofheaven.io/) — filesystem layout, not part of the domain migration.
  • www.wheelofheaven.io-legacy/, .archive/, node_modules/, public/.

Pre-launch checklist#

Cloudflare zone setup#

  • .world zone is on Cloudflare with Active status (DNS resolvers are CF nameservers).
  • On .world zone DNS, add CNAME records, all proxied (orange cloud):
    • www<www-project>.pages.dev
    • api<api-project>.pages.dev
    • assets<assets-project>.pages.dev
  • Decide what to do with the apex wheelofheaven.world. Default: a Single Redirect rule on the .world zone that 301s the apex to https://www.wheelofheaven.world${URI}.

Cloudflare Pages custom domains#

For each of the three Pages projects (www, api, assets):

  • In Settings → Custom domains, add the corresponding .world hostname.
  • Wait for “Active” status with SSL certificate issued.
  • Verify: curl -I https://www.wheelofheaven.world/ returns 200.

Repository changes deployed#

  • Push all repo changes through normal CI.
  • CF Pages production deploys complete on all three projects.
  • curl -I https://www.wheelofheaven.world/ and https://www.wheelofheaven.world/sitemap.xml return 200 with .world URLs in the response body.
  • Same for https://api.wheelofheaven.world/v1/context and https://assets.wheelofheaven.world/....

Search Console pre-verification#

  • Add www.wheelofheaven.world as a property in Google Search Console.
  • Verify via DNS TXT (preferred — covers all subdomains).
  • Confirm www.wheelofheaven.io property is still verified.
  • Submit https://www.wheelofheaven.world/sitemap.xml in GSC.

Launch — .io.world redirect activation#

Cloudflare Single Redirects on the .io zone#

In the Cloudflare dashboard for the .io zone: Rules → Redirect Rules. Create one Single Redirect per subdomain.

Rule 1 — main site (www and apex):

  • When: (http.host eq "www.wheelofheaven.io") or (http.host eq "wheelofheaven.io")
  • Target: https://www.wheelofheaven.world${URI}
  • Status: 301
  • Preserve query string: yes
  • Dynamic equivalent expression: concat("https://www.wheelofheaven.world", http.request.uri.path, if(len(http.request.uri.query) > 0, concat("?", http.request.uri.query), ""))

Rule 2 — api:

  • When: http.host eq "api.wheelofheaven.io"
  • Target: https://api.wheelofheaven.world${URI}
  • Status: 301

Rule 3 — assets:

  • When: http.host eq "assets.wheelofheaven.io"
  • Target: https://assets.wheelofheaven.world${URI}
  • Status: 301

Verify the redirects#

# main site — root
curl -I https://www.wheelofheaven.io/
# expect: HTTP/2 301, Location: https://www.wheelofheaven.world/

# main site — deep path with query
curl -I "https://www.wheelofheaven.io/wiki/elohim/?utm_source=test"
# expect: HTTP/2 301, Location: https://www.wheelofheaven.world/wiki/elohim/?utm_source=test

# confirm exactly one 301 hop, then 200
curl -IL https://www.wheelofheaven.io/timeline/age-of-aquarius/

# apex and bare-host variants
curl -I https://wheelofheaven.io/
curl -I http://wheelofheaven.io/
curl -I http://www.wheelofheaven.io/

# API
curl -I https://api.wheelofheaven.io/v1/context

# assets
curl -I https://assets.wheelofheaven.io/images/wiki/elohim-symbol.webp

Google Search Console Change of Address#

  • In the www.wheelofheaven.io GSC property: Settings → Change of Address → Update.
  • Target: www.wheelofheaven.world.
  • GSC runs automated checks. Resolve any failures and re-submit.
  • Bing Webmaster Tools: same procedure if used.

Post-launch monitoring#

For 2–4 weeks:

  • GSC Coverage / Indexing.world URLs should be getting indexed; .io URLs should move to “Page with redirect.”
  • GSC Crawl Stats — Googlebot reduces hits to .io over time as .world becomes canonical.
  • 404 reports — check on both zones for unexpected misses.
  • Analytics — confirm traffic continues on .world host.
  • Top traffic pages — spot-check that .io URLs for top-N pages all return 301 → matching .world paths.

Permanent obligations:

  • Renew .io annually until at least 2027 (12-month minimum after migration). Prefer indefinite renewal.
  • Keep the Single Redirect rules active on .io indefinitely. Removing them breaks every external link to old URLs.
  • Annual audit — re-run scripts/check-domain-migration.sh against a fresh build to catch new hardcoded .io refs that may have slipped in.

Rollback plan#

If something breaks catastrophically after cutover:

  1. Before redirect activation: git revert the merged commits in www.wheelofheaven.io, api.wheelofheaven.io, bifrost, data-content. Push. CF Pages auto-deploys old commits. Both domains resume serving .io-canonical content.
  2. After redirect activation: first disable the Single Redirect rules on the .io zone. .io resumes serving content directly. Then revert repo commits as above.

The .io Pages custom domains remain attached the entire migration, so disabling redirects is sufficient to restore .io serving at any point.

Local validation#

cd www.wheelofheaven.io
zola build
scripts/check-domain-migration.sh public

# expected output:
#   OK: sitemap.xml uses .world only.
#   OK: robots.txt sitemap points at .world.
#   OK: homepage canonical is .world.
#   All checks passed. Only GitHub repo URLs reference .io (expected).

Open items at migration time#

  • Email forwarding: the JSON-LD organization schema and references now show [email protected]. Set up CF Email Routing on the .world zone to forward this to wherever [email protected] was going.
  • Submodule pointer bumps: this migration touches four upstream submodule repos (bifrost, data-content, data-library, data-bibliography). Each must be pushed before the consumer repos can bump pointers and pick up the changes.
  • Bifrost in-flight work: at the time of migration, the bifrost repo had unrelated in-progress changes (added pages, deleted templates). The migration’s local validation worked around this by surgically restoring templates/macros/zodiac.html and templates/read.html from the submodule’s pinned commit.
  • beta.wheelofheaven.io check in link.html was generalized to beta.wheelofheaven. (matches any TLD) since there is no active beta domain to preserve specifically.
  • JS bundle regeneration: bifrost/static/js/dist/*.bundle.js was regenerated locally via npm run bundle to capture the updated asset URLs in timeline.js. The deploy workflow also runs this in CI, so the production bundle will be regenerated on the next deploy.

Edit this page on GitHub