• Nikitos's avatar
    Дополировка PASS 1: переносимость под MSVC, владение сборками, релиз через CI
    · 54750cb2
    Nikitos создал
    План — docs/PRODUCTION_POLISH.md. Закрывает §4.1–4.3, §4.5–4.9, §57 и §58.
    
    Переносимость (причины красной Windows-сборки в CI):
    - R2D_PI/R2D_TAU в src/r2d.h вместо libc M_PI (src/nodes.c, tests/audio/fx_test.c);
    - sdk_next_field вместо POSIX strtok_r в разборе тегов атласа
      (sdk/native/sdk_atlas.c) и ручной разбор вместо глобального strtok в
      tools/r2d_embed_js.c;
    - константа времени компиляции вместо VLA в src/render.c.
    Гейт — tests/portability_test.py; 144 единицы трансляции собираются с
    -Wvla -Werror=vla.
    
    Владение сборками:
    - macOS убран из матрицы GitHub Actions; CI собирает Windows/Linux, считает
      SHA256SUMS.txt и создаёт единственный Release по тегу;
    - build_and_push.sh/push_and_deploy.sh собирают только macOS и отвергают
      не-macOS платформу в PLATFORMS; релизы не создают;
    - tools/attach_macos_release.py прикладывает macOS к релизу CI,
      tools/fetch_release_assets.py переносит артефакты CI в dist/;
    - контракт имени артефакта и владение релизом проверяет
      tests/release_ownership_test.py.
    
    Упаковка и релиз:
    - release.archive_name() — единое имя russiano2d-v<версия>-<платформа>.<ext>,
      release.prune_stale_archives() убирает архивы со старым именем;
    - release.write_archive вместо shutil.make_archive при обновлении документов
      пакета: повторная упаковка даёт тот же архив;
    - в CI суммы считаются по явному списку архивов (sha256sum * включал сам
      манифест);
    - tests/macos_package_smoke_test.py проверяет пакет как пакет: VERSION, суммы,
      --version, r2d-sdk version, headless-прогон 30 кадров; x86_64 — через Rosetta;
    - push_and_deploy.sh больше не ссылается на несуществующий
      tests/demos_examples_test.py (файл в tests/agent/).
    
    Документация приведена к новому разделению: docs/RELEASING.md, docs/BUILD.md,
    docs/TASKS.md, site/doc-home.md; исторические записи в SDK_HANDOFF.md помечены.
    54750cb2