06. Волна: подъём и роторы согласованы с лентикулярами (остаток VR-27)
Цель: проверить численно, что физика волны (wave_field.gd) и облака-лентикуляры/роторные клочья стоят в
одних и тех же местах, и что в волне реально набрать выше базы кучевых.
Контекст: scripts/atmosphere/wave_field.gd, configs/weather/wave.json, configs/atmosphere.json (wave.*),
tests/atmosphere/test_hazards.gd (test_lee_wave_crest_lift), docs/guide/atmosphere.md «Опасная и особая погода».
Владения: scripts/atmosphere/wave_field.gd, configs/weather/wave.json, секция wave в configs/atmosphere.json,
tests/atmosphere/test_wave.gd (новый). Шейдеры и рендер линз — группа 3, не трогать (только данные гребней из WaveField).
Шаги:
- На синтетическом гребне и на одной реальной локации (Онгудай) взять центры линз из WaveField (то, что отдаётся рендеру).
- Проверить: в центре линзы
w≥ 0,5·wave.max_ms; на полволны дальше —w< 0; ротор-болтанка у земли под гребнем ≥ 2 × фоновой; λ совпадает с 2πU/N ± 10 %. - Полёт: крыло держит курс против ветра в гребне первой волны → набор выше базы кучевых пресета ≥ 500 м за 15 мин.
- Без пресета волны — ни линз, ни подъёма (уже есть, не дублировать).
Критерий приёмки: все проверки шагов 2–3 зелёные на синтетике и Онгудае; при расхождении линз и подъёма —
исправлена фаза в wave_field.gd (один источник для физики и облаков); --filter=atmosphere зелёный.
Зависимости: после агента atmosphere; параллельно со всеми. Модель: sonnet. Размер: S.