Журнал модуля «start-fixes»

План — docs/archive/plan/start-fixes.md, контракты — docs/contracts/start-fixes.md. Ветка feature/start-fixes, копия ~/deltaplan-start.

Решения

  • 30.09 — план и контракты К1–К4 v1, контрактный тест tests/game/test_start_fixes_contracts.gd (4/4 ок).
  • 30.09 — решение пользователя (через главную сессию): радиус пустыря ≥ 2× длины разбега; тест проверяет отсутствие деревьев и кустов в этом радиусе. Вписано в план (решения, SF-1).
  • 30.09 — координатор: L_run — разбег в штиль на склоне min_slope_deg для самого «длинного» крыла линейки; встроенные старты — max(start_clearing_radius_m, R).
  • 30.09 — координатор: задача «пилот на земле» разделена на SF-3 (рука пилота, крен, дуга, переход) и SF-4 (причина касания крылом), параллельно; стык в ground_run.gd — по разным функциям.
  • 30.09 — решение пользователя: SF-4 передаётся исполнителю SF-3 (один исполнитель на связанные задачи); SF-4 коммитит находки в start/sf4 и останавливается, SF-3 вливает start/sf4 и сдаёт обе по общим условиям приёмки; копия sf4 — удалить после слияния. Вписано в план (решение 4).
  • 30.09 — решение пользователя: пустырь = только убрать деревья; траву, кусты и прочее не убирать. Новая поляна — FOREST → GRASS, SHRUB не трогается; приёмка — нет деревьев в R, трава на месте, проверка координатором по скриншоту. Отправлено исполнителю SF-1. В плане — решение 5.
  • 30.09 — координатор по находкам SF-4: (д) рельеф не трогаем, не шлюз, если на всех стартах локаций при крене 0 (стоит/шагом/разбег, трапеция нейтрально) зазор по видимой земле ≥ 0; иначе — шлюз. Тело пилота стоя вертикально — визуально в GliderVisual._ground_pose, К4 остаётся v1. reset_on_ground — начальный тангаж = установившийся стоя. Всё передано SF-3.
  • 30.09 — test_takeoff::test_headwind_launch (atlas, nose_high) падает уже на базе 6f34786 (= main 113878d + документы) — не регрессия модуля; сообщить главной сессии.
  • 30.09 — SF-3 промежуточно: порог бокового ветра стоя (sport, встречный 4, нос нейтрально) 1,90 м/с; при встречном 6 м/с — 0,6–1,0 м/с (нос на 10° ниже — ≈2 м/с): ноги разгружены, рука слабеет. Физика, не шлюз — находка для пользователя.
  • 30.09 — К4: тангаж стоя теперь от склона, тело пилота вертикально визуально; смысл theta/basis/ось поворота не изменились — К4 остаётся v1 (уточнение в контракте).
  • 30.09 — ответы пользователя: (1) коридор разбега для старта с карты — нет, кусты остаются (направление разбега заранее неизвестно — при боковом ветре бегут вдоль склона), К1 не меняется; (2) отдельной задачи по test_headwind_launch (atlas) — нет. В плане — решения 6, 7.

Задачи

ЗадачаСтатусИсполнительКопия / веткаКоммитыЧисла / решения
SF-1 Пустырьпринята (30.09)dp-engineerкопия удалена6db17c5, dbdbf59; слияние a85f78dК1 v2: Terrain.add_start_clearing(x, z, r) синхронный, surface_revision, get_start_clearings(), TerrainRenderer.refresh_surface; только FOREST → GRASS (кусты/трава/камни остаются). L_run (штиль, 12°): sport 71,9 м / combat 69,9 м (weak_run за 10 с), остальные 13–18 м, atlas — nose_high 1,2 с → R = 160 м (2×71,9 = 144, запас 10 %); встроенные старты: 70 м лес+кусты как было, до 160 м — только лес. Поляна 0,3–0,4 мс (карта), 5–10 мс (Онгудай с маской). Перепроверено: start_ 13/13, vegetation 21/21, game 116/116, terrain 62/63 (test_forest_mask_loaded 0,61 с > 0,5 — порог времени, падает и без задачи). Скриншоты: трава на поляне есть, деревьев нет; кусты стоят на пути разбега — вопрос пользователю
SF-2 Трава в лесупринята (30.09)dp-engineerкопия удалена8e97c1a, c7910e9; слияние 0f7b4b7К2 v2: forest_density=0,4, forest_height_m=[0,12; 0,35], forest_shade=0,8 (тень полога); GPU кадра в лесу 5,46→5,63 мс (+3,0 %, p10 +4,6 %); тесты grass 8/8, vegetation 21/21, контракты 4/4 (перепроверено); test_surface::test_forest_mask_loaded падает по порогу времени и до правок — не регрессия
SF-3 Рука пилота (+SF-4)принята (30.09)dp-engineerкопия удалена, ветки start/sf3, start/sf4 удалены800b84e, 3384aa8, 5f8990e (+ SF-4 143c4b7, 3707069); слияние f6db4ccК3 v2 (новые ключи ground_bank, run.turn_accel_max_ms2); перепроверено: стоя с A/D крен 0,000°; боковой 2,5+встречный 4 — крен при N/W>0,5 ≤ 0,94°, на отрыве 6,5–10° (физика); порог порыва стоя (sport, встречный 4) 1,90 м/с: ×1,2 → crosswind 10,15 с, ×2 → 3,55 с, ×0,8 держит (1,56°); дуга R/R_min 1,000 (29,6 м на 7,7 м/с); отрыв Δкрен 0,002°, Δp 0,25°/с; I = 396 кг·м², предел 200/100/0 Н·м; косой 15° — 0,0000°; зазор крыла ≥ 0,35 м (синтетика), по 10 стартам локаций ≥ 0,58 м — шлюза нет; flight 112/113 (test_headwind_launch — известное, решение 7), game 116/116, start_ 13/13. К4 — уточнение без смены версии
SF-4 Касание крыломпринята в составе SF-3 (30.09)dp-engineer—143c4b7 (замер, тест), 3707069 (тангаж стоя)Причины: (а) крен от A/D — главная на ровном (−17,9° → консоль −0,20 м; склон 20° с A −2,2 м) → уберёт SF-3; (б) тангаж стоя от горизонта — склон 20°, трапеция от себя −0,56 м → исправлено (после +0,58 м); (в) ось поворота, (г) подвеска/сглаживание — не причины; (д) рельеф треугольниками 25 м против билинейной высоты — видимая земля до 0,32 м выше (1 старт). Без крена на ровном зазор ≥ 0,35 м. Тест test_wing_clearance (9 крыльев, ≥ 0,3 м)

Состояние (30.09): все задачи приняты; ниже — исторический план продолжения

  • SF-1, SF-2 — приняты и влиты. SF-4 — остановлена, передана SF-3 (ветка start/sf4 ещё не влита — её вливает исполнитель SF-3 в start/sf3).
  • SF-3 (+SF-4) — исполнитель работает в ~/deltaplan-start-sf3 / start/sf3 (промежуточный коммит 800b84e). Задание дополнено: влить start/sf4 и feature/start-fixes; прогнать wing_clearance_run по стартам локаций (зазор по видимой земле ≥ 0 при крене 0, иначе шлюз); тело пилота стоя вертикально визуально (К4 v1); reset_on_ground — тангаж стоя; раздел «Поза крыла на земле» в docs/guide/flight.md; кадры в build/screenshots/sf3_ruka_pilota/.
  • Приёмка SF-3+SF-4: условия SF-3 (1–7) и SF-4 (1–4) плана; перепроверить --filter=flight, game, start_, test_wing_clearance; влить start/sf3 (и через неё start/sf4), удалить копию sf3 и ветки start/sf3, start/sf4; отметить в TODO пункт «Пилот на земле…» и подпункты, CHANGELOG «В работе».