fuzzyworld

tower / files / design.md

design.md

Blame: the commit that last changed each line · file · history

866c7f96 2026-09-07 Pavel Safronov1# Tower — Design
2
3**Tower is the setting of a novel.** This app exists to serve that: first as an
4instrument for the author to see the place and keep it consistent, and second as a
5companion piece readers can explore. Where a choice trades spectacle against
6coherence, coherence wins — canon here is series-bible material, and the book is
7downstream of it.
8
9Tower is a smart cylinder in orbit around Earth, spun for 1 g, with an inner
10surface the size of Wisconsin, lit by sunlight piped down its axis and scattered by
11a swarm of mirrors it flies itself. It is also a person.
12
13The app has three linked views:
14
151. **Exterior** — a 3D render of Tower from outside, with its collector, beam and
16 orbit. You pick a point on the hull.
172. **Map** — a 2D unrolled map of the inner surface. You pick a point here too; the
18 two pickers stay in sync.
193. **Interior** — a first-person "streetview" from the picked point, with live
20 controls for time of day and spin phase.
21
22---
23
24## 1. Canon
25
26### 1.1 Dimensions
27
28All numbers derive from two free parameters — radius and length — chosen so the
29inner surface matches Wisconsin.
30
31| Quantity | Value | Notes |
32|---|---|---|
33| Radius | **50 km** | floor to axis |
34| Length | **540 km** | sun cap to far cap |
de65ab10 2026-09-08 Pavel Safronov35| Wall depth | **1 km** | floor to outer skin, D-044 |
866c7f96 2026-09-07 Pavel Safronov36| Circumference | **314.16 km** | the world's "width" |
37| Inner surface area | **169,646 km²** | Wisconsin total area, 169,635 km² |
38| Habitable land area | **169,646 km²** | all of it — the hull is sealed (§1.4) |
39
40Every square metre of the inner surface is land. There are no windows in the wall,
41so nothing is subtracted. *An earlier version sized star slats to leave exactly
42Wisconsin's land area of 140,268 km²; D-017 removes them and that second
43coincidence with it.*
44
45### 1.2 Spin and gravity
46
47| Quantity | Value |
48|---|---|
49| Angular velocity ω | **0.014005 rad/s** |
50| Spin period | **448.6 s** = 7 min 29 s |
51| Rotation rate | **0.134 rpm** |
52| Rim speed | **700.2 m/s** |
53| Floor gravity | **1.000 g** by construction |
54
55Consequences that the app should show or at least respect:
56
57- **Gravity falls off linearly with height.** g(h) = ω²(R−h). A 1 km peak sits at
58 0.98 g; the axis is weightless. Mirrors at the axis float.
59- **Coriolis is mild but real.** 2ω = 0.0280 s⁻¹. Walking is unaffected (0.4 % g).
60 A ball thrown at 30 m/s deflects at 8.6 % g — enough that Tower's sports differ
61 from Earth's, and enough that thrown objects visibly curve.
769726ea 2026-09-08 Pavel Safronov62- **Nothing in the sky moves, except through the far cap.** The wall is sealed
63 (§1.4), so along 539 of the 540 km there is nothing to wheel past — the far side
64 of the world overhead co-rotates with you and hangs perfectly still. The one
65 exception is the far cap window, where the sky is *outside* and does not
66 co-rotate: it turns once every 7 min 29 s about a single motionless star on the
67 axis. The spin is invisible upward and obvious deepward, and only at night.
866c7f96 2026-09-07 Pavel Safronov68- **But everything that falls leans.** Rain hangs at a permanent 1.47° slant, smoke
69 drifts the other way, and a 1 km waterfall lands 133 m off its own cliff (§1.9.2).
70 This inversion is the alien fact the interior view must sell: **the sky is still
71 and the water is not.**
72
73### 1.3 The sun system
74
75Sunlight enters through the sun-facing end cap and runs the full 540 km axis.
76
77- **Collector.** A mirror array flies ahead of Tower, gathering sunlight and
78 concentrating it into the beam. **46,900 km² of aperture — a disc ~244 km
79 across**, two and a half times Tower's own diameter. It is the dominant visual
80 element of the exterior view.
81- **Beam.** **10 km in circumference** — 1,592 m radius, 7.96 km² cross-section —
82 carrying **54.3 TW** at a concentration of **5,000×**, or 6.8 MW/m². It runs the
83 axis from sun cap to far cap.
84- **Diffusers.** Not lamps — a **swarm**. See §1.3.1.
85- **The beam is visible, and it glows by itself.** There is real air at the axis
86 (§1.5), and a 6.8 MW/m² beam Rayleigh-scattering through 3.18 km of it radiates
87 **779 W/m²/sr** — **26× brighter than clear blue sky, 25,700× dimmer than the
88 sun's disc.** It is a brilliantly sunlit cloud extruded into a rod, safe to look
89 at directly. From the floor 50 km below it is **3.65° wide, about seven
90 sun-widths**, running the whole length of the sky. This glow is a property of the
91 beam and the air, not of the diffusers — it would be there if the beam were empty.
92
9c891d2e 2026-09-08 Pavel Safronov93#### 1.3.0 Tower never sees the sun
94
95The collector is **244 km across and flies 320 km ahead of the sun cap**, which puts
96it **41.8° wide** in Tower's sky against the sun's 0.53° — **79 times the sun's
97diameter**. It sits squarely between Tower and the sun, so it occults it completely,
98and the umbra it casts is 120 km across where Tower's 51 km sits inside it. The
99eclipse is total, permanent, and self-inflicted.
100
101So **nobody aboard can see the sun**, for the same reason nobody can see Earth
102(§1.4). What they can see, through the sun cap window, is the *back* of the
103collector: 46,938 km² of structure radiating its own waste heat at about 245 K —
104infrared, and therefore black. It is the only object in Tower's sky that is neither
105Tower nor a star, and it never moves, because the collector flies in formation
106rather than spinning. D-050.
107
49b0d64d 2026-09-08 Pavel Safronov108**Its edge is not black.** The face is a mirror pointed away, but the collector is
109*backlit*, and the structure holding 46,938 km² flat stands proud of the mirror
110plane at the rim, where the sun strikes it side-on. With the scatter any real mirror
111throws at grazing incidence, the edge reads as a thin sun-coloured ring — so the
112collector is a hole in the stars with a lit rim rather than an absence, which is how
113anything backlit looks. **It is not sunlight leaking past the edge**: Tower is wholly
114inside the umbra, so the sun's disc is hidden from every point in the world. The ring
115is lit structure. D-054.
116
866c7f96 2026-09-07 Pavel Safronov117#### 1.3.1 The diffuser swarm
118
119The diffusers must be individually invisible, or the sky becomes a row of separate
120suns. Two thresholds govern this, and only the second one binds:
121
122- **Resolvability.** At 50 km, one arcminute is 14.5 m. Anything larger is a
123 resolved disc with a visible edge.
124- **Visibility.** Being unresolved is not enough — stars are unresolved and we see
125 them. A mirror *preserves radiance*, so a mirrorlet aimed at an observer shows
126 the sun's own surface brightness over a tiny angle. A 1 m mirrorlet reads at
127 magnitude −13.6, brighter than the full moon. Blending into daylight requires
128 **~1.2 cm**, at magnitude −4.0, just under Venus.
129
130Diverting 54.3 TW needs 11.3 km² of mirror, so:
131
132| | |
133|---|---|
134| Mirrorlet size | **1.2 cm**, ~1.4 cm², 2 mg |
135| Count | **78 billion** |
136| Total mass | **158 tonnes** — the entire sun system |
137| Mean spacing in beam | **3.8 m** — sparse enough to fly through |
138| Optical depth over 540 km | 1.41, so **24 % of light reaches the far cap** |
139
140**The swarm cannot be passive — it must fly, always.** The axis is not weightless.
141At the beam's edge gravity is **0.312 m/s²**, enough that a foil sinks outward at
1420.26 m/s and **leaves the beam in 1.7 hours**. A drifting swarm dissolves the same
143afternoon. Every foil is therefore under continuous individual control. This is not
144a flourish on a working system; it is the only configuration that works.
145
146**They have absurd power to do it with.** Each foil intercepts 979 W of beam.
147Harvesting 0.1 % gives it ~1 W on a 2 mg body — **489,600 W/kg**, some fifty times
148a jet engine's specific power.
149
150| | |
151|---|---|
152| Down-beam, riding radiation pressure | 0.85 m/s, 7.4 days |
153| Back up-beam under its own power at 1.5 m/s | 15 µW, 4.2 days |
154| Harvestable from ambient world-light | **14,400 µW** — a 1000× margin |
155
156**So there is no recirculation machinery, at either cap.** The foils fly home on
157scavenged daylight. Nothing needs to be built for them, and the 1000× power margin
158means Tower can afford to move them *wastefully* — in spirals, shoals and patterns
159that cost energy for no reason but preference.
160
161**Lighting is a render target, not a schedule.** 78 billion independently aimed
162mirrors put any intensity on any patch of ground at any time. Dawn, dusk, moving
163cloud shadows and seasons are compositing problems, not optical ones.
164
59c12827 2026-09-28 Pavel Safronov165**Together they make Tower's sun** (D-074). Individually invisible, the swarm gathers
166by day into a single shoal on the axis and throws the beam's light out sideways from
167there — one blazing point 3.2 km across, which is Tower's sun. The shoal moves: it
168forms at the sun cap at sunrise and flies the length of the world by sunset, where it
169disperses (§1.3.4). Each mirrorlet in it is aimed, so Tower sends as much of the sun's
170light toward ground far away as toward ground beneath it, and the sun looks equally
f16f084e 2026-09-28 Pavel Safronov171bright from everywhere, as Earth's does; the ground is lit by how high it stands. The
172shoal takes only part of the beam and lets the rest run on (D-079), so **the rod glows
173from cap to cap at every hour**, a little dimmer past the sun than before it, and ends
174on the far cap's mirror. This is the one exception to the rule
59c12827 2026-09-28 Pavel Safronov175above that the diffusers must never read as a sun: Tower wants exactly one.
176
866c7f96 2026-09-07 Pavel Safronov177**Aiming resolution is human-sized.** A 1.2 cm mirror is diffraction-limited to
1784.6×10⁻⁵ rad, so its reflection lands as a **2.3 m spot** on the floor 50 km below.
179Tower can put a glint on one person that someone five metres away cannot see. The
180privacy is set by the wavelength of light, not by any protocol.
181
182**Mirrorfall.** A failed foil sinks out of the beam and falls. Terminal velocity at
183the floor is 0.48 m/s; the descent takes about two days and it lands like a
184snowflake. There is a permanent slow glitter coming down out of Tower's sky.
185
186#### Illumination is a dial, not a constant
187
18854.3 TW is Tower's *capability*, not its setting. Spread over the inner surface it
189is 320 W/m² mean, which — with roughly half the surface lit at a time and a
190sinusoidal day profile — puts **local noon at ~1,000 W/m², Earth clear-sky
191daylight**. But the diffusers are software-controlled, so brightness is genuinely
192adjustable in-world across the full range:
193
194| Setting | Mean W/m² | Feels like |
195|---|---|---|
196| Twilight | 30 | permanent overcast dusk |
197| Temperate | 200 | Earth's global mean |
198| **Full** | **320** | **Earth clear-sky noon** |
199
200This should be a control in the app, not a fixed number. It is the most
201characterful thing about a world whose sun is a machine.
202
203#### Headroom
204
2055,000× is **11 % of the étendue limit** (46,223× at 1 AU). Tower could in principle
206push the beam 9.2× further and cook itself; the diffuser network is as much a safety
207system as a lighting system. 5,000× was chosen because it is *demonstrated*
208technology — the Odeillo solar furnace reaches ~10 MW/m² on Earth today. Nothing in
209Tower's sun system requires physics that does not exist. See `decisions.md` D-003.
210
392bb8a7 2026-09-08 Pavel Safronov211#### 1.3.2 Night, and the difference between banked and off
212
59c12827 2026-09-28 Pavel Safronov213**Night is the sun going out and the beam banked** (D-074). The sun reaches the far
214cap at sunset and the shoal disperses; the beam is then banked for the night, and
215comes back up for the sun to light at the sun cap in the morning. Banking is not
216optional, for the reason below.
217
392bb8a7 2026-09-08 Pavel Safronov218**Night cannot be made by aiming the swarm away.** The glow above belongs to the
219beam and the air, not to the diffusers, so a fully lit beam lights the world
220whatever the mirrorlets are doing: 779 W/m²/sr over a strip 3.65° wide running
221horizon to horizon is about 0.2 sr, which lands **~100 W/m² on the floor** — half
222of temperate, and no kind of night. Tower's night is therefore made by **banking
223the beam itself**, to a thousandth of full: **0.32 W/m²**, a rod you can still find
224overhead and a world you can just make out under it (D-046).
225
226**Shutting the beam down entirely is a different state and a much worse one.** No
227airlight, no lit ground, no rod — the only thing left in the world is the sky
228through the far cap. §1.9.4 gives the thermal mass about a week of coasting, so
229this is a state Tower can survive and not one it can sit in.
230
231| Setting | Floor | What it is |
232|---|---|---|
233| Dark | **0** | the beam shut down. Stars, and nothing else. |
234| Night | **0.32 W/m²** | the beam banked to a thousandth |
42b4554e 2026-09-29 Pavel Safronov235| Moonlit night | up to **0.64 W/m²** | the same, and a full moon's light again (§1.3.5) |
392bb8a7 2026-09-08 Pavel Safronov236| Twilight | 30 W/m² | |
237| Temperate | 200 W/m² | |
238| Full | 320 W/m² | Earth clear-sky noon |
239
da6bcb0e 2026-09-08 Pavel Safronov240#### 1.3.3 The far cap mirror, and where the last quarter of the beam goes
241
f16f084e 2026-09-28 Pavel Safronov242*Since D-079 the mirror is lit at every hour.* By day the sun's shoal takes part of the
243beam where it is and lets the rest run on to the far cap; by night the mirror works on the
244banked beam. The rod always ends on it.
59c12827 2026-09-28 Pavel Safronov245
da6bcb0e 2026-09-08 Pavel Safronov246The swarm has optical depth 1.41, so **24% of the beam survives all 540 km** — and
247it survives *collimated*, in the beam's own 7.96 km² cross-section. That is the
248whole shape of the problem: not 13 TW spread over a 7,854 km² cap, but **1.7 MW/m²
249in a 3.2 km spot**, about 1,200 suns. An absorber there sits at **2,330 K**.
250
251**So the spot is a mirror** (D-048), and only the spot: it is a thousandth of the
252cap's area, which is what leaves the other 99.9% free to be window (§1.4). A mirror
253is the cheap answer rather than the expensive one — at 99.9% it absorbs **1,665
254W/m²**, about 1.2 Earth solar constants, so the thing that would have glowed white
255is merely warm.
256
257**It also recovers the energy.** The residual goes back up the column, which makes
258the optical path 1,080 km instead of 540 and utilisation **1 - e^(-2τ) = 94%**
259rather than 76%. What survives even the return trip leaves through the beam
260aperture toward the collector, which sends it back again; in the limit the whole
26154.3 TW lands on the inner surface. **This is why full brightness is 320 W/m² and
262not 243** — the figure in §1.3 assumes the entire beam is eventually used, and with
263the cavity closed at both ends it is.
264
265Aiming light at a region to warm it is a separate lever and stays one (§1.9.4). The
266mirror is about not wasting the beam; the desert is about where the weather goes.
267
59c12827 2026-09-28 Pavel Safronov268#### 1.3.4 The day: a sun that crosses the world
269
270*Rewritten for D-074; it replaces the dawn front of D-053.*
2bb3e0de 2026-09-08 Pavel Safronov271
272Tower's day is **24 hours**, chosen for the people living under it — nothing
273physical offers one, since the spin is 7.5 minutes and has nothing to do with light.
de3d60d6 2026-09-29 Pavel Safronov274**Tower keeps an Earth city's days: Pisa's** (D-089; until then, Sydney's). Its clock is
275Pisa's — Italian time, daylight saving included — and its sunrise and sunset are Pisa's,
276so the days lengthen and shorten with Pisa's seasons. Day 0 is the northern autumn
277equinox, 23 September 2026, so the calendar starts on a 12-hour day and shortens toward
278December. The city and that date are the `calendar` in the world file, and can be changed
279there. The app's clock opens at Pisa's time now and runs on at the speed it was last run at.
59c12827 2026-09-28 Pavel Safronov280
281**The sun crosses the world once a day.** It lights at the **sun cap** at sunrise,
282travels at a steady speed down the axis, and reaches the **far cap** at sunset, where
de3d60d6 2026-09-29 Pavel Safronov283it goes out. At the equinox that is 540 km in 12 hours 11 minutes — **44 km/h**, a sun
284you can watch move; at midwinter the day is 8 h 55 min and it runs at 61 km/h, and at
285midsummer 15 h 27 min and 35 km/h. It takes a quarter of an hour to light and a quarter
59c12827 2026-09-28 Pavel Safronov286of an hour to go out, which is the shoal gathering and dispersing. Then it is night
287(§1.3.2) until the next sunrise.
288
289**Every place has its own noon.** The sun is 50 km overhead when it passes, so each
290place along the world has its midday at a different hour: the sun-cap end in the early
291morning, The Capital at about midday, the far-cap end towards evening. Away from
292overhead the sun stands lower — 45° at 50 km off, 11° at 270 km — and the ground is lit
293by how high it stands (§1.3.1). It never sets: from one cap, the sun at the other is
294still 5° up. Morning is a low sun in the sunward sky, evening a low sun deepward. §1.9.4
295says Tower has no latitude; the sun gives it **longitude**, and a direction for its days.
296
297**The same sun inside and out.** The sun is a point on the beam, lit by the beam, and it
298is drawn once and seen by both views — from the floor, and in through the windows from
299outside — with the same haze between it and the eye.
2bb3e0de 2026-09-08 Pavel Safronov300
42b4554e 2026-09-29 Pavel Safronov301#### 1.3.5 The night: a moon
302
303*Asked for by the author, 2026-09-28; D-088.*
304
305**Tower has a moon.** By night the swarm gathers a second, smaller shoal on the banked beam,
306the size of the sun — 3.2 km, as Earth's Moon and Sun are one size in Earth's sky. It lights
307at the **far cap** as the sun goes out there at dusk, and crosses the world **the other way**,
308sunward, reaching the **sun cap** by sunrise, where the sun lights behind it. At the equinox
de3d60d6 2026-09-29 Pavel Safronov309that is 540 km in about 11 h 50 min, some 46 km/h; the long winter nights run it slower.
42b4554e 2026-09-29 Pavel Safronov310
de3d60d6 2026-09-29 Pavel Safronov311**It keeps Earth's Moon's phases**, as the sun keeps Pisa's days. Its disc is lit as much as
42b4554e 2026-09-29 Pavel Safronov312the Moon is lit that night, and shaped like it: the lit part lies toward the far cap while it
313waxes — the end the sun went out at, as a waxing moon on Earth is lit on the side of the set
314sun — and toward the sun cap while it wanes, the end the sun will light at. The dark part is
315not drawn; those mirrorlets are simply turned away. At new moon there is no moon.
316
317**It lights the world.** At full it throws as much light on the floor as the whole banked rod,
318so a full-moon night is twice as bright as a moonless one — 0.64 W/m² against 0.32 — and lit
319from one direction, with the land facing it brighter. Tower banks the beam that much less to
320feed it. This is a choice and not a necessity: Earth's full moon is about a hundred and
321fiftieth of Tower's banked night, and would be lost in it. Water shows a path of moonlight.
322
866c7f96 2026-09-07 Pavel Safronov323### 1.4 Sealed hull, and the cap windows
324
325**The cylinder wall is opaque and unbroken.** No slats, no windows, no view out
326along any of the 540 km. From anywhere on the inner surface, the sky is land, haze
327and the beam — nothing else. See D-017.
328
329The only views out are at the **end caps**, and they are peculiar:
330
331- **A cap is a wall, not a floor.** Gravity there points radially outward, which is
332 *tangent* to the cap's surface, so nothing rests on it — you would slide to the
333 rim. Each cap is a **50 km vertical cliff** standing at the end of the world, and
334 its windows sit at its base, at eye level for anyone standing on the floor.
335- **The sky through them does not sweep — it turns.** A cap window looks along the
336 spin axis, which is the celestial pole. Stars rotate about a fixed centre, one
337 full turn every 7.5 minutes, with one motionless star at the middle. **A pinwheel
769726ea 2026-09-08 Pavel Safronov338 sky.** It is the only moving sky anyone in Tower ever sees — and because the axis
339 is horizontal from the floor, it wheels about a point on the **horizon** rather
340 than overhead.
59c12827 2026-09-28 Pavel Safronov341- **The caps have more than one name.** The **sun cap** is the end the beam enters by.
42b4554e 2026-09-29 Pavel Safronov342 The **far cap** is also the **star cap**: it is the one with the stars in it — and the
343 **night cap**, since night starts there: the sun goes out at it at dusk, and the moon sets
344 out from it (D-088). All are used, and more names are added as they come into use (author,
345 2026-09-27, 2026-09-28).
769726ea 2026-09-08 Pavel Safronov346- The **far cap is glazed whole** — a 100 km window looking into deep anti-sun
347 space, not a wall with windows at its foot (D-045). Its structure survives as the
c954a775 2026-09-28 Pavel Safronov348 window's **mullions**, a lattice of identical equilateral triangles 8.3 km on a side
349 (D-078) — the old checker's pitch — so the one object in the world with a known scale still is one:
769726ea 2026-09-08 Pavel Safronov350 the rule now reads against the sky instead of against a plate. The **sun cap**
9c891d2e 2026-09-08 Pavel Safronov351 faces the collector rather than the sun, and is **glazed too** (D-050): §1.3.0
352 retires the "heavy glare management" this section used to demand of it, because no
353 direct sunlight has ever reached it. Through it, a 244 km black disc, stars round
354 the edge of it, and the beam blazing out of the aperture at its centre.
769726ea 2026-09-08 Pavel Safronov355- **By day the window is simply blue.** §1.5 puts the far cap 100–200 km into the
356 haze, so from anywhere but the deepward end the airlight in front of it swamps
357 whatever is behind, and the cap reads as a disc of sky. The stars are there at
358 noon and unseeable, which is a fact about eyes and not about the glass.
9f91e995 2026-09-29 Pavel Safronov359- **The far cap is single-glazed, and it frosts** (D-090). The glass is the coldest
360 surface in the world and collects frost on its inner face, so Tower clears it one pane
361 at a time, one pane per turn of the world in an order reshuffled every 35.1-hour loop.
362 Close to, the window is a white lattice with a scatter of clear, black, starry
363 triangles, and which ones are clear keeps changing. §1.9.6 has the numbers, and the
364 cold wind and ice the window makes at its foot.
365- **The sun cap is double-glazed** (author, 2026-09-29; D-090). Its inner pane stays
366 near the air's temperature, so it neither frosts nor chills the world: the Sunward Sea is
367 a temperate sea and the Deepward Sea the only cold one. The two caps are glazed
368 differently on purpose.
da6bcb0e 2026-09-08 Pavel Safronov369- **The beam does not go through it.** §1.3.3 puts the surviving quarter of the
370 beam on a 3.2 km bullseye at the centre of the cap, and that bullseye is a mirror
371 rather than glass: it returns the residual up the column for a second pass. The
372 window is everything else, which is 99.9% of the disc.
373- **The mirror is not the pinwheel's centre, and it is worth being clear why.** The
374 sky turns about the direction *parallel* to the spin axis, and from anywhere on
375 the floor that direction is horizontal — so **the pinwheel's centre is at eye
376 level, dead ahead**, down where the window meets the ground, not overhead and not
377 at the middle of the cap. The mirror is a physical object *on* the axis, which
378 from 270 km sits about 10° above that. They coincide only for an observer
379 standing on the axis itself, and nobody can. By day the mirror blazes — it is
380 returning 1.7 MW/m² — and is the brightest thing in Tower's sky; at night it
381 banks with the beam and goes dark.
866c7f96 2026-09-07 Pavel Safronov382
383**Nobody aboard can ever see Earth.** Tower holds a terminator orbit (D-004), which
384puts Earth roughly 90° off the axis — out the *side* of the cylinder, which is now
385solid hull. A habitat in Earth orbit whose inhabitants have never seen the planet
386they orbit.
387
99a2821b 2026-09-29 Pavel Safronov388**Spacecraft dock anywhere on the outer shell** (author, 2026-09-28; D-087). There is no
389port: a ship matches the hull's spin and sets down where it likes. Docked, it turns with the
390hull at 700 m/s and hangs from its clamps, pressed outward at 1.02 g — its feet toward the
391hull and its floor toward space.
392
866c7f96 2026-09-07 Pavel Safronov393The caps are therefore the only places in the world with a horizon that is not
394Tower. Whatever grows up around them, it will not be ordinary.
395
396### 1.5 Atmosphere and the look of the sky
397
398Air co-rotates with the shell. Because g falls linearly to zero at the axis, the
399atmosphere is much deeper than Earth's:
400
401- Pressure at the axis, 50 km up: **5.2 kPa** — thin, but genuinely air.
402- A vertical column floor-to-axis is ~10,600 kg/m², about **one Earth atmosphere**.
403
404So the interior sky behaves like this, and the shader must reproduce it:
405
406- **Straight up** you look through ~1 atmosphere and see the far side of the world
407 100 km away — visible, but washed to pale blue like a very distant mountain range.
408- **Along the axis** you look through many atmospheres. The far end cap is not
409 visible as a wall; it dissolves into blue haze around 100–200 km out. The world
410 reads as endless in the axial direction and closed in the circumferential one.
411- **The ground curves up on both sides** into that same blue, meeting overhead.
412- **The beam** is a self-luminous scattering shaft 3.65° wide at 779 W/m²/sr —
f16f084e 2026-09-28 Pavel Safronov413 render it as a bright sunlit cloud, not as a light source with a halo. It runs
414 from cap to cap at every hour; by day it is dimmer past the sun (§1.3.1, D-079).
59c12827 2026-09-28 Pavel Safronov415- **The sun** is the other thing in the sky that is not land: a blazing disc on the
416 beam, 3.65° across from directly beneath and smaller from afar, with glare round it
42b4554e 2026-09-29 Pavel Safronov417 (§1.3.4). By night there is the **moon** instead, smaller in light and crossing the other
418 way, as lit as Earth's Moon (§1.3.5). With the hull sealed, the rod, the sun and the moon are
419 all there is.
866c7f96 2026-09-07 Pavel Safronov420
421### 1.6 Orbit and attitude
422
423- Tower holds a high circular orbit with its **orbital plane kept normal to the
424 Earth–Sun line** — a terminator orbit. This is why one cap can face the sun
425 permanently and Tower is never eclipsed.
426- The plane precesses 360° per year to track the sun. Tower's angular momentum is
427 enormous, so this 1°/day reorientation is actively driven, continuously, forever.
428 Canon treats this as Tower's defining maintenance burden.
429- Consequence for the interior view: the star field slowly drifts across the year
e331ec2a 2026-09-28 Pavel Safronov430 while spinning fast every 7.5 minutes. Two nested motions. Both are drawn (D-075):
431 the far cap looks at the antisolar point, which walks the ecliptic a degree a day.
866c7f96 2026-09-07 Pavel Safronov432
433### 1.7 Coordinates
434
435The canonical surface coordinate is **(θ, z)**:
436
437- `θ` — angle around the cylinder, 0 to 2π. θ = 0 is the centre of land strip 0.
438- `z` — distance from the sun cap, 0 to 540 km.
439
440The 2D map is the direct unroll: `x = z`, `y = (θ − θ₀) · R`. No projection
441distortion — a cylinder unrolls exactly. This is a genuine advantage over mapping a
442globe and the map view should lean on it.
443
444**The map shows the surface once, bounded**, so its extent is readable. That means
445it needs an edge, and the edge is placed at **θ₀ = the centre of the last slat**.
446Land strip 0 is centred on θ = 0, so cutting there would slice a whole strip in
447half across the top and bottom margins; cutting at a slat centre leaves every land
448strip whole and splits only a band of stars, which carries no geography. Same
449reasoning as putting Earth's map edge at the antimeridian. A sightline whose short
450route crosses the edge is drawn as two segments, so the drawn path always matches
451the measured distance.
452
453---
454
455### 1.8 Sightlines: Tower has two horizons
456
457Along the axis the floor is perfectly flat and never falls away, so nothing is ever
458hidden by curvature. **Tower's horizon is haze.** Circumferentially the floor curves
459*up*, so distant land rises into the sky rather than sinking below a line. The two
460directions behave completely differently, and this is one of the most alien facts
461about living there.
462
463Rayleigh transmission from a floor-level observer:
464
465| Distance | Along the axis | Across the interior (overhead) |
466|---|---|---|
467| 26 km | 78 % | 77 % |
468| 50 km | 56 % | 70 % |
469| 100 km | **31 %** | **78 %** |
470| 270 km (far cap from midpoint) | **4 %** — a ghost | — |
471
472Two consequences:
473
474- **The axial horizon closes at 100–150 km.** From the midpoint you cannot see
475 either end cap. Everyone can see 100 km, knows there is more beyond, and cannot
476 resolve it — a different psychology of distance than Earth's 5 km cliff-edge.
477- **The far side of the world is clearer than the ground at the same distance,**
478 because a sightline across the interior rises through thin axis air while one
479 along the floor grinds through full density. It gets *better* with distance: the
480 land directly overhead, 100 km away, is the crispest far object in Tower at 78 %.
481 **Distant geography is best seen by looking up.** People would orient by what is
482 overhead; the ground is the vague part. This inverts the human default.
483
484### 1.9 Water
485
486Tower's hydrology is stranger than its geometry, and most of it follows from one
487fact and one absence.
488
489#### 1.9.1 Coriolis never pushes surface water sideways
490
491The floor's tangent plane is spanned by θ̂ and ẑ, and the spin axis is ẑ. For any
492flow along the surface:
493
494- **along the axis** — `ẑ × ẑ = 0`, no Coriolis force at all;
495- **around the circumference** — `ẑ × θ̂ = −ŝ`, the force is purely radial.
496
497The Coriolis term never has a component *inside* the surface. So **Tower's rivers
498do not curve.** No hemispheres, no Baer's law, no preferred bank erosion, no gyres,
499no cyclones. Every large-scale rotational habit of Earth's water and weather is
500absent, and a meander in Tower is pure flow dynamics with no thumb on the scale.
501
502#### 1.9.2 What it does instead: everything vertical leans
503
504The force goes into the floor rather than across it, so it appears whenever water
505moves up or down. Deflection of a free fall goes as h^1.5:
506
28f9a6bc 2026-09-07 Pavel Safronov507| Fall | Lands (retrograde) | Lean of the path | Lean at impact |
508|---|---|---|---|
509| 100 m | 4.2 m | 2.4° | 3.6° |
510| 500 m | 47 m | 5.4° | 8.1° |
511| **1,000 m** | **133 m** | **7.6°** | **11.3°** |
512| 2,000 m | 377 m | 10.7° | 15.8° |
513
514Two different angles, and the interior view needs both. The **path** leans by where
515the water lands against how far it fell — the tilt of a waterfall's plume seen
516whole. The **impact** lean is the direction the water is actually moving when it
517arrives, which is what a streak of it is drawn at, and it is half again the other in
518tangent. `src/canon/motion.ts` computes both.
866c7f96 2026-09-07 Pavel Safronov519
520**Rain falls permanently slanted** — a raindrop at terminal velocity sits at a fixed
521**1.47° against the spin**, ~51 m of drift over a 2 km fall, never varying, never
28f9a6bc 2026-09-07 Pavel Safronov522reversing. It is fixed because drag holds the fall speed constant, so unlike free
523fall the angle does not grow with the drop: rain leans the same 1.5° whatever the
524cloud. Set against a waterfall's 11°, **the waterfall is the compass and the rain is
525not**, which is the opposite of what §2.4 originally assumed (D-034). Rising things lean the opposite way: smoke drifts spinward, rain drifts
866c7f96 2026-09-07 Pavel Safronov526anti-spinward. Every plume and every shower in Tower tilts, and they tilt against
527each other.
528
529The same applies to anything that descends, not just water — see §1.11 on what it
530does to skiing.
531
532Horizontal flow changes *weight* rather than direction (Eötvös): +0.57 % for a
5332 m/s prograde river, negligible hydrologically. It only matters at speed — an
534express train at 100 m/s gains 29 %, and anything moving retrograde at the 700 m/s
535rim speed is stationary in space and therefore weightless.
536
537#### 1.9.3 A perfect cylinder has no slope anywhere
538
539Potential depends only on radius, so **the whole floor is a single equipotential
540surface.** Water on it has no preferred direction: a perfect Tower has no rivers at
541all, forever.
542
543**Every river in Tower exists because the floor was shaped.** There are no
544tectonics and no uplift, so erosion is strictly one-way — a 3 km range wears flat in
545~30 Myr under a wet engineered climate, ~150 Myr under a dry one. Tower's rivers
546are steadily destroying its landscape and the highlands must be rebuilt to keep them
547running. This is D-004's theme again: Tower's rivers are plumbing it chose to
548install and has to keep re-installing.
549
550Two corollaries:
551
552- **No river can circumnavigate.** A closed loop has no net descent.
553- **Lakes curve upward.** Level means constant radius, so across a 30 km lake the
554 far shore rides **2.3 km above your tangent plane** — Earth would hide it 18 m
555 below the horizon. You look *up* at the opposite beach, and water appears to
556 climb away from you.
557
558#### 1.9.4 There is no passive climate at all
559
560**Tower has no latitude** — every point is equidistant from the light — and with the
9f91e995 2026-09-29 Pavel Safronov561hull sealed it has no windows in its walls either. A uniform hull radiates at 274 K
562everywhere, so left alone the world settles into a flat calm: no gradient, no wind, no
563evaporation, no rain, no rivers. **The one exception is the far cap**, whose window is
564a cold wall the size of the cap (§1.9.6, D-090); it makes a gradient at the deepward
565end whatever Tower does.
866c7f96 2026-09-07 Pavel Safronov566
567**So every weather system in Tower is deliberate.** Tower makes climate the only way
568left to it — by aiming light. It warms where it wants convection and shades where it
9f91e995 2026-09-29 Pavel Safronov569wants condensation; the hull's loss is the sink. Every cloud, every
866c7f96 2026-09-07 Pavel Safronov570rainfall, every jet stream is something Tower is doing, continuously, on purpose.
571
9f91e995 2026-09-29 Pavel Safronov572**Tower also sets the sink** (D-090). The loss through the hull cannot be passive:
5731 km of rock conducting the mean 320 W/m² would need a difference of some 100,000 K
574across it, so heat reaches the outer skin because Tower sends it there. It follows
575that Tower can send less of it from one place and more from another. **It can move
576about 5 TW** — a tenth of the beam — between regions this way: enough to hold the far
577end cold and a few projects besides, not enough to run the climate on. Light is still
578how Tower makes weather; heat rejection is how it keeps the books.
579
866c7f96 2026-09-07 Pavel Safronov580This is D-009 arriving at its conclusion. The mirrorlet swarm was already Tower's
581body language; now it is also its lungs and its weather. There is no autonomic
582layer underneath. **If Tower's attention ever lapses, the rain stops.**
583
584Costs, for scale against a 54.3 TW budget:
585
586| | | |
587|---|---|---|
588| Earth-like rainfall, 1,000 mm/yr | **12.2 TW** | **22.4 %** — Earth spends the same fraction |
589| Recirculating all runoff (1,792 m³/s) against 500 m | 8.8 GW | 0.016 % |
9f91e995 2026-09-29 Pavel Safronov590| The far cap window's loss to space (§1.9.6) | 0.65–1.9 TW | 1–4 % |
866c7f96 2026-09-07 Pavel Safronov591
592#### 1.9.5 Rivers are a closed, pumped circulation
593
594With no natural cycle and no natural slope, a Tower river is a **loop**: a headwater
595reservoir, a shaped descent through the landscape, a lake at the bottom, and a lift
596back to the top. Source and sink are the same system.
597
598Two ways to close the loop, and they give completely different rivers:
599
600- **The pump outfall.** A river begins at a machine. Walk to the source of any
601 river and find a wall of water coming out of a structure — not a spring, an
602 outlet. Costs a rounding error (above).
603- **The made cloud.** Tower evaporates the lake with aimed light and condenses it
604 over the highlands, so rain falls exactly where the river should start. No
605 machinery: the swarm is the pump. Costs the 22.4 % above, and buys real weather
606 with it.
607
608Canon uses **both** — made weather for the world's general hydrology, pumps for
609watercourses Tower wants under precise control.
610
611Two consequences of the sealed hull:
612
613- **A river can circle the world.** The surface is one unbroken sheet, so a channel
614 can run the full 314 km circumference and close on itself — a lazy river returning
615 to its own source. Gravity cannot drive a closed loop, so it is pumped.
616- **The water inventory is conserved and exactly known.** Nothing evaporates to
617 space. Tower knows how much water it has, to the litre, forever.
618
619Lifting is also slightly cheaper than on Earth, since gravity falls off with height:
6201 % cheaper at 1 km, 5 % at 5 km, 25 % at 25 km.
621
9f91e995 2026-09-29 Pavel Safronov622#### 1.9.6 The far end is cold, and Tower keeps it so
623
624*Worked out with the author, 2026-09-28; D-090.*
625
626**The window is a radiator.** Glass is opaque to thermal infrared, so the far cap's
627single glazing does not let the world's heat out as light — it absorbs it, and its outer
628face radiates it to space at 3 K. A pane 0.1–1 m thick loses **80–250 W/m²**, and over
629the cap's 7,854 km² that is **0.65–1.9 TW**, 1–4 % of the beam. Air cooled against the
630glass is denser and slides down the cap, which on a cap means radially outward to the
631rim, and it spreads sunward over the Deepward Sea as a **cold wind off the window**,
632roughly 5–15 m/s. Nothing Tower does makes this; it is what a cold wall does. The ice at
633the foot of the cap is where the physics was going anyway.
634
635**Tower keeps that end of the world dim, and lets it freeze in bands.** Sunward to cap:
636
637| z (km) | Band | By day | By night |
638|---|---|---|---|
639| 496–512 | **open water** | grey sea at about freezing, with sea smoke where the cold wind crosses it | dark |
640| 512–525 | **pack ice** | floes made at the fast ice's edge, carried sunward by the wind, melting where they meet open water | dark |
e18dad04 2026-09-30 Pavel Safronov641| 525–528.5 | **fast ice** | dusk — the rod's glow and nothing aimed | night; the sun goes out overhead at dusk |
642| 528.5–540 | **the Cap Range** | ice mountains, 2–3 km high against the glass, a few crests bare rock | the same, dark |
643| 540 | **the window** | white frost with a scatter of clear panes, its foot buried in ice | stars through the clear panes |
9f91e995 2026-09-29 Pavel Safronov644
645- **The dark is dusk by day, not darkness.** The rod's own glow cannot be aimed away
646 (§1.3.2) and runs on past the sun to the cap (D-079), so the fast ice gets tens of W/m²
647 by day — a permanent overcast dusk — and real night only by night. The sun still goes
648 all the way to the cap (§1.3.4), so once a day it goes out directly over the ice, and
649 the moon sets out from the same place.
e18dad04 2026-09-30 Pavel Safronov650- **Ice mountains stand against the window** (D-093). Snow off the window wind and the
651 meltwater of every cleared pane come down at the cap's foot and freeze there, so the ice
652 is thickest against the glass. But grounded ice cannot stand much higher than a few
653 hundred metres over a few kilometres — it spreads under its own weight until the stress
654 at its bed is what the bed will take, about 150 kPa for cold ice frozen down — and on a
655 420 m sea that is a kerb: 280 m against a 50 km window. So **Tower raised a range there
656 for the ice to stand on**, as it raised the Uplands (D-064): the **Cap Range**, rock rising
657 from the sea bed at 524 km to about 2,400 m at the cap, higher in some places round the
658 ring than others. Ice mantles it from where the rock leaves the water, about 528.5 km, in a
659 low front over the fast ice, thickening as an ice sheet does to 350 m on the heights, and
660 it drapes the ridges rather than burying them level, so the range reads as mountains and
661 its sharpest crests stand out as bare rock. Against the glass it stands **2 to 3 km up the
662 window**, and the window's foot is buried in it. The sea no longer meets the cap: the
663 fast ice ends against the range.
9f91e995 2026-09-29 Pavel Safronov664- **The fast ice holds.** The window wind pushes on it with about 1,500 N per metre of
e18dad04 2026-09-30 Pavel Safronov665 shore; 3 m of ice frozen to the range's foot holds some 3 MN. **Tower has no tides** — its moon
9f91e995 2026-09-29 Pavel Safronov666 is light (§1.3.5) — so the thing that breaks Earth's fast ice out is absent. Storm swell
667 is the threat to it, and the Deepward Sea is on the weather plan.
668- **The whole sea is ice-cold, not only the ice.** With no Coriolis in the plane of the
669 floor (§1.9.1), a 1 K difference in the water drives an exchange of about 0.45 m/s,
670 cold out along the bottom and warm in over the top. That mixes the sea's 44 km to within
671 about a kelvin, so the open water sits at freezing. It is a polar sea, grey and foggy,
672 and its coast has fog where the land's air comes down onto it. **No sea in Tower can
673 be frozen in one corner** — only whole or not at all.
674- **The window's bill is paid by the air.** If the sea paid the 0.65–1.9 TW, the open
675 water would need daylight on it, 140–400 W/m². Instead the weather runs one overturning
676 cell: warm air from the lit lands comes deepward aloft to the glass, cools, sinks, and
677 goes back sunward along the surface as the window wind. The sea pays only what that
678 wind takes from the open water, which is also how fast ice is made — so **Tower sets
679 the ice edge by how hard it runs the cell**.
680- **Tower turns the hull down under the sea** (§1.9.4). If the floor went on drawing its
681 share, the sea would be cooled from beneath and freeze on its bed first, and no light
682 would keep any of it open. The far end takes about 2 TW of Tower's 5 TW of heat control.
683
684**The window frosts, and Tower clears it one pane at a time.** Cold glass collects frost
685on its inner face — very roughly millimetres a day, enough to whiten a pane in days — so
686left alone the far cap would go white and the stars would go. Tower heats one pane at a
687time from its frame: melting a pane's frost is about 6 × 10¹² J, a few minutes at tens of
688GW, and the meltwater runs down the cap onto the ice.
689
690- **One pane per turn of the world**, every 7 min 29 s. The window has **282 panes**
691 (216 whole triangles and 66 cut by the rim, D-078), so a loop takes **35.1 hours** —
692 not a whole number of days, so the clearing drifts against day and night.
693- **Shuffled, and reshuffled every loop.** A fixed order could be learned by anyone who
694 watched long enough; a fresh one each loop cannot. Each loop's order is drawn from the
695 world's seed and the loop's number, so which panes are clear at any moment can be
696 worked out without the history, the same in the app and in the book.
697- A pane's gap between clearings runs from almost nothing to almost two loops, so the
698 frost on it ranges from clean glass to thick white. The window reads as a white lattice
699 with a scatter of black, starry triangles, perhaps one in ten; how long a pane stays
700 clear rests on the frost rate, which is rough to a factor of ten.
701
e18dad04 2026-09-30 Pavel Safronov702**As drawn** (D-091). The Deepward Sea's `ice` in the world file puts the bands where the
703table has them, and the water shader draws the pack as floes and leads and the fast ice as
704one cracked sheet. Tower's aimed light falls from the shore to about a third at the ice
705edge, a tenth at the fast ice and nothing on it, which leaves the fast ice the rod's
706twentieth by day; the views show that through the same 0.35 power the exposure gives the
707light dial, so the fast ice reads as dusk, not black. The frost closes a cleared pane as
7081 − e^(−age / 10 h), which leaves about one pane in ten nearly clear, and the pane being
709cleared thaws across its turn. Both views share the window, so the frost is the same from
710outside.
711
abc0aad0 2026-10-01 Pavel Safronov712#### 1.9.7 Farms on their own days
713
714*Asked for by the author, 2026-09-30; D-095.*
715
716**Tower gives each crop the day its plant wants.** Any light on any field at any hour is
717what the swarm is for (§1.3.1), so a farm in Tower does not live by the sun. The author's
718first thought was full sunlight around the clock; the plants would not thank Tower for it.
719Most flowering plants measure the night to know when to flower, and some — tomatoes — are
720injured by light that never stops. So every field gets darkness, and its own length of day:
721
722| | Day Tower gives it | Why |
723|---|---|---|
724| rapeseed, flax, wheat | 18 h | long-day plants: they flower sooner and fuller under long days |
725| lavender, poppies, phacelia, tomatoes | 16 h | long-day; tomatoes are day-neutral but need about six hours of dark |
726| tulips, sunflowers, maize, lettuce | 14 h | day-neutral, or nearly |
727| buckwheat, potatoes | 12 h | short-day; potatoes set their tubers on short days |
728
729- **A field's day starts at sunrise and is lit as at noon** from first light to last, not
730 by a sun climbing and setting. A long-day crop is lit **on into the night**; a short-day
731 crop has its light taken away before the sun sets.
732- **Tower cannot make a field dark by day.** The rod's own glow cannot be aimed away
733 (§1.3.2), so a short day ends in the far end's dusk, a twentieth of the light, and only
734 the world's night is truly dark.
735- **The fields show at night.** For the first hours after sunset most of them are still lit
736 as at noon — a patchwork blazing in a dark world — and they go out one crop at a time,
737 the last of them six hours after sunset at the equinox.
738- **They cost the world a little of its night.** Lighting fields after dark means a beam
739 not quite banked, and the rod glows with the beam. With **250 km²** of fields, chosen by
740 the author for this, about 220 GW goes to them just after sunset — 0.4% of the beam —
741 which adds about 0.4 W/m² of the rod's glow everywhere, a moonlit night's worth, falling
742 to nothing by six hours after sunset. At 1,000 km² it would be a permanent twilight.
743- **Nine farms share the 250 km²**, spread round the world and down its length (D-096):
744 two on the Uplands beside the Uplands Ring, four in clearings cut out of Greatwood — one
745 of them the nearest fields to the Capital — and three on the open ground before the far
746 end, one at the Axial Line's railhead. Each is about 28 km² (provisional names: Ringside,
747 Far Ringside, Greatwood Clearing, Capital, Deepwood, Greatwood, Railhead, Far and Last
748 Fields). Three-quarters of the fields are flowers in bloom — tulips red, yellow, pink and
749 white, lavender, sunflowers, rapeseed, poppies, flax, phacelia, buckwheat — and the rest
750 maize, potatoes, tomatoes, wheat and lettuce.
751- **Farms grow; they are not drawn** (D-097). Each farm is a seed and an area, and grows
752 outward over the land a patch at a time, taking the nearest and luckiest ground at its
753 edge and never water, sand, rock, a range or a slope too steep to plough — so it comes out
754 ragged, with lobes and bays, and goes round a river rather than across it. Its edge runs
755 along its fields' edges: a field is in the farm or not, whole.
756- **Fields are irregular, the way old farmland is.** The land is divided into blocks about
757 1.5 km across, with farm tracks along their edges, and each block was taken in hand on its
758 own terms: its fields run at its own angle, are its own size (220–440 m), and are drawn out
759 long by its own stretch. Inside it the fields have straight edges meeting at odd angles,
760 and a third of them are cut again into long strips. No line runs further than a block, and
761 no two blocks agree.
762
866c7f96 2026-09-07 Pavel Safronov763### 1.10 Slat orientation — RESOLVED: none
764
765Axial strips versus rings was weighed at length (D-016) and answered by removing
766slats entirely (D-017). The comparison is kept in D-016 because it established what
767the choice *cost*, and because the reasoning — that slat layout sets the shape of
768Tower's countries, its climate map and its astronomy all at once — is what made
769"none" a real option rather than an absence.
770
771### 1.11 The world as built
772
376f2ce6 2026-09-16 Pavel Safronov773Authored geography lives in **`content/world.json`** — the source of truth — as
774features the browser generates the terrain from live (world-generation.md, D-062).
775Names are provisional. Tower is laid out in **belts
866c7f96 2026-09-07 Pavel Safronov776along the axis**, which is the natural grain of an engineered climate (§1.9.4):
777
778| z | | |
779|---|---|---|
780| 0–42 km | **The Sunward Sea** | ring ocean at the foot of the sun cap |
03607270 2026-09-08 Pavel Safronov781| 55–140 km | **the range** | Westwall, The Sisters, **Snowcrown** (4,300 m), Eastwall — the named high points of **The Girdle**, which rings the world at z 90 km (D-051) |
14d35b7d 2026-09-16 Pavel Safronov782| 105–150 km | **The Uplands** | ground Tower raised to about 1,000 m, ringing the world, so the rivers off the range can run down to The Narrows (D-064) |
51c39d8b 2026-09-17 Pavel Safronov783| 148–218 km | **The Dry Reach** | desert **ringing the world**, 22,000 km², 13% of the surface: mesas over dune fields, dry washes, and salt pans ringed by shorelines (D-069) |
866c7f96 2026-09-07 Pavel Safronov784| 176/190/203 km | **three ridges** | ringing, concentric — and **The Narrows** is the only breach in all three |
abc0aad0 2026-10-01 Pavel Safronov785| 129–470 km | **the farms** | nine farms of about 28 km², 250 km² in all, round the world: on the Uplands, in Greatwood's clearings, before the far end (§1.9.7, D-095, D-096) |
00ceeedb 2026-09-27 Pavel Safronov786| 214–430 km | **Greatwood** | forest belt: about three billion trees, with meadows Tower left open in it (D-071) |
866c7f96 2026-09-07 Pavel Safronov787| 248–402 km | **The Deep** | 154 × 32 km sea, long down the axis and narrow around |
51c39d8b 2026-09-17 Pavel Safronov788| 270 km | **The Capital / The Spindle** | axial midpoint; 20 km across, its spinward edge on The Deep's shore (D-070) |
e18dad04 2026-09-30 Pavel Safronov789| 496–540 km | **The Deepward Sea** | ring ocean at the foot of the far cap: open water to 512 km, pack ice to 525, dim fast ice to the Cap Range (§1.9.6, D-090) |
790| 528.5–540 km | **The Cap Range** | ice mountains Tower raised against the far cap's window, 2–3 km high (D-093) |
99a2821b 2026-09-29 Pavel Safronov791| 110–480 km | **The Axial Line** | railway down the length of the world, through The Narrows (D-086) |
792| 140 km | **The Uplands Ring** | railway round the world across the Uplands (D-086) |
793
794The railways keep a grade of their own over the ground rather than cutting it, so they run
795on piers much of the way: 10–20 m up over ordinary country, and on long viaducts over the
796rivers' gorges. **A train going round the world has a handedness**, like a ski run: the
797Ring's trains, at 100 m/s, are 31% heavier running spinward and 27% lighter running
798antispinward (`canon/motion.ts`); a train along the axis feels nothing.
866c7f96 2026-09-07 Pavel Safronov799
a088e5d5 2026-09-17 Pavel Safronov800Both ring seas carry ninety sailing ships each, and Tower's published weather plan
801(D-067) runs a 28-day cycle of storms, gales and a calm over them and The Deep.
802
51c39d8b 2026-09-17 Pavel Safronov803#### What the desert is made of
804
805The Dry Reach is not sand with some rock in it; it is the whole grammar of a desert,
806because Tower had seen deserts (D-069). Tiers of rock stand over dune fields whose crests
807run across the wind Tower sends there; rocky hills break up the open ground; a network of
808**dry washes** is routed by the same drainage the ranges are eroded by, because a channel
809network that ignores drainage is the one thing that would look wrong. In the lowest ground
810there are **salt pans**, dead flat, ringed by the **shoreline benches** of lakes that never
811stood. The middle of the Reach stands 150 m above its rim so that the washes have somewhere
812to run, and Tower keeps its rock 6.5 km clear of the rivers it had already routed — a mesa
813across The Narrows would leave the world's drainage in a slot.
814
815Rock is laid in beds, and a bed in Tower is a **constant radius**, so the strata line up
816across separate mesas however far apart they stand. That is what makes a field of them read
817as one formation eroded out of one plateau.
818
866c7f96 2026-09-07 Pavel Safronov819#### Why the desert rings
820
821**On a cylinder you cannot go around a band.** Every desert on Earth can be
822circumnavigated; a ringed one cannot. It is an absolute barrier across the world's
823waist, and with the three ridges ringing too it becomes three concentric walls.
824
825#### The drainage, and why it keeps the chokepoint
826
827Four rivers come off the range — Westwall Water, Sisters Water, Eastwall Water and
828The Long Water. On Earth most drainages **do not** cut through a rising ridge; they
829are defeated and diverted, and only an *antecedent* river with enough power keeps
830its course. So three of the four are turned by First Ridge, run **along its front**
831gathering each other, and leave with the fourth through the single gap.
832
833- **The Narrows carries the entire world's runoff** — ~392 m³/s off a 9,800 km²
834 range, lifted 1,780 m for 6.9 GW (0.013% of budget).
835- The ridge-front reaches are **the only circumferential water in Tower**, and
836 weigh fractionally more or less for it (§1.9.2). Everything else runs axially,
837 where Coriolis is exactly zero.
838- Whoever holds The Narrows holds the axis of the world. The Capital sits behind it.
80bcc97a 2026-09-17 Pavel Safronov839- **The Long Water falls twice** (D-066): 680 m off the range below Hollow Tarn, into a
840 gorge, and 170 m into The Deep at its mouth. Eastwall Water falls 440 m off its side of
841 the range. Each leans antispinward as it drops.
866c7f96 2026-09-07 Pavel Safronov842
14d35b7d 2026-09-16 Pavel Safronov843**The drainage needed the floor raised, and generating it honestly is what showed it**
844(D-063, D-064). As v1 authored it, the ground between the Girdle's foot and the Dry
845Reach — z 115 to 135 km — was a lowland barely 60 m high, below a plateau of
846800–1,100 m, and v1 painted its rivers across it a kilometre up. A river cannot climb.
847Generated faithfully, each needed an embankment up to 950 m high to reach The Narrows.
848
849So Tower raised the lowland: **The Uplands**, a ring of ground lifted to about 1,000 m,
850meeting the Girdle's skirt on one side and the plateau's edge on the other. The rivers
851now fall steadily off the range, across the Uplands and onto the plateau, and the floor
852under them is mostly cut — The Narrows about 500 m deep — and built up by no more than
853~200 m anywhere, the height of a levee rather than a dam.
376f2ce6 2026-09-16 Pavel Safronov854
866c7f96 2026-09-07 Pavel Safronov855#### The Deep is oriented for the view
856
857Long down the axis and narrow around it, so you cross it the **short** way — around
51c39d8b 2026-09-17 Pavel Safronov858θ, where the floor curves up. The authored outline is 154 × 32 km and the water fills about
85918 km of that width; from the Capital's waterfront the far shore is that 18 km away and
860stands **2.6 km above eye level**. Crossing it lengthwise instead would be dead flat. The
861orientation is the whole point.
862
863**The Capital is a footprint, not a dot** (D-070). It is 20 km across, centred on the axial
864midpoint — the only centre a cylinder has — which is just wide enough that its spinward edge
865is on The Deep's shore, 9.8 km out, where the ground has come down from 300 m to the
866water's 120 m. So the city holds both the middle of the world and a waterfront. The streets
867and buildings inside that footprint are phase 7's.
866c7f96 2026-09-07 Pavel Safronov868
869It is also the world's flywheel: 19× the diurnal heat storage of bare ground, and
8705.9 days at full power to move its temperature one kelvin. Tower still supplies
871every joule (§1.9.4), but the world now coasts for about a week rather than
872stopping the moment attention lapses.
873
874#### The cap seas are not designed
875
876Gravity on an end cap points radially outward — *tangent* to the cap. Nothing rests
877there; water runs down to the rim and pools. **Both ring oceans exist whether anyone
878planned them or not**, each with a 314 km shoreline and a 50 km cliff standing
879behind it. The only windows in the world are at their feet (§1.4).
880
9f91e995 2026-09-29 Pavel Safronov881They are not the same sea. The far cap's window is a cold wall, so **the Deepward Sea is
882a polar one** — ice-cold throughout, and frozen in bands toward the cap (§1.9.6). The sun
883cap is double-glazed and does none of this, so the Sunward Sea stays temperate.
884
866c7f96 2026-09-07 Pavel Safronov885#### Skiing, because it is a different sport here
886
887Level motion feels no Coriolis (§1.9.1) but a descending skier has radial velocity,
888and that does deflect:
889
890- **Down the axis:** a steady sideways push, always antispinward — 1.5% of g at
891 15 m/s on a 20° slope, 6.4% at 35 m/s on 40°.
892- **Around the cylinder:** you get heavier or lighter. 8.6% at 30 m/s, 11.4% at 40.
893
894So a **retrograde run gets lighter the faster you go**, which is self-reinforcing,
895while a prograde run grips harder as it accelerates. Every slope in Tower has a
896handedness. No Earth mountain does. Settlements sit at the tarns — Sisters Station,
897Hollow Station — around 2,100 m, with the runs above them.
898
e7a9f9dd 2026-09-17 Pavel Safronov899**The range as generated** (D-065) is the named summits and a scatter of unnamed ones,
900joined by ridges and cut by water into branching valleys, all eroded as one group with
901the Girdle. The named summits are held at exactly their heights and are the highest
902ground around them; each tarn sits on a shelf the valleys were not allowed to cut, which
903puts Sisters Tarn at 2,173 m.
904
866c7f96 2026-09-07 Pavel Safronov905#### Open questions
906
907- **The Spindle's height.** 3.2 km is a placeholder; an object dropped from its top
908 lands ~760 m antispinward of its base.
abc0aad0 2026-10-01 Pavel Safronov909- **z 430–496 km** is unauthored but for three of the farms (D-096). The circumference
910 outside the named peaks is no
03607270 2026-09-08 Pavel Safronov911 longer empty — The Girdle carries the range round the whole 314 km — but it is
912 unwalked: peaks with no names, and no rivers drawn off them yet.
866c7f96 2026-09-07 Pavel Safronov913
914## 2. Application architecture
915
916### 2.1 Stack
917
918- **Vite** + **TypeScript** (strict), no framework — the app is three canvases and
919 a control panel, and a framework would not earn its weight.
fc11b064 2026-09-08 Pavel Safronov920- **One layout breakpoint**, at 720 px: above it the panel is a column beside the
921 world, below it a drawer over it (D-043). The world is a full-bleed canvas in
922 both, because all three views are drag-to-look and a scrolling page would be
923 fighting them for every touch.
866c7f96 2026-09-07 Pavel Safronov924- **Three.js** for the exterior and interior 3D views.
925- **Canvas 2D** for the map view.
376f2ce6 2026-09-16 Pavel Safronov926- **Web workers** for world generation (world-generation.md §5): a pool of up to six,
e18dad04 2026-09-30 Pavel Safronov927 driven through **comlink**. Each must answer a ping before it is given the world. One
928 whose script fails, or that is still silent a few seconds after its siblings answered,
929 is replaced at once, up to four tries, then dropped, so a dead worker costs a few
930 seconds rather than freezing the load (D-080, D-092). Noise is **simplex-noise**, sampled in 3D on the
376f2ce6 2026-09-16 Pavel Safronov931 cylinder itself so nothing tears at θ = 0. Those two are the only runtime
932 dependencies besides Three.js.
62458672 2026-09-07 Pavel Safronov933- **GitLab CI → GitLab Pages**, publishing `dist/` as `static/`.
866c7f96 2026-09-07 Pavel Safronov934
935### 2.2 Module layout
936
937```
938src/
939 canon/
940 constants.ts single source of truth for every number in §1
941 geometry.ts (θ,z) <-> 3D, slat layout, map <-> surface
28f9a6bc 2026-09-07 Pavel Safronov942 atmosphere.ts the rotational density profile and its extinction (§1.5)
943 motion.ts how things fall in the rotating frame (§1.9.2) — the only
65484043 2026-09-08 Pavel Safronov944 evidence of the spin anywhere but the far cap window
376f2ce6 2026-09-16 Pavel Safronov945 terrain/ world generation, pure TypeScript — runs in workers, on the
946 main thread and under vitest alike (world-generation.md §5)
e7a9f9dd 2026-09-17 Pavel Safronov947 compile.ts the world compile: shapes, river profiles, lake levels
948 mountains.ts summits, ridge graphs, steady-state erosion, pinned summits
51c39d8b 2026-09-17 Pavel Safronov949 grid.ts grids on the surface: drainage, blur, sampling — shared by the above
950 desert.ts plateaus and mesas, dry washes, salt pans, abandoned shorelines
00ceeedb 2026-09-27 Pavel Safronov951 forest.ts where trees stand, how big they are, and what a canopy is
80bcc97a 2026-09-17 Pavel Safronov952 water.ts wind seas, fetch, river speed and foam: the water's physics
a088e5d5 2026-09-17 Pavel Safronov953 sea-state.ts every lake and sea's waves and whitecaps now, from the weather
954 ships.ts ship lanes, positions from the clock, the wave sum they ride
99a2821b 2026-09-29 Pavel Safronov955 rails.ts railway lines, and the grade their track keeps over the ground
80bcc97a 2026-09-17 Pavel Safronov956 falls.ts waterfall sheets, leaning antispinward as they fall
957 cache.ts the compiled world kept in IndexedDB between visits
376f2ce6 2026-09-16 Pavel Safronov958 field.ts the elevation function: one answer to "how high is it here"
959 noise.ts seeded simplex noise on the cylinder, and the hash under it
960 shapes.ts signed distance, smoothed lines, on the unrolled (z, θR) plane
961 tile.ts the tile quadtree scheme, and one tile's mesh data
962 palette.ts material weights to colour, as TypeScript and as GLSL
963 map-image.ts the map's picture of the world, rendered in bands
964 worker.ts one worker: compile, tiles, map rows
965 service.ts the pool, generations, the status dialog's progress, ground queries
866c7f96 2026-09-07 Pavel Safronov966 views/
9d5a061c 2026-09-27 Pavel Safronov967 palette.ts one colour per feature kind, shared by the map and the list
376f2ce6 2026-09-16 Pavel Safronov968 terrain-lod.ts the ground as a quadtree of tiles, refined around the eye
99a2821b 2026-09-29 Pavel Safronov969 craft.ts the tour's flyers as meshes: paragliders to giant airships, trains, spacecraft
970 tour-player.ts plays the tour's legs: the deal, the fades, the caption
00ceeedb 2026-09-27 Pavel Safronov971 forest-view.ts the trees near the eye: meshes, then cards, then the canopy skin
99a2821b 2026-09-29 Pavel Safronov972 tour/ the scenic tour, pure: no Three.js, flown by the views and the tests
973 geo.ts the floor's coordinates and the tower's frame, and the sums between them
974 director.ts a craft's track and bank, what is worth looking at, where the camera rides
975 interior-legs.ts the legs inside, found in the compiled world
976 exterior-legs.ts the legs outside, in kilometres, clear of the beam
977 plan.ts the deal: every leg once, no two of a kind in a row, 12–18 s each
866c7f96 2026-09-07 Pavel Safronov978 world/
376f2ce6 2026-09-16 Pavel Safronov979 schema.ts world.json v2 types + validation: features, not places
866c7f96 2026-09-07 Pavel Safronov980 instruments.ts sightline, viewshed, lighting probe, travel (§3.3)
a088e5d5 2026-09-17 Pavel Safronov981 weather.ts Tower's weather plan read at an hour: what it does, what it told people
3cc2b5bd 2026-10-04 Pavel Safronov982 photos.ts a saved shot of a 3D view: its numbers, checked (D-099)
866c7f96 2026-09-07 Pavel Safronov983 state/
9d5a061c 2026-09-27 Pavel Safronov984 store.ts selected point, time-of-day, spin phase, view mode
866c7f96 2026-09-07 Pavel Safronov985 views/
6bb061a6 2026-09-14 Pavel Safronov986 exterior.ts Three.js: hull, collector, beam, spin, point picker
376f2ce6 2026-09-16 Pavel Safronov987 interior-model.ts ground tiles, caps, bore, beam and haze, shared by both 3D views
866c7f96 2026-09-07 Pavel Safronov988 map.ts Canvas 2D: unrolled surface, slats, terminator, point picker
3e898b51 2026-09-28 Pavel Safronov989 interior.ts Three.js: shell geometry, the haze shader of §1.5, beam
866c7f96 2026-09-07 Pavel Safronov990 ui/
9d5a061c 2026-09-27 Pavel Safronov991 app.ts the whole panel: list, detail card, weather board, readouts, view switching
3e898b51 2026-09-28 Pavel Safronov992 eye-gauge.ts the interior's eye-height gauge and its landmarks of known height
28f9a6bc 2026-09-07 Pavel Safronov993 scales.ts slider mappings — kept out of views/ so the panel can label
3e898b51 2026-09-28 Pavel Safronov994 the eye-height gauge without pulling in Three.js
9d5a061c 2026-09-27 Pavel Safronov995 main.ts loads world.json and starts the app
3cc2b5bd 2026-10-04 Pavel Safronov996vite.config.ts also makes world.json from content/world.json (§3.1), and on a dev
997 server writes the author's saved shots to content/photos.json (D-099)
6364748a 2026-09-08 Pavel Safronov998
999tools/ node-only, never bundled; plain .mjs with no build step
376f2ce6 2026-09-16 Pavel Safronov1000 port-world.mjs the one-off port of v1's geography.json into world.json v2
b4b8e46c 2026-09-28 Pavel Safronov1001 build-pages.sh the Pages site: every branch built into one, with branches.json (D-073)
6364748a 2026-09-08 Pavel Safronov1002 screenshots.mjs drives the running application in a headless browser and
1003 photographs it into docs/screenshots/ (D-042)
3cc2b5bd 2026-10-04 Pavel Safronov1004 photos.mjs renders the shots in content/photos.json to photos/, the view alone,
1005 at 4K (D-099)
1006 browser.mjs what those two share: the browser, the warm world, waiting for terrain
866c7f96 2026-09-07 Pavel Safronov1007```
1008
1009`canon/constants.ts` is the spine. Every derived figure — period, rim speed, land
1010area, slat width — is *computed* from radius, length, slat count and target land
1011area, never hard-coded. Changing the radius changes the whole app coherently.
1012
1013### 2.3 State
1014
1015One small observable store. Views subscribe; nothing owns anything else.
1016
1017```ts
1018type TowerState = {
1019 point: { theta: number; z: number } | null // the picked location
1020 tod: number // 0..1, position in the diffuser day cycle
1021 brightness: number // W/m^2 mean, 30..320 -- the diffuser output setting
1022 spinPhase: number // 0..2pi, rotation for star motion
1023 spinning: boolean
1024 view: 'exterior' | 'map' | 'interior'
1025 probe: { from: SurfacePoint; to: SurfacePoint } | null
1026}
1027```
1028
1029The exterior and map pickers both write `point`; the interior view reads it. That
1030is the entire interaction loop.
1031
5f38efd0 2026-09-07 Pavel Safronov1032### 2.4 The exterior view
1033
1034Scene units are kilometres, so the code reads in canon numbers. Tower's axis lies
1035along world Z with the sun cap at z = 0, which puts a canon surface point at
1036`(R cos θ, R sin θ, z)` in the hull's own frame. The hull spins about Z and carries
1037that frame with it, so **picking resolves the ray hit back through
1038`worldToLocal`** — otherwise every point picked off a turning hull would be wrong by
1039the spin phase.
1040
1041Two deliberate departures from physics, both reading aids of the same kind as the
1042map's hillshade:
1043
1044- **Fill lighting.** Real sunlight here runs parallel to the axis, so Tower's flank
1045 is edge-on to it and renders very nearly black — accurate and useless. Two fill
1046 lights lift the hull enough to read its shape.
1047- **A visible beam.** In vacuum there is nothing between collector and cap to
8b6287ba 2026-09-07 Pavel Safronov1048 scatter light, so the converging beam would not be visible at all. It is drawn
1049 as rays because it is the thing the view is about.
472390e2 2026-09-09 Pavel Safronov1050- **A dark collector.** Both of its sides are dark, and for different reasons: the
1051 face pointed at Tower is a 245 K radiator, and the face pointed at the sun is a
1052 mirror, which shows the empty sky in front of it and not the sun behind the eye.
1053 What makes it legible is the sunlit rim of D-054 — the same 4 km ring the sun cap
1054 window sees from inside, drawn here as geometry rather than in a shader (D-055).
6bb061a6 2026-09-14 Pavel Safronov1055 The mirror face is lit **by the sun alone**, in its own shader: as a standard
1056 metal material it also reflected the fill lights, which do not exist, as a
1057 blue-white sweep across the disc (D-060). The sun sits on the axis behind the
1058 collector, so its glint shows only when looking nearly straight down that axis.
1059
e331ec2a 2026-09-28 Pavel Safronov1060**The stars are the interior's, and they are Earth's** (D-075). The sky is a sphere
1061around the scene painted with the same star field the windows use (D-056), sampled by
1062direction from the camera so the stars sit at infinity and hold still as the camera
1063orbits. The field is the Yale Bright Star Catalogue — every star to magnitude 6.5 — set by
1064the clock's date: the axis points at the sun, so the sky behind Tower is fixed by the sun's
1065ecliptic longitude, and turns once a year. Outside, ecliptic north is up (scene +Y), the one
1066roll square to the axis on every day. Spin does not turn it — the camera is not riding the
1067hull — and there is no daylight to adapt to, so it is drawn at full gain (D-060).
8b6287ba 2026-09-07 Pavel Safronov1068
908833aa 2026-09-28 Pavel Safronov1069**The hull can be tried in other dress** (D-076). **Rock** is the first: a cratered, lumpy
1070shell a few kilometres thick laid over the metal skin, never into it, with the windows
1071left clear. It is an experiment in how Tower might look, not canon — the mass alone would
6368edcf 2026-09-28 Pavel Safronov1072be a question for §1.2 — and it sits in the Hull switch beside True and X-ray. **Piping**
1073is the second (D-077): the skin plated in panels, banded every ~36 km with hoop pipes either
1074side, pipe bundles running between the bands on brackets, clustered blocks of plant, vents
1075whose grilles and plumes switch on and off at random, and thruster pods at each end that
1076fire rarely, with long flaring flames and real light on the hull. Everything is dusted,
1077matte where the dust lies, so the metal does not read as chrome. Every part is outside the skin, so the windows
ab6ae94f 2026-09-28 Pavel Safronov1078still see only Tower's inside. **Rock and piping** is the third (D-081), the two at once:
1079the reading is that rock was heaped over the plant as shielding, so it lies in banks tens
1080of kilometres across over about three fifths of the hull, half as tall again as the Rock
1081reading, with scarps at their edges; the plant
1082rooms and vents crowd into the bare ground between, the bands and pipe runs are laid
1083regardless and go under the rock, and the rock is dug clear round each thruster pod.
908833aa 2026-09-28 Pavel Safronov1084
8b6287ba 2026-09-07 Pavel Safronov1085Everything in the scene is captioned — collector, beam, both caps — with screen-space
472390e2 2026-09-09 Pavel Safronov1086labels. A dark disc and a cone of light are not self-explanatory, and the collector
8b6287ba 2026-09-07 Pavel Safronov1087is the least intuitive object in Tower: it is larger than the world it feeds.
5f38efd0 2026-09-07 Pavel Safronov1088
1089The default camera frames the whole system rather than Tower alone: the collector
1090is 244 km across and flies 320 km ahead, and it is the larger object.
1091
65484043 2026-09-08 Pavel Safronov1092**The hull has two readings, and the view switches between them** (D-047). **True**
6bb061a6 2026-09-14 Pavel Safronov1093is the outer skin: bare structure, with a window at each cap.
376f2ce6 2026-09-16 Pavel Safronov1094**X-ray** wraps the map's picture of the terrain onto the outside instead — the same
1095image the map draws, rendered live from the world (world-generation.md §9) — from outside Tower is
65484043 2026-09-08 Pavel Safronov1096structure, so what that texture shows is what is *inside*, which makes it a diagram
1097and not a view. Both are worth having and they are not the same claim, so the
aa201500 2026-09-14 Pavel Safronov1098control is a two-way switch rather than a checkbox. **True is the default**, and the
1099last reading chosen is remembered across reloads and view switches (D-061).
65484043 2026-09-08 Pavel Safronov1100
6bb061a6 2026-09-14 Pavel Safronov1101**The inside of Tower is the interior view's own model** (D-060), not a lookalike.
1102The displaced ground, both glazed caps, the far cap's bore and the beam are built
1103once in `interior-model.ts` and added to both scenes, so looking in through either
1104window from outside shows the same land, hazed by the same integral, as standing in
1105it does. Two things make that work from outside. The haze integral **clips its
1106segment to the air** — the part of the sightline inside the tube, between the sun
1107cap and the far cap's glass — so the kilometres of vacuum between the camera and the
1108window add nothing; from inside the clip is the whole segment and nothing changes.
1109And the windows are **see-through**: a pane that paints the computed sky from inside
1110is transparent from outside, carrying only the haze in front of it, so what shows
1111through is the scene that is really there — the land beyond the near cap, and the
1112collector and the stars beyond the far one. The shaders work in the tower's frame,
1113and the exterior hands them the world-to-tower transform each frame, because the
1114hull is turning and the air turns with it.
1115
14d35b7d 2026-09-16 Pavel Safronov1116The outer skin keeps its own mesh and its own two modes. It sits **a kilometre out from
1117the floor**, where D-044 puts the wall's outer face, with a ring closing the wall at each
1118end — generated ground goes below the datum, and a skin at the floor's own radius let
1119sea floors and tile skirts show through the hull (D-064). Three's cylinder runs u
376f2ce6 2026-09-16 Pavel Safronov1120around and v along, while the image is the other way round, so the UVs are rewritten
6bb061a6 2026-09-14 Pavel Safronov1121from the original attribute rather than derived from vertex positions — the seam
1122vertices are duplicated, and deriving an angle from them smears one column of
1123triangles across the whole image.
11a13dbf 2026-09-07 Pavel Safronov1124
15d933c9 2026-09-07 Pavel Safronov1125**The camera position persists** across reloads, alongside the active view, so
6bb061a6 2026-09-14 Pavel Safronov1126returning to the page returns to the vantage you left.
15d933c9 2026-09-07 Pavel Safronov1127
99a2821b 2026-09-29 Pavel Safronov1128**The scenic tour runs outside too** (D-085): spacecraft, a new one every 12–18 seconds —
1129skimming the hull, circling it against its spin, docking on it, looking in through the far
1130cap, over the collector's rim, down the beam, and Tower, the collector and the sun framed
1131together. A leg flies either in space, where the hull turns past at real speed, or in the
1132hull's own frame, where it holds still and the stars wheel. No craft enters the beam's cone.
1133
6bb061a6 2026-09-14 Pavel Safronov1134**There are no place markers** (D-060). Selecting a place still swings the camera
1135round to it, and a cap is framed from about 40° off the axis so its window faces the
1136camera; the sidebar and the map carry the places themselves.
11a13dbf 2026-09-07 Pavel Safronov1137
28f9a6bc 2026-09-07 Pavel Safronov1138### 2.4 The interior view — built
1139
376f2ce6 2026-09-16 Pavel Safronov1140Scope, since D-062: **real geometry, and ground generated to match it.**
28f9a6bc 2026-09-07 Pavel Safronov1141
376f2ce6 2026-09-16 Pavel Safronov1142Real: the ground is the actual cylinder, curving up on both sides and closing
1143overhead, built from generated tiles (world-generation.md §6).
65484043 2026-09-08 Pavel Safronov1144**Stars only through the far cap** — the wall is sealed (§1.4), so for 539 of the
e331ec2a 2026-09-28 Pavel Safronov1145540 km the sky is land and light. The far cap is glazed (D-045) and the sky beyond it is
1146the real one (D-075): the Yale Bright Star Catalogue, baked into cells on a cube's faces
1147so a pixel reads only the nine cells round it, and looked up by view direction turned
1148about the spin axis by the spin phase — one turn every 7 min 29 s, the point on the axis
1149genuinely motionless — and then by the date, which sets where the antisolar point is.
28f9a6bc 2026-09-07 Pavel Safronov1150
376f2ce6 2026-09-16 Pavel Safronov1151The ground is a **quadtree of tiles**, each a 65-vertex grid bent onto the cylinder
1152in a worker: 34 km tiles on the far side of the world, 33 m tiles underfoot, so vertices
1153are half a kilometre apart overhead and half a metre apart at your feet. A tile splits
1154once the eye is within 1.8 tile-widths of it, and only once all four of its children
1155have arrived — detail pops in, and the ground is never missing. The tiles carry
1156material weights rather than colour, and the shader turns them into colour from the
1157same palette the map uses, with v1's mottling and a little grain near the eye. There
1158is still no scenery: no buildings, no trees, no water surface of its own. Those are
1159phases 3–7 of world-generation.md.
28f9a6bc 2026-09-07 Pavel Safronov1160
1161**Haze is the shader, and it is integrated rather than faked.** Every fragment
1162samples the rotational density profile 24 times along the ray to the camera and
1163extinguishes per channel — red survives twice as far as green, blue half as far,
1164which is what makes distance blue rather than grey. From the floor it reproduces
1165§1.8 from the inside: 78% straight up against 31% for the same 100 km along the
1166ground, printed in the readout so the claim can be checked rather than believed.
1167The airlight the haze adds is *neutral*; tinting it blue double-counts the
1168wavelength dependence and turns even the desert mauve (D-034).
1169
65484043 2026-09-08 Pavel Safronov1170**Nothing inside the scene rotates**, because the observer, the ground and the air
e27aaf20 2026-09-08 Pavel Safronov1171all co-rotate. What falls carries the spin, and §1.9.2 is lopsided about how: rain
1172leans a fixed 1.5° whatever the cloud, because drag pins its speed, while only free
1173fall keeps accelerating and so keeps leaning. **The waterfall is the compass; the
1174rain is barely a hint.** Rain is no longer drawn (D-049) — 1.5° is not a picture,
1175and the pinwheel below does the job it was standing in for. The physics stays in
1176`canon/motion.ts` and stays tested; it was only ever the rendering that could not
1177carry it.
65484043 2026-09-08 Pavel Safronov1178
9c891d2e 2026-09-08 Pavel Safronov1179**The one thing that does turn is outside.** The sky through the caps does not
65484043 2026-09-08 Pavel Safronov1180co-rotate, so it wheels once every 7 min 29 s about the motionless star on the axis
3e898b51 2026-09-28 Pavel Safronov1181(D-045). It is the only evidence of the spin in the view. Both caps are windows
9c891d2e 2026-09-08 Pavel Safronov1182(D-050), so it can be had looking either way along the axis — deepward into empty
1183space, or sunward past the black disc of the collector.
28f9a6bc 2026-09-07 Pavel Safronov1184
376f2ce6 2026-09-16 Pavel Safronov1185The observer stands on the terrain by asking the same elevation function the tiles are
1186built from, at full detail. D-035's readback of a raster is gone with the raster.
1187
1188**Keyboard flight**: W A S D or the arrows move along the heading, E and Q climb and
1189descend, shift is five times faster. Speed is proportional to height above the ground,
1190so the ground passes at the same apparent pace from a metre up or ten kilometres.
28f9a6bc 2026-09-07 Pavel Safronov1191
3e898b51 2026-09-28 Pavel Safronov1192Instruments in the view: eye height from 1.7 m to the edge of the beam, 48.4 km up (D-084), with the local gravity
1193beside it — a vertical gauge up the view's right side, marked with real-world things of
1194known height so the number means something (D-082) — the five canon illumination settings of §1.3, a field of view fixed at 60° (D-083), and captions on every place still visible through the haze.
28f9a6bc 2026-09-07 Pavel Safronov1195Selecting a place walks the observer to it (D-038) — the haze horizon closes at
1196100–150 km, so turning to face something usually just points at haze.
1197
c954a775 2026-09-28 Pavel Safronov1198**Both caps are glazed** (D-045, D-050), framed by a lattice of identical equilateral
1199triangles 8.3 km on a side (D-078), with a vertex on the axis where six meet. That is the
1200pitch of the polar checker it replaced (D-041), so it is still the only object in the world
1201with a known size and still doubles as a scale for judging distance, read against sky.
6bb061a6 2026-09-14 Pavel Safronov1202The exterior draws these same caps — the same meshes and shaders, not a copy of
1203them (D-060).
65484043 2026-09-08 Pavel Safronov1204
1205The far cap's glazing is set a kilometre into its own frame, so from inside there is
1206a **1 km reveal** around it. That is the only place the wall depth of D-044 can be
1207seen from within the world, which is why it is the only place it is drawn.
28f9a6bc 2026-09-07 Pavel Safronov1208
80bcc97a 2026-09-17 Pavel Safronov1209**Water is geometry** (D-066). Every lake, sea and river is a surface at its own level
1210— a level in Tower is a constant radius, so a lake curves up with the floor — drawn over
1211the ground with the depth test finding the shoreline, and the ground under it drawn as
1212bed. Deep water is dark and shallow water shows the bed through it. Waves are sized from
a088e5d5 2026-09-17 Pavel Safronov1213each body's wind — Tower's weather plan, or the body's usual wind when nothing is
1214scheduled (D-067) — and the fetch it blows over, by the relations fitted to real seas, and
1215drawn as six components that displace the surface near the eye and shade it beyond;
80bcc97a 2026-09-17 Pavel Safronov1216rivers carry ripples downstream at the speed Manning's equation gives them, and turn
a088e5d5 2026-09-17 Pavel Safronov1217white on their rapids. Whitecaps cover the share of a sea the wind speed gives. Water
1218mirrors the hazed land overhead, and glints where it mirrors the beam.
1219
00ceeedb 2026-09-27 Pavel Safronov1220**The forest is trees** (D-071). Greatwood is a density field — stems per hectare, thinned
1221at its edges, opened where Tower left meadows, stopped by water, rock and the treeline — and
1222the trees themselves are found by a rule rather than kept in a list, so the same trunks
1223stand in the same places for everyone who walks there. Within a few hundred metres they are
1224meshes; out to three quarters of a kilometre, cards turned to face the eye; beyond that the
1225tile carries a canopy skin at the canopy's own height, which sinks back onto the ground as
1226you approach. **The Tall Wood** is 52 km² of 90–115 m giants near the Capital, placed once
1227from the world's seed: a landmark standing 75 m proud of the wood around it.
1228
a088e5d5 2026-09-17 Pavel Safronov1229**Ships** sail the ring seas (D-067): procedural hulls, mainsails and jibs, instanced, each
1230on a lane round the world at a position that is a function of the clock, riding the waves
1231drawn under it with the mainsail set to the wind. While a gale or storm is published for
1232their sea in time to get in, they are in harbour — off the water, since harbours are not
1233drawn yet; a squall announced too late catches them out.
1234
99a2821b 2026-09-29 Pavel Safronov1235**The scenic tour** (D-085, replacing D-068's) flies the view itself, on the world's flyers:
1236a new one every 12–18 seconds, dealt at random, fading through black between them — a
1237paraglider on a summit's flank, a glider in a thermal, light aircraft and seaplanes, an
1238airliner round the Girdle, airships low down and giants near the axis, one of them circling
1239the sun outside the beam, trains on both railways, ships in fair weather and foul. Each
1240craft exists for its leg. The camera rides in it or chases it, banks with it, and is
1241pointed by a director at whatever is worth seeing from there — scored by the same haze
1242integral the view is drawn with, so it never turns to stare at something the air has eaten.
1243The legs are worked out from the world, so they follow its edits, and the screenshot tour
1244photographs them.
80bcc97a 2026-09-17 Pavel Safronov1245
1246**Waterfalls lean.** A river's profile steps where it cannot slope — off a range, into
1247The Deep — and a step is a fall with a gorge below it. The falling sheet leaves the lip at
1248the river's speed and drifts antispinward by the free-fall drift of §1.9.2, so the
1249Long Water's 680 m fall off the range lands about 75 m antispinward of its lip. It is the
1250first thing in the view that shows the spin by leaning, which §1.9.2 always said the
1251waterfall would be.
1252
1253The beam is drawn after all water: it is always in front of it, and drawn first it was
1254blended under the far side's seas.
866c7f96 2026-09-07 Pavel Safronov1255
1256---
1257
9d5a061c 2026-09-27 Pavel Safronov1258## 3. The world file, and how it changes
866c7f96 2026-09-07 Pavel Safronov1259
1260The app is an instrument for writing the novel as much as a thing to look at. It
1261must answer questions like *can the far face be seen from the midpoint?*, *where
9d5a061c 2026-09-27 Pavel Safronov1262does a central embassy go?*, *can a lake overhang?* — and their answers are placed,
1263named and kept in the world file.
866c7f96 2026-09-07 Pavel Safronov1264
9d5a061c 2026-09-27 Pavel Safronov1265### 3.1 One file, changed in the repository
866c7f96 2026-09-07 Pavel Safronov1266
9d5a061c 2026-09-27 Pavel Safronov1267**`content/world.json` is the world, and the only copy of it** (D-072). The author
1268writes alongside Tower rather than in it, and changes the world by talking it over with
1269Claude, who edits the file; git keeps its history beside the prose. There is no editor
1270in the browser, no local draft in `localStorage`, and no import or export.
866c7f96 2026-09-07 Pavel Safronov1271
9d5a061c 2026-09-27 Pavel Safronov1272| | |
1273|---|---|
1274| World content | `content/world.json`, committed; the app only reads it |
1275| What the app loads | `world.json`, made from it by `vite.config.ts`: every `notes` emptied, every feature with `"public": false` left out |
1276| Instruments (§3.3) | the sightline probe |
1277| Output | permalinks to a point or place |
1278| Panel | view controls, place list, a read-only detail card, the weather board |
866c7f96 2026-09-07 Pavel Safronov1279
9d5a061c 2026-09-27 Pavel Safronov1280The published `world.json` is **derived, never committed**: the dev server serves it
1281fresh on every request and reloads an open page when `content/world.json` is saved, and
1282the build writes it into `dist/`. There is no second copy to keep in step. There is
1283no backend — GitLab Pages is static — and none is needed: the loop is edit, commit,
1284push, and the published site serves it.
a088e5d5 2026-09-17 Pavel Safronov1285
9d5a061c 2026-09-27 Pavel Safronov1286Everyone sees the same app. Until D-072 there was a writer mode (the default) and a
1287reader mode (`?reader=1`); the query parameter now does nothing.
866c7f96 2026-09-07 Pavel Safronov1288
3cc2b5bd 2026-10-04 Pavel Safronov1289**One exception, and it is not the world** (D-099): on a dev server the author has a
1290button and a key that save the open view as a photograph, into `content/photos.json`,
1291written by the dev server. It is not in the build, so readers still see one app, and it
1292changes nothing about the world: a photograph is a camera position and a moment.
1293
866c7f96 2026-09-07 Pavel Safronov1294### 3.2 The world file
1295
1296```jsonc
1297{
376f2ce6 2026-09-16 Pavel Safronov1298 "version": 2,
1299 "seed": 1729, // every feature's randomness mixes this in
1300 "ground": { "baseM": 60, "reliefM": 260, "notes": "" },
1301 "features": [{
1302 "id": "the-deep", // permalink target; see below
1303 "name": "The Deep",
99a2821b 2026-09-29 Pavel Safronov1304 "kind": "mountains|lake|sea|river|desert|forest|settlement|road|path|railway|embassy|tower|landmark|note|region",
376f2ce6 2026-09-16 Pavel Safronov1305 "geometry": { "type": "polygon", "points": [[theta, z], ...] },
1306 // or point, polyline, or band { "zFrom", "zTo" } for anything ringing the world
866c7f96 2026-09-07 Pavel Safronov1307 "blurb": "public description, shown to readers",
1308 "notes": "the author's working notes — NEVER shipped",
376f2ce6 2026-09-16 Pavel Safronov1309 "public": true, // false = not ready to exist publicly
1310 "seed": 1437950893, // written once at creation, never from the id
1311 "levelM": 120, "depthM": 330, "basin": "flooded", "shoreM": 11000
1312 // ...and whatever parameters the kind has: world-generation.md §3
a088e5d5 2026-09-17 Pavel Safronov1313 }],
1314 "weather": { // Tower's published plan (D-067)
1315 "cycleDays": 28, // the plan repeats; 0 for never
1316 "events": [{
1317 "id": "deepward-sea-storm", "target": "deepward-sea", "kind": "calm|breeze|gale|storm",
1318 "start": { "day": 20, "hour": 18 }, "durationH": 30,
1319 "wind": { "directionDeg": 60, "speedMS": 30 }, // toward; 0 deepward, 90 spinward
1320 "publishedAt": { "day": 17, "hour": 9 },
1321 "revisions": [{ "at": { "day": 21, "hour": 6 }, "kind": "gale",
1322 "wind": { "directionDeg": 60, "speedMS": 18 }, "reason": "..." }]
1323 }]
1324 }
866c7f96 2026-09-07 Pavel Safronov1325}
1326```
1327
376f2ce6 2026-09-16 Pavel Safronov1328Every kind has the same `geometry` field, so the map, the list and the editor treat
1329them one way; what a kind adds is parameters beside it, and a phase of
1330world-generation.md adds a parameter only when a generator reads it. v1 files, with
1331`places`, load as empty — there is no backwards compatibility (D-062).
1332
866c7f96 2026-09-07 Pavel Safronov1333**Two text fields, deliberately separate.** `blurb` is written for readers and
9d5a061c 2026-09-27 Pavel Safronov1334ships; `notes` is the author's working thinking and never reaches the app. One field
1335with a flag would have made every note a publication accident waiting to happen.
866c7f96 2026-09-07 Pavel Safronov1336
9d5a061c 2026-09-27 Pavel Safronov1337**Ids are permalink targets.** Once a place has been linked to, its id should not
1338change even if its name does; a river names what it flows into by id, so renaming an
1339id means rewriting those references too.
866c7f96 2026-09-07 Pavel Safronov1340
1341Coordinates are canon (θ radians, z metres, §1.7) — never map pixels, so the file
1342survives any change to how the map is drawn.
1343
1344**The `public` flag is a privacy trap worth naming.** Working notes ("embassy here?
9d5a061c 2026-09-27 Pavel Safronov1345check sightline to the cap") are kept out of the app, and a `"public": false` feature
1346is left out of it entirely. But **`content/world.json` is committed to a public
1347repository**, notes and unpublished features included — exactly as
1348`content/geography.json` was before it — so anything in it is public to anyone who
1349reads the source. The flag keeps things out of the map, not out of sight. Whether
1350private notes should live somewhere else — a private repo, or a second one — is the
1351author's call and is deliberately unresolved.
376f2ce6 2026-09-16 Pavel Safronov1352
866c7f96 2026-09-07 Pavel Safronov1353### 3.3 Instruments
1354
9d5a061c 2026-09-27 Pavel Safronov1355The measuring tools answer questions the novel actually raised. Only the sightline
1356probe is built; the rest are planned:
866c7f96 2026-09-07 Pavel Safronov1357
1358- **Sightline probe.** Pick two points; get surface distance, straight-line
1359 distance, optical depth, transmission, and a plain verdict (*crisp / hazy / ghost
9d5a061c 2026-09-27 Pavel Safronov1360 / invisible*). This is the tool that answered §1.8, and the single most
1361 illustrative thing in the app.
866c7f96 2026-09-07 Pavel Safronov1362- **Viewshed overlay.** From a selected point, shade the whole map by transmission.
1363 It renders the axis-versus-overhead asymmetry as one picture, which is worth more
1364 than the table in §1.8.
1365- **Lighting probe.** At a point, illumination across the day cycle at the current
1366 brightness setting (§1.3) — for writing a scene at a specific hour.
1367- **Travel.** Surface distance and journey time between points at chosen speeds,
1368 including whether the route crosses a slat.
1369- **Sky-at-a-time.** Star field, beam position and Earth transits for a given point
1370 and moment, so a described sky is a correct sky.
1371
1372### 3.4 What readers get
1373
1374The public link is the finished map: embassies, towns, lakes, named regions — the
1375permanent things, behaving like any map application. Plus the exterior view, the
1376interior view from any point, and permalinks so a reader can be handed a place and
9d5a061c 2026-09-27 Pavel Safronov1377a moment. Reading the world, not editing it — which, since D-072, is what the author
1378gets too.
866c7f96 2026-09-07 Pavel Safronov1379
1380## 4. Phases
1381
13821. **Design** — this document and `decisions.md`. ← current
13832. **Scaffold** — Vite/TS/Three, CI to Pages, `canon/` implemented and unit-tested.
5f38efd0 2026-09-07 Pavel Safronov13843. **Exterior** — ✅ hull, caps, collector, beam, spin, and hull point picking.
866c7f96 2026-09-07 Pavel Safronov13854. **Map** — unrolled surface, slat rendering, picking, sync with exterior.
3e898b51 2026-09-28 Pavel Safronov13865. **Interior** — ✅ shell geometry, the haze shader, the beam, eye height,
65484043 2026-09-08 Pavel Safronov1387 and the five illumination settings. Stars, but only through the far cap window.
866c7f96 2026-09-07 Pavel Safronov13886. **Writer mode** — ✅ *built ahead of 3–5, at the author's request, because the
1389 world needs developing before there is anything to render.* Map view, place
1390 editing for all thirteen kinds, points/polylines/polygons, localStorage
1391 autosave, backup and static exports, import, and the sightline probe.
9d5a061c 2026-09-27 Pavel Safronov1392 *Removed by D-072: the world is now changed in `content/world.json`, and only
1393 the sightline probe remains.*
13947. **Content pipeline and reader mode** — ✅ reader and writer modes (D-011, one
1395 mode since D-072);
376f2ce6 2026-09-16 Pavel Safronov1396 permalinks (D-010). The terrain pipeline of D-019 — `content/geography.json` and
1397 `npm run terrain` — is replaced by live generation (below).
6364748a 2026-09-08 Pavel Safronov13988. **Polish** — mobile ✅ (the sidebar is a drawer below 720 px, D-043) and a
1399 screenshot tour that photographs all ten views through the UI, D-042.
fc11b064 2026-09-08 Pavel Safronov1400 Remaining: transitions, performance.
866c7f96 2026-09-07 Pavel Safronov1401
28f9a6bc 2026-09-07 Pavel Safronov1402All five view phases are built. Phase 2's `canon/` landed with phase 6, since the
1403map could not be drawn without it.
866c7f96 2026-09-07 Pavel Safronov1404
1405**Shareable permalinks are implemented** (phase 7) — the app has
1406readers, and "stand here and look at this" is the whole reason it exists as a
1407companion piece. Named locations from the novel should be markable on the map for
1408the same reason.
1409
376f2ce6 2026-09-16 Pavel Safronov1410**Live world generation** — in progress, planned in world-generation.md (D-062).
1411Phase 1 ✅ (D-063): world file v2, the elevation function, the worker pool, tiled
e7a9f9dd 2026-09-17 Pavel Safronov1412ground, the status dialog, keyboard flight, the map drawn from the features. Phase 2 ✅
80bcc97a 2026-09-17 Pavel Safronov1413(D-065): mountain ranges of summits, ridges and eroded valleys, and summit editing. Phase 3
a088e5d5 2026-09-17 Pavel Safronov1414✅ (D-066): water as surfaces with waves and flow, and waterfalls that lean. Phase 4 ✅
51c39d8b 2026-09-17 Pavel Safronov1415(D-067): Tower's weather plan with revisions, a day on the clock, and ships. Phase 5 ✅
00ceeedb 2026-09-27 Pavel Safronov1416(D-069): the desert's mesas, dunes, washes, salt pans and shorelines. Phase 6 ✅ (D-071):
1417Greatwood as individual trees, its meadows, and the Tall Wood of giants. Phases 7–8 bring
1418settlements and roads — procedural scenery this section used to list as out of scope. Clouds and rain stay
376f2ce6 2026-09-16 Pavel Safronov1419undrawn (D-049).
e331ec2a 2026-09-28 Pavel Safronov1420
1421## 5. Backlog
1422
1423Things decided to be worth coming back to, not scheduled.
1424
1425- **The pinwheel's motionless star** (author, 2026-09-27). §1.4 promises one motionless
1426 star at the centre of the turning sky, and the real sky (D-075) has none there — the
1427 antisolar point walks a degree a day. The placed star in `STAR_GLSL` is **not canon**
1428 and stays only until this is revisited: a motionless point, a beacon Tower hangs there,
908833aa 2026-09-28 Pavel Safronov1429 or nothing.
f16f084e 2026-09-28 Pavel Safronov1430- **The sun's share of the beam** (D-079). The rod now runs on past the sun at 70% of
1431 itself, which says the shoal takes only 30% — but the ground is still lit as if the sun
1432 took the whole beam. Canon has to settle the split, and the light budget with it.
ab6ae94f 2026-09-28 Pavel Safronov1433- **The exterior's dress** (D-076, D-077, D-081). Rock, Piping, and Rock and piping are
1434 experiments, labelled as such in the Hull switch. Pick one or keep the bare skin — and
1435 if a heavy one stays, answer for its mass. The combined dress gives the rock a reason
1436 (shielding heaped on the plant), but taller and over three fifths of the hull it weighs
1437 about what D-076's shell does, so the mass question stands.
99a2821b 2026-09-29 Pavel Safronov1438- **Traffic** (D-085). The tour's craft exist only for their legs: nothing flies, sails the
1439 sky or runs the railways when the tour is not watching, except the ships. A world with
1440 timetables — trains on the lines, airliners between the stations, giants on their slow
1441 circuits — would be the honest next step, and would let a reader standing anywhere see
1442 them go by.
1443- **The Axial Line's 7% grade** (D-086), where it comes down off the plateau into Greatwood,
1444 is a rack railway's grade, not an adhesion one. Regrade it round the slope, or say it is a
1445 rack section.
1446- **The giant airships** (D-087) are a consequence worked out from the thin air near the
1447 axis, not canon. Whether Tower's sky has them is the author's call.
42b4554e 2026-09-29 Pavel Safronov1448- **The moon's light** (D-088). It is drawn as fed by Tower lifting the banked beam, so the rod
1449 is the same either side of it; the sun instead takes its share from the rod and leaves it
1450 dimmer past it (D-079). Canon could have the moon do the same, or settle why it does not.
e18dad04 2026-09-30 Pavel Safronov1451- **The sun seen from the ice** (D-091). Tower aims none of the sun's light at the fast
1452 ice, so by §1.3.1's own rule the sun should look dim from there — a shoal lit toward
1453 everyone else. It is drawn as bright as from anywhere. Whether the sun going out over the
1454 ice each evening is seen from the ice as a blaze or as a dark disc in lit air is the
1455 author's call.
abc0aad0 2026-10-01 Pavel Safronov1456- **The farms' light at night** (D-095). Lighting the fields after sunset keeps the beam
1457 from being fully banked, and the rod's glow with it: about 0.4 W/m² more everywhere at
1458 sunset, nothing by six hours after. The app's night light does not include it yet.
1459- **3D models for the things drawn from plain shapes** (author, 2026-09-30). Everything that
1460 moves or stands on the land is built in code from boxes, cones and spheres. The author will
1461 supply real models; the app needs a way to load them. The list, with sizes as drawn:
1462 - *Tour craft* (`views/craft.ts`, metres, nose along +x, top along +y): paraglider (wing
1463 ~10 m), glider (17 m span), light aircraft (11 m span), seaplane, helicopter (11 m rotor),
1464 airliner (42 m), airship (120 m), giant airship (420 m), locomotive (22 m), railway
1465 carriage (25 m), spacecraft (~80 m).
1466 - *Instanced, drawn by the hundred or thousand*: the sailing ship as hull, mainsail and jib
1467 (~180 of them, 8–45 m; the mainsail swings about the mast, so it must stay a separate
1468 part with the mast at the origin), conifer, broadleaf and giant tree (up to 6,000 each,
1469 `views/forest-view.ts`), and the flat tree cards for distant woods (up to 75,000 — an
1470 image, not a model).
1471 - *Not candidates*: terrain, water, ice, falls, the railway viaducts, the hull dressings, the
1472 collector, beam, sun, moon and windows, all of which are shaped by the world.
1473
1474 The plan: glTF binary (`.glb`) files in a `models/` folder, a small manifest naming which
1475 kind each replaces and how it faces, and the built-in shape as the fallback for any kind
1476 without one, so models can arrive one at a time. Imported models go through Tower's own
1477 lighting and haze — otherwise they are lit wrong and never fade into the distance — keeping
1478 each part's colour at first, and image textures once a textured variant of the shader
1479 exists. Budgets: tour craft can be detailed (tens of thousands of triangles); ships a few
1480 thousand; trees a few hundred. Models must be licensed for redistribution, since the app is
1481 published.