Satellite Briefing 卫星简报

The Map Still Says Sea·38s·Lemo-Opuscarby Lemomo

Real satellite imagery of a real place, graded down to an analyst's grey, with thin white measurement lines drawn on the ground: a lock-on reticle, outlines, a range line, one reading. One continuous zoom built from stacked imagery plates carries the viewer from orbit to the ground and back, and time can run inside one locked frame.

The demo: A satellite follows the map to the Aral Sea and finds a desert; the only part that came back is the part someone dammed.

Climate & environmentInvestigations & news explainersGeography & history
Style prompt · STYLE.md

Real satellite imagery of a real place, graded down to an analyst's grey, with thin white measurement lines drawn on the ground: a lock-on reticle, outlines, a range line, one reading. One continuous zoom built from stacked imagery plates carries the viewer from orbit to the ground and back, and time can run inside one locked frame. References (grammar only): open-source investigation films that annotate satellite pictures (thin lines on imagery, one claim per screen, measuring as the plot); the Eameses' Powers of Ten (one continuous change of scale with a readout); NASA Earth Observatory's World of Change (one place, time running). Copy none of their layouts, typefaces, icons or music; never name them in the film.

1. Essence, and what it is not

  • The ground is a photograph: real, licence-clean, georeferenced satellite or aerial imagery of the actual place. Nothing on the ground is drawn, stylised or generated.
  • Two layers, two truths: the imagery is what the satellite saw; the hairlines are what the analyst measured. Marks are thin, white, sparse, and sit on real coordinates.
  • The grade moves with the story: orbit in true colour, the analysis layer in grey, colour back only where the story turns.
  • Scale is the camera: one zoom from orbit to the ground built from nested plates, with an altitude readout and a scale bar from the same camera.
  • One finding per screen, in the single accent colour.

Not Data Storytelling (a chart on paper), not Sci-fi Hologram HUD (no glowing wireframes or invented chrome), not Blueprint, not Isometric Infographic (real nadir or oblique views, no diorama), not a keynote (no slides, header bars or chapter numbers).

2. Materials & rendering

  • Plates: georeferenced rasters with a lon/lat box, sampled in a shader where the camera ray hits the ground, nested by resolution (world → region → detail) with feathered edges so finer plates dissolve in as the camera descends.
  • Globe: ray–sphere from a perspective camera, a thin atmosphere rim, limb shading at orbit only; compute |C|² − R² in double precision (float32 fails below a few tens of km).
  • Time: dated plates share one grid. A soft scan front (a satellite pass, never a hairline) swaps them: north → south forward, south → north for a rewind. Growth can run outward from the old edge, ordered by a distance map.
  • The analyst's grade (one uniform from colour to grey): luminance with local contrast and clarity, a shoulder so salt, snow and cloud stay below white, toned blue-black → cool silver up to ~65 % grey, a fifth of the chroma. White belongs to the marks.
  • Marks: a 2D overlay through the same world → screen function: hairlines 1.2–2.6 px with a dark halo, dashes for history and claims, brackets, ticks, leader lines. Lines draw on; outlines print behind the scan.
  • Screen space only for instruments (altitude, scale bar, imagery credit) and the transcript strip. Everything else is anchored to the ground.
  • The claim layer is a printed map drawn in the shader from a distance field of the old outline: paper grain a few pixels wide at any zoom, halftone ink, coast and waterlines, graticule, the serif name.
  • Post: light grain in ffmpeg, a vignette, directional blur only on whip pans.

3. Colour logic

  • Neutral ground: grey, roughly 3–65 % in value. White means measured.
  • One accent (warm, e.g. amber) for the single reading on screen, never decoration.
  • A second hue may mark the claim the imagery tests (a map, a plan, a promise): flat, cartographic, never used for anything measured.
  • True colour is evidence: at orbit, and again only where the story turns (the field that greened, the water that returned).
  • No false-colour ramps over the imagery.

Example (our demo): ground #070B0E → #A1A7A9, marks #F2F5F6, reading #FFBE55, map blue rgb(46, 112, 206).

4. Type & subtitles

  • Roles: a light condensed grotesk for the reading (96–130 px, e.g. Barlow Condensed); a monospace for instruments and dates (20–34 px, e.g. IBM Plex Mono); a sans for labels in the film's language (24–42 px); a serif only for the claim layer and the title. OFL, self-hosted, CJK subset to the characters used.
  • Labels attach to the ground with a leader line. The reading sits in the right third beside what it measures, label above, source note below ("Landsat, measured").
  • Subtitles are a transcript strip at the bottom left: a 2 px white rule, a dark plate fading right, left-aligned, each line on one line (measure with the real font, nowrap; split a long sentence into two cues). If the film is bilingual, the film's language on top.
  • Nothing below 20 px at 1080p, the imagery credit included.
  • Hold subtitles ≥ max(1.8 s, speech + 0.6 s); a rolling counter reports its landing value; labels stay ≥ characters ÷ 4.5 + 1.5 s (CJK).

5. Motion quality

  • The camera never stops: distance interpolates in log space, segments ease, holds keep a 2–5 % creep or a slow rotation. No frozen frame longer than a second.
  • Marks arrive by being made: a line grows, an outline prints behind the scan, a counter rolls and lands with a small pop, a reticle snaps with overshoot.
  • Time changes are scans, never dissolves; their spacing tells the speed, and the camera moves with them (accelerating as the steps shorten, braking on the last).
  • Never moves: the ground under its annotations, the instrument positions.

6. Camera grammar

Move What it expresses Can serve
Oblique orbit, limb in frame scale, context, distance an opening; a return; a title card
Dive (log zoom, tilt to nadir) going to look for yourself a reveal; checking a claim
Locked nadir frame, slow creep evidence, comparison time running in one place; a measurement
Push-in on a point singling out one town, one dam, one field
Track along a line travelling a distance measuring; a river, a road, a border
Whip pan with blur a new subject at the same altitude the counter-example; "meanwhile"
Climb back to orbit consequence, perspective an ending; a summary

At key moments the subject fills a third of the frame height; reading right, subtitles bottom left, instruments in the corners. Transitions: scan-line swaps, a map layer switched off, zooming through plates, whip pans, the reticle opening into a title card. No crossfades between unrelated places, no hard cuts inside a zoom.

7. Sound palette

  • Telemetry: FM pings (a lock-on ping worth bringing back), dry ticks on the grid that divide to accelerate, noise scans (rising for a rewind, falling forward), servo whines, a ratchet for a range line.
  • Weight: timpani, bass drum, gran cassa, bowed cymbal, a tam-tam reversed when time runs backwards. Measurements land on a pitched hit.
  • Synthesis: a pulse bass with audible 2nd and 3rd harmonics, detuned-saw pads under a low-pass, risers for dives.
  • Beds: orbit hum, radio hiss, data chatter; the place's own ambience (wind, water, a far horn), sparingly, often as J- or L-cuts.
  • One option for the shape: keep the palette dry (electronics, skins, metal) and let one wet timbre (glass, water, bowed metal) mark the turn.
  • Silence: music and foley stop, a thin bed stays, impacts may decay into it; the first sound after it is the turn. A short suck-out (0.2–0.45 s, music and foley down ~25 dB) before the heaviest impacts makes them land.
  • Mix: voice ~10 dB over music; the two or three designed impacts are the loudest moments (out of the bus compressor, with mid-range body, e.g. a low-brass stab); 20–60 Hz about 15 dB under the full band (high-pass ~40 Hz, impact weight at 60–120 Hz); −14 LUFS, true peak ≤ −1.2 dB. Voice: a calm analyst, short declarative lines.

8. Native moves

  • The map against the photograph. The camera falls into the printed map of the claim; a scanner bar tears it away and the ground is underneath; the name outlives the page. Fits content like: a lake still on maps but gone; a cleared concession forest; a planned city never built.
  • Time rings in a locked frame. Dated plates scan in one by one; each leaves its outline, the band lost between two rings flashes. Fits content like: a glacier's retreat; a city's sprawl; a fire scar season after season.
  • The range line. Mark the destination, grow a ticked line from A to B, chase the tip while the reading counts up, land on the number, pull back to show the whole distance. Fits content like: how far a shore moved; a village to its well; a camp to the border.
  • The dive and the climb. One zoom from orbit to the ground, or back. Fits content like: locating anything; a scale reveal; an ending that returns one place to the planet.
  • Colour returns where the story turns. Only the subject regains true colour inside the grey. Fits content like: an irrigated field; a refilled reservoir; a regrown forest.
  • The reticle becomes the frame: the lock-on brackets open out to frame a title card or the last reading.

9. Pitfalls of the medium

  • Licences: not usable: Google Earth/Maps, Bing, Esri World Imagery, Mapbox Satellite, Planet, Maxar, news photos, AI-generated imagery. EOX Sentinel-2 cloudless is CC BY 4.0 only for 2016 (2018 onward is NC). Raw Copernicus Sentinel data need "Contains modified Copernicus Sentinel data [year]"; check the user's rules. Public domain or free with credit: USGS Landsat (1972 on, worldwide), USGS NAIP (US, ~1 m), NASA Blue Marble, MODIS, VIIRS. Burn a readable credit into the picture and list every asset in CREDITS.
  • Finding imagery for a new place: search by bounding box and date in the Planetary Computer STAC (Landsat C2, Sentinel-2 L2A; no account) or USGS EarthExplorer; MODIS/VIIRS and Blue Marble from NASA GIBS; outlines from Natural Earth. Log every request. OSM (ODbL), CC BY-SA and "no known restrictions" are not CC0: name the terms and ask the user first. Ask for the user's own surveys or GIS layers when the place is theirs. Never fill a gap with generated imagery presented as evidence.
  • Seams: paths imaged on other days disagree. One date per path, each scene gain-matched on stable land, feathered overlaps, holes filled from the same year only.
  • Old sensors: Landsat MSS (to 1992) has no blue or SWIR and drops scan lines: nearest-neighbour resampling, near-zero rows as nodata filled from same-year scenes, scan-angle streaks cleaned on land only. Inspect every year at full contrast.
  • Plumes and haze cross water as bright diagonal bands: swap the scene for another date of the same year rather than painting it out.
  • Edges: resampling against nodata darkens scene rims (erode the mask); drop contour pieces along a plate border. Real straight edges (dikes, polders) can read as seams: frame them out or label them.
  • Grey mush at close range: raise local contrast for that altitude only and dim outside the measured corridor.
  • Water and cloud: MNDWI where shortwave infrared exists, only the basin you measure; clouds read as features in grey, so use the dry season.
  • Facts: keep a FACTS.md in the project folder (claim, source URL, quoted wording, or the measurement method with scene IDs and dates) and deliver it with the film. Measure on the date you show.

10. Engine

  • demo/engine.js: makeCamera({lat, lon, d, tilt, heading, sx, sy}), project() / unproject(), the WebGL2 plate shader (nested plates, time scans, growth map, analyst grade, printed-map layer, whip blur).
  • demo/overlay.js: hairlines, brackets, readout, the measured single-line subtitle strip, text with a registry for window.TEXTS.
  • demo/tools/: fetch_landsat.py (STAC, one date per path, same-year gap fill), plates.py (normalisation, streak cleaning, water masks, areas), vectors.py (shorelines, distances), mapfield.py (the printed map), growth.py.
  • Extra packages and packs: none beyond setup.sh deps voice and the sample packs the score uses (sh tools/fetch.sh instruments <lib> for vsco2ce, vcsl, freepats in the demo). Imagery uses only the standard library, numpy, SciPy, Pillow (no GDAL); allow 3–4 GB for cached scenes. Anything more (rasterio, pyproj) goes in a private venv in the project folder, not $LIB/.venv.

11. Variation space

The agent decides the place or places, whether there is a claim layer, which dates, the structure, the camera path, the accent hue and where colour comes back.

  • Structures: a locked time-lapse of one place ending in a push-in; a river followed from source to mouth with a reading at each stop; two places compared at one scale with whip pans.
  • Openings: a ground-level detail that climbs to reveal its scale; a black frame a scan line paints in; an oblique orbit with a searching reticle.
  • Endings: the climb back to orbit; a last measurement that lands and holds in silence; the claim layer redrawn to match the ground.

How our demo was made (story, shots, score, end card, build): DEMO.md. Read it after your treatment exists.

Director's notes for the demo film

One example among many. Don't reuse its story, arc, shots, props or timings.

Demo: The Map Still Says Sea 《地图上还写着海》 (37.8 s) · satellite-briefing.mp4 · source in demo/

A satellite follows the map to a sea and finds a desert; the only part that came back is the part someone dammed. The Aral Sea, 1977–2025, on public-domain Landsat imagery. Chinese on screen, English narration, bilingual subtitles (Chinese line above, English line below).

Story & structure

Logline: on the map it is still the Aral Sea; from orbit it is salt and sand; the one piece of it that returned, the North Aral, was kept by a 13 km dike.

Arc: a claim (a printed atlas page of the 1960 sea, its serif name 咸海) → the check (a dive into the map until it fills the frame, a scanner bar tears it away: salt crust, then silence) → the evidence (time rewound to 1977 and played forward in one locked frame, each year leaving its shoreline as a ring, the rings coming faster and faster) → the human scale (a range line from Muynak's old harbour to today's sea, 95 km) → the turn (silence, then water heard before it is seen, a whip pan north to the Kok-Aral dike, rings that grow outward, the water's true colour coming back) → the ending (the label 咸海 leaves the empty basin and pins itself to the North Aral; back to orbit).

Native moves spent: the map against the photograph at the reveal; time rings in a locked frame as the signature shot; the range line for the human scale; colour returns where the story turns for the North Aral; the dive and the climb as bookends; the reticle becomes the frame for the end card.

Measured values are labelled as measured on screen; every number and its source is in demo/FACTS.md.

Shots

One continuous take; framing changes by altitude. Times in seconds.

# Time Shot Camera Native move / note
1 0.0–1.8 Earth's limb across the top, Central Asia below; a reticle searching, locks at 0.6; map layer on at 1.2 oblique orbit (tilt 57°), lateral drift from frame 0 the lock ping is the film's key sound
2 1.8–5.4 the sea's blue becomes a whole printed page as we fall into it: paper grain, a halftone in the ink, a fold, waterlines along the east coast, graticule, Amu Darya and Syr Darya, town dots, the serif name growing to the frame centre dive, 3,800 → 160 km, tilt 55° → 0°, accelerate then brake; the coast stays in frame the ground beneath drains to grey
3 5.36–6.6 a scanner bar sweeps down the frame and tears the page away (0.34 s): wind-streaked salt crust underneath, 咸海 left floating over it settle 160 → 46 km a 0.45 s suck-out before the tear; silence 1 from ~5.9
4 6.6–7.8 five upward scans 2025 → 2014 → 2009 → 2000 → 1989 → 1977, a year counter steps back climb 29 → 900 km, ease-out first sound after silence: the rewind
5 7.8–13.2 signature: the whole sea, everything outside the old shore dimmed; six soft downward scans each print a shoreline ring (1977, 1989, 2000, 2009, 2014, 2025) at 1.8 / 1.2 / 0.9 / 0.6 / 0.9 s spacing; the lost band flashes; a light runs along the newest shore; reading 80 % → 7 % (dimmed while it rolls, bright when it lands) nadir orbit: 980 → 600 km and 0° → −15° rotation on an accelerating curve (motion per second 1.2 → 3.9), braking in 0.3 s on the stop the camera speeds up with the rings and stops with them
6 13.2–15.3 held breath: the 2025 ring breathes; from 14.1 a reticle searches and locks on Muynak's old port at 14.7 pan that brings the port to the centre (588 → 520 km, rotation to −12°) the lock ping answers the opening
7 15.3–17.4 the reticle holds the port through the push, the rest dimmed; 16.2 the port label with the ship horn; 16.5 the 1977 shoreline (measured) is drawn past the port, "1977 年岸线", the water lost since 1977 a faint wash pure push on the port, 520 → 92 km, port at the centre lands readable: the port at the old water's edge
8 17.4–23.4 17.4–18.6 the port slides left to give the line room; 18.6–20.4 a 4 px range line grows from the port with 10 km ticks and numbers every 50 km, a reticle and a rolling "km" at its tip, the reading rolling in the right third; destination marked at 19.2; lands on "95" as the narrator says it; a lit corridor follows the line the camera chases the tip from the port to the sea (lens shift −700 → +60 px), then pulls back 104 → 245 km to show the whole distance local contrast raised for this range; silence 2, 21.9–22.8
9 23.4–24.0 the ground streaks whip pan north (~280 km in 0.6 s) with directional blur the water was heard 0.6 s earlier
10 24.0–28.8 Kok-Aral dike traced (24.0–24.6, slam on "dam"); 2001 ring at 25.2; the 2009 water grows outward from the 2001 shore (25.3–26.4) and the 2009 ring stamps where it stops; only the North Aral's water regains true colour; a light runs along the new shore; reading +37 % push 44 → 24 km with a 7° turn water growing outward = the turn
11 28.8–34.2 north plate becomes 2025 under the climb; the label 咸海 slides from the empty basin and pins to the North Aral (30.6–31.2); colour returns everywhere climb to orbit, tilt back to 50° L-cut: the water fades under the climb
12 34.2–37.8 the lock brackets open into the end-card frame; one last satellite pass sweeps behind the title Earth turns under a dimmed oblique orbit end card

Score structure

100 BPM, 4/4; every key action on a beat or half-beat (demo/tools/cuecheck.py: 0 ms on 26 cues). D minor, turning to D major at the dam.

Section Time Palette Notes
Orbit 0–1.8 D drone (pulse bass with 2nd/3rd harmonics), Dm pad, FM telemetry plucks in 8ths, orbit hum, radio hiss, data chatter lock ping D6 at 0.6, map ping A5 at 1.2
Dive 1.8–4.95 plucks to 16ths with the filter opening, hi-hat ticks, noise riser, gran cassa crescendo, rising tone, altitude-counter clicks everything is sucked out 4.95–5.36
Tear 5.4 the map torn away: bass drum, gran cassa, timpani, a fortissimo low-brass stab (trombones, tuba, horns, D minor), crash, a crackling paper rip swept with the scan bar one of the three heaviest moments
Silence 1 ~5.9–6.6 thin wind; the tear decays into it
Rewind 6.6–7.8 the last 1.8 s of the film's own soundtrack played backwards and speeding up, a reversed tam-tam, counter ticks the turn into the signature shot
Rings 7.8–13.2 bass descends D–C–B♭–A–G with the chords Dm–C–B♭–A–Gm (two pad layers); tuba on each root, trombone on the fifth; a sub pulse on every beat, every half beat from 2000; ticks 8ths → 16ths; each ring: timpani on the root + bass drum + inharmonic metal ring + pen hiss; a reversed cymbal swells into a 0.24 s suck-out acceleration by subdivision, not tempo
Stop 13.2–15.3 the slam (bass drum, timpani, gran cassa, gong, metal clang), then low D, bowed cymbal, thin drone the loudest moment of the film
Muynak 15.3–21.9 distant ship horn (two detuned saws, long room) with a creak, timpani heartbeat every two beats, a low D/A drone whose filter opens with the range line, dry sand grains, ratchet ticks per 2 km (accent every 10 km), a hollow tock + ping when the reading lands
Silence 2 21.9–22.8 wind only first sound after it: one lap of water at 22.8, before the picture turns north
North 22.8–28.8 whip crack and swish; a 0.22 s suck-out, then the dam slam (bass drum, timpani, knock, clash, low metal gate); D major: tuba, trombone, horns, a warm pad, bowed vibraphone, a cymbal swell that lands as the water arrives, glass-harp motif D5–A4–C♯5–F♯5–E5–D5 with echoes, vibraphone pulse; water bed the only wet timbres in the film
Climb 28.8–34.2 horns D3/A3/F♯4, tuba, bowed vibraphone, D-major pad; the motif on glass and FM ping together (dry and wet united); light pulse pin ping at 31.2
End 34.2–37.8 low D hit, lock-ping echo, a soft sweep for the last pass, long tail

Mix (in mix.py): stem gains frozen (music 10 dB under the voice while it speaks and ducked about 5 dB, pulse −8 dB, foley −6 dB, beds −17 dB); bus compression on music, pulse, foley and beds only, so the hits keep their weight; a master stage (−14.4 LUFS, true-peak limiter at −4.6 dBTP on 4× oversampled peaks; AAC adds back about 3 dB). Sub-bass: a 38 Hz high-pass (46 Hz, 4th order on hits) and a −5 dB shelf below 62 Hz on everything but the voice; the impacts carry their weight at 60–120 Hz (punch()): 20–60 Hz sits 16 dB under the full band, as in the dataviz demo. The film measures −13.8 LUFS, true peak −1.6 dBTP, LRA 5.3 LU. tools/impactcheck.py: the hard stop is the loudest momentary moment of the film, the dam slam −0.5 dB and the map tear −2.6 dB under it (each among the loudest 4 s of the film), and they follow dips of −4, −3 and −14 dB. Silences sit about 20 dB under the program.

Palette & props

  • Ground: Landsat true colour at orbit; the analysis grade from #070B0E to #A1A7A9 with a fifth of the chroma.
  • Marks #F2F5F6 with dark halos; the reading amber #FFBE55; the printed map: paper #ECE2CB, sea #8CB5DB, coast ink #1A3B6B, graticule in a faded red-brown, the serif name in #1F3F6B on the page and #D6EAFF over the sand.
  • The North Aral water returns to a lifted true colour inside a 0.75° circle; nothing else in the analysis layer is coloured.
  • Props: the printed map (Natural Earth historic-lake polygon as a distance field, rivers, two town dots), six measured shorelines (1977–2025), the North Aral rings (2001, 2009), the Kok-Aral dike traced on the 2025 image, the Muynak range line.
  • Narrator: Kokoro bf_emma, speeds 0.9–1.0.

End card

The lock brackets open from the North Aral into a frame on the left: 地图上还写着海 (Noto Serif SC, the map's voice), The Map Still Says Sea, a rule, SATELLITE BRIEFING · 卫星简报, LemoLab × Claude Opus 5.5, over the dimmed Earth turning; a last satellite pass sweeps down behind it. 3.6 s. The "LemoLab × Claude Opus 5.5" sign-off belongs to this library's demo only; a user's film carries no LemoLab credit and no copy of this card.

Build notes

demo/
  build.sh          one command: voice → checks → events → video → mix → master → .srt → checks → poster
  index.html        two canvases (WebGL2 imagery, 2D marks), fonts
  film.js           render(t): camera keys, plate/scan state, every mark, readouts, subtitles, end card, EV
  engine.js         camera, project/unproject, plate shader (grade, soft scans, growth, printed map, water colour, whip blur)
  overlay.js        hairlines, brackets, readouts, transcript strip, text registry for readcheck
  timeline.js       beats, cues, ring schedule, narration (single source; tools/export.mjs → timeline.json, cues.json, voice/lines.json)
  mix.py            score, foley, beds, voice, mix → out/mix.wav + out/stems/
  tools/            fetch_landsat.py, fetch_gibs.py, plates.py, bmng.py, vectors.py, mapfield.py, growth.py, fonts.py (data); lowcheck.py (sub-bass share);
                    export.mjs, voicefix.py (voice); cuecheck.py, subcheck.mjs, motioncheck.py, audiocheck.py, impactcheck.py, finalasr.py (checks)
  assets/           plates/ (JPEG plates, water masks, mapfield.png, ko_grow.png, plates.json), vectors.json, raw/ (downloads + manifest.jsonl)
  FACTS.md, CREDITS, TREATMENT.md, PRODUCTION_LOG.md, stills/styleframe.jpg
  • sh demo/build.sh takes about 2 minutes on Apple silicon (the picture renders in ~20 s with 3 workers). In a fresh clone the plates, raw scenes and fonts are not in git: the first run fetches and rebuilds the imagery (~25 minutes, ~3.5 GB in assets/raw/) and downloads the fonts (tools/fonts.py: Barlow Condensed and IBM Plex Mono from github.com/google/fonts, Noto SC subsets); FETCH=1 forces it again. The score needs sh tools/fetch.sh instruments <lib> for vsco2ce, vcsl and freepats, the voice setup.sh deps voice.
  • Checks it runs: asr_check.py with small.en (the base model hears "sea" as "C"), cue grid, subtitle single-line widths measured with the real fonts (widest line 578 px against 1100 px), readcheck.mjs, motion per second (no stretch over 1 s below 0.6 mean pixel change; the slowest second of the film is 1.06), the impact ranking.
  • Plates: region mosaics 3917 × 2652 at ~190 m for six years; detail plates at ~32–40 m for the landing, Muynak and Kok-Aral; Blue Marble world (4096 × 2048) and Central Asia. All sampled in one shader pass; memory about 1 GB of textures per render worker.
  • Demo-specific pitfalls: the 1977 Landsat 2 mosaic needs nearest-neighbour resampling, dropout-row repair, streak cleaning at 12° on land and one L1GS scene to close a hole in the north-west bay; the 1989 scene of path 161 on 16 August carries a dust plume across the sea and is excluded (exclude in tools/plates_spec.json); a dike-bounded polder 10–15 km west of Muynak has a straight edge that can read as a seam: it is dimmed while the port is centred and slides out of frame before the range line; the water masks need contour pieces along plate borders removed or a straight line appears in the North Aral; the map's place names other than 咸海 were dropped because a dive gives them less than the reading time they need.
  • Kokoro adds a breathy syllable after "Someone kept it."; tools/voicefix.py trims it before the speech check.