Every zodiac home gets a /{sign}/lithos mode via the paint package emitter. Pattern proven on Virgo + Taurus.
Virgodone
Taurusdone
1Capricorn alpine peak, mountain goat — loader routed, needs SDF + templatenext
2Scorpio desert scorpion — SDF exists in prison/scorpio_sdf.mjsready
3Gemini twin figures — SDF-native only, minimal (gemini_sdf.mjs)ready
4Aries volcanic forge at dawn — needs SDF scene writtenwrite sdf
5Leo golden savanna — needs SDF scene writtenwrite sdf
6Cancer tide pools, rocky coast — needs SDF scene writtenwrite sdf
7Pisces underwater reef — most complex water homewrite sdf
8Sagittarius twilight steppe campfire — needs SDF scenewrite sdf
9Libra formal garden, symmetry — needs SDF scenewrite sdf
10Aquarius mountain observatory — needs SDF scenewrite sdf
Extract shaders from cosmos.html (10k lines) into emittable Lithos modules. Not replacing Three.js yet — adding a parallel /cosmos/lithos path.
1Audit cosmos.html shaders list all ShaderMaterial instances, GLSL, uniformstodo
2Extract galaxy shader galaxyPointVS/FS → standalone, define sceneSDFtodo
3Extract sun shader photosphere + corona + granulationtodo
4Extract earth shader continents, clouds, atmosphere, city lightstodo
5Extract planet shaders gas giant bands, rings, per-planet terraintodo
6Create cosmos emitter scene array of celestial objects, distance-based cullingtodo
7Add /cosmos/lithos route new mode alongside existing cosmostodo
Port compute-heavy JS to Lithos .ls, compile to WASM. Blocked on WASM SIMD128 backend — scalar-only POC exists in arch/wasm/.
0WASM SIMD128 backend f32x4 ops in lithos-wasm.py font table — BLOCKERblocked
1Octree spatial index cosmos/octree.mjs → octree.ls, SIMD AABB tests, 3-5x expectedwaiting
2Corpus rotation differential galaxy rotation → rotation.ls, 2-3x expectedwaiting
3Camera navigation navigation/*.mjs → nav.ls (input-bound, marginal gain)waiting
4Scene transitions shared/scene_transition.mjs → transition.lswaiting
5Particle systems shared/particles.mjs → particles.ls, batch update, 2-4xwaiting
Tools, testing, developer experience for Lithos integration.
emit-scene.mjs CLIdone
/lithos coverage dashboarddone
/lithos-universe slash commanddone
Memory seed (5 files + training guide)done
All 12 loaders preppeddone
6Parity test harness pixel-diff SDF vs Lithos at 5 camera positions per scenehigh
7Per-scene heightmap endpoint /lithos/heightmap?scene=taurus using jsTaurusTerrainHmedium
8Shader compilation validator headless WebGL compile check on emitted GLSLmedium
9Auto-update /lithos from SCENES dashboard reads registry dynamicallylow
Critical Path
now
Lane 1: Capricorn, Scorpio, Gemini — homes with existing SDFs or simple geometry
now
Lane 4: Parity test harness — validate before scaling to more homes
next
Lane 1: Write SDF scenes for 7 remaining homes (Aries through Aquarius)
next
Lane 2: Cosmos shader audit + extraction (5 shader groups)
blocked
WASM SIMD128 backend in Lithos compiler — unblocks Lane 3
then
Lane 3: CPU modules to WASM (octree, rotation, particles)
endgame
Three.js removal — flat struct arrays, WASM scene graph, DOM bridge elimination
Definition of Done — Per Home
/{sign}/lithos renders visually equivalent to
/{sign}/sdf
Emitter produces specialized GLSL with frustum culling + constant baking
Parity test passes (pixel diff < 2% at 5 camera positions)
Scene listed in SCENES registry with correct object count
/lithos dashboard shows green status
Definition of Done — Universe Complete
All 12 homes have Lithos mode
Cosmos has Lithos shader extraction
CPU modules run as WASM with JS fallback
Frame time < 4ms p50 on M4