-
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