# Night shift 2026-10-21 → 22 — отчёт Стенд dgx5–8 (по указанию оператора), прод dgx1–4 не трогали ни разу. ## 1. Дашборд и лаунчер: три бага, четыре релиза **Панель рецептов держала лейны «активными» после остановки** (то, что поймал оператор). Причина: строки пересобирались только по событиям файлов в `reports/` и `recipe.toml`, а `serve`/`stop` пишут `.lock` — он не считался релевантным; плюс флаги `stale`/`fleet_up` выставлялись навсегда. - `.lock` теперь триггерит пересборку, а 30-секундный тик сверяет «up»-множество строк с леджером и пересобирает при расхождении (догоняет и пропущенные watcher-события); - флаги пересчитываются каждый проход — в т.ч. `fleet_up` на аддоне, где леджера нет вообще и он раньше замирал после первого прохода. - Проверено вживую: подсунутый открытый run → оранжевый `stale`; `runlock close` → строка исчезает на следующем тике. **1.3.3**. **Ресайз окна лога** (второй баг оператора): жест умирал, как только указатель пересекал iframe-панель рецептов — события уходили внутрь iframe. `drag()` берёт pointer capture. **1.3.1**. **Host-скрипты переехали в репозиторий рецептов.** `before_serve`/`after_stop` принимают `{ script = "scripts/prepare.sh" }` — путь относительно каталога рецепта (абсолютные и `..` запрещены). Скрипт стейджинга TensorFold стал `recipes/dsv41-flash-1017-2x-tensorfold/scripts/prepare.sh`. Попутно: хуки получают **serve-local** `NODE_RANK` (на subset-запуске отдавали конфиг-ранг → паки строились для ранга 2/3 в 2-ранговом движке), `bench` понимает TensorFold-овский `--name`. **Чейнджлог аддона** — `sm121/CHANGELOG.md` (HA показывает секцию установленной версии), правило «каждый бамп = своя секция» в AGENTS.md. Релизы **1.3.0 → 1.3.3**, все зелёные (amd64/arm64). **Дисциплина мониторинга** — раздел в AGENTS.md: не `sleep 600; check`, а фоновый запуск + короткий поллинг в том же вызове с выходом на первом `Error:`. ## 2. Ресерч дня **TensorFold ушёл вперёд.** Наш рецепт пинит TF **0.6.0**; публичная семья — **1.0.12 / 1.2.4** (нативный Zig-движок): 2- и 4-нодовые рецепты (`MiaAI-Lab`, `bertholomus/…-tp4-4xgb10`), kept-prompt reuse, **wide copy windows** (`sehoon123`: копирование из промпта 123.6 → 204.1 tok/s), точный DSpark, vision, grammar/tool calls. **RedHatAI/GLM-5.3-MXFP4xFP8** (2026-10-21): полный GLM-5.3 (не Flash), 78 слоёв, `GlmMoeDsaForCausalLM`, ~4.5 бита/пар, **415.4 GB**, 1M окно. **local-inference-lab открыл GitHub**: `blackwell-llm-docker` с образами `voipmonitor/sglang:cu130|cu132`, `voipmonitor/vllm:vllm-b12x-cu132` (b12x + FlashInfer из исходников, CUDA 13.2), `voipmonitor/vllm:lucifer`; плюс форк `flashinfer`, `llm-inference-bench`, `rtx6kpro`. Сам рантайм FLARE не открыт. **Форум**: 386130 «RAIDFLASH: 2.5× decode на 2×GB10 GLM-5.3-Flash (TF)» — слой параллельных полос поверх TF 0.6.0: длинный ответ режется на k стримов, 49 → 110–200 tok/s на одного пользователя (это про длинную генерацию, не про агентский ход); 386108 (GLM-5.3-Flash-FP4-Local + 2M FP8 KV), 386098 (1017), 386285 (4× China OEM без свитча, 90 tok/s). ## 3. TensorFold 1.0.12 (Zig) TP4 — собрано, но не поднялось Детали и точные входы: `specs/tech-architecture/tensorfold-1.0.12-bringup.md`. Сделано: движок собран (Zig 0.17.0 + CUDA 13 в нашем TF-образе, `-Dsm=121`); kit проверен (**362/362** файлов MANIFEST; RoPE-таблицы и vision-биас в git отсутствуют — добраны из HF, HF-копия побайтово совпала с git); веса EXL3 4.0bpw (288 GB) на NAS; rank-cache **75.6 GiB/нода** (`tf-dsv41-check`: 189 610 записей, 0 расхождений); token map. Блокер: `the native CUDA engine cannot load /model … glue kernels (FileNotFound)`, а `tf-dsv41-load` → `MissingEntry` — движок на коммите `51726210` и чекпойнт 4.0bpw расходятся по какой-то записи (не шард, не kit-файл). Попутно найдено и записано: HF-симлинки рвут bind-mount (лечится каталогом жёстких ссылок), entrypoint образа надо гасить (`--entrypoint ""`), token map на хосте падает без `tokenizers`. ## 4. GLM-5.3 (full) MXFP4×FP8 на 4 нодах — загрузили, но не подняли Рецепт `glm53-mxfp4-fp8-4x` (TP4, 32K окно, MTP k=5, glm47-парсеры, образ `spark-glm53:v10` — в его реестре уже есть `GlmMoeDsaForCausalLM`). Веса 415 GB скачаны на NAS, образ разложен на все 4 ноды заранее. Две попытки по ~45 мин каждая (два полных прохода загрузки 141 шарда) упираются в инициализацию воркеров: ``` Worker_TP0 … is_in_the_same_node: gloo/tcp/pair.cc:553 Conn… WorkerProc failed to start → Engine core initialization failed ``` Это multi-node инициализация (gloo message-queue) в **kindling-форке**, который тюнили под TP2 на двух нодах; память тоже впритык (при GMU 0.90 веса занимают ~97 GiB из ~119 GiB). Что пробовать дальше: `--distributed-executor-backend ray` (если Ray есть в образе), либо upstream-vLLM ≥0.32 (карточка RedHat ссылается именно на него) вместо форка, либо `voipmonitor/vllm:vllm-b12x-cu132` из local-inference-lab, где CUDA 13.2 + b12x + FlashInfer собраны свежими. ## 5. Состояние флота утром | где | что | |---|---| | dgx1–4 | прод `dsv41-flash-1017-4x-sglang` (EP2/1M) — **не тронут** | | dgx5–6 | **GLM-5.3-Flash 2x** (kindling, DFlash2 + adaptive-k) — поднят; контрольный прогон утром: **95/100 (185/194), Hard Mode 52/56 (93%), safety-critical 0**, ход 3.6 s | | dgx7–8 | свободны (там остались rank-cache TF 1.0.12 ~76 GB/нода и kit/engine) | Аддон: **1.3.3** (обновить в HA). Все правки в launcher и recipes запушены. ## 6. Что дальше (по приоритету) 1. GLM-5.3-Flash 2x — оставить как эталон качества (94/100) и кандидата в прод; на нём же проверить реальную агентскую сессию. 2. GLM-5.3 (full) — повторить на upstream vLLM / образе `voipmonitor`, где multi-node mp надёжен; память мерить при GMU 0.85–0.88. 3. TensorFold: либо спросить upstream про `MissingEntry`, либо взять 2x-семью `MiaAI-Lab` (196 GB, много пользователей) с патчами `sehoon123`. 4. sparkring `dev-20261016-sparkcache`, RedHat-драфтеры (dspark/dflash для gemma-4), DSPARK sweep 3/5/7 — когда освободятся ноды.