--- title: "sched F&F — метод тестирования: скомпилированная дока + порядок хендоффа" type: concept tags: [sched, fnf, testing, docs, methodology, handoff] sources: [] related: [concepts/sched-fnf-r8-verification-stand.md, concepts/sched-admin-client-openapi.md] updated: 2026-08-19 --- # sched F&F — метод тестирования Урок раунда r10 (2026-08-19, режект → фикс → ретест 6/6). Правила тестирования в кросс-агентном цикле F&F против sched-команды. Применимо к любому следующему раунду. ## 1. Тестируем по СКОМПИЛИРОВАННОЙ доке, не по сырцам - «Публичная дока» текущего этапа = **скомпилированная дока на дев-сервере** `http://localhost:5108` (nuxi dev, биндится на IPv6 `[::1]` — открывать localhost, НЕ 127.0.0.1). Роуты: `/docs/tasks`, `/docs/self-hosting` и т.д. - НЕ тестировать по `docs/content/docs/*.md` в рабочем дереве — тогда битый билд, пустой dist, мёртвый/устаревший рендер проскочат незамеченными. Дока как артефакт — часть предмета теста. - `schedjs.com` — заглушка конфига (NXDOMAIN, домен не зарегистрирован), проект никуда официально не публиковался. Деплой на публичный URL НЕ требовать — это вопрос фазы публикации и решение владельца. ## 2. Порядок хендоффа sched F&F (их процедура, fnf-testing-procedure.md) Проверять ВСЕ 6 пунктов ПЕРЕД первым прогоном. Любой пропуск = возврат без теста: 1. Код + юнит-тесты. 2. Доки source — примеры парсятся (битый пример = возврат; в r10 был сломанный `createDaemon({ alerts })` — лишняя `},`, `tasks`-мапа неоднозначно вложена). 3. `npm run generate` в `docs/` → `docs/dist` не пуст и закоммичен. ⚠️ Гоча: nuxi сам создаёт `docs/dist` как **symlink** на `.output/public` — «0 байт», в git не попадает; у них закрыто `scripts/docs-dist.mjs` (после generate заменяет симлинк реальной копией) + `!docs/dist/` в .gitignore. 4. `git push` — ноль ahead (тестируем то, что в origin). 5. Пакеты в verdaccio (versions на месте). 6. Пинг тестера со списком версий + целью (URL скомпилированной доки). ## 3. Ретейст-рецепт (r10, переиспользуем) - Стенд: `/tmp/sched-alerts-stand/` (Windows Temp), node_modules `@sched/core` / `@sched/daemon` из verdaccio, `.npmrc` → `@sched:registry=https://verdaccio.kzntsv.site/`. Приёмник `receiver.mjs` (порты 8131/8132). - Лестница r10: a) регресс дефолта, b) `on:[]` = тишина (массивы REPLACE), c) per-task on, d) per-task onMissed (missed-slot: гашение демона на слот > grace 120s), e) мультиканал (+ без корневого webhook), f) fail-fast на load (все 3 варианта). - ⚠️ Гоча путей: write-тул пишет `/tmp/...` как `C:\tmp\...` (диск-рут), bash `/tmp` = Windows Temp. Синхронизировать через `cp`. - Крон `* * * * *` — слот на :00 каждой минуты; запускать демон и ждать следующего :00+8s. ## 4. Результат r10 6/6 PASS, 0 находок, 0 замечаний — первый раунд без фиксов после режекта. Бонус: HMAC `X-Sched-Signature-256` MATCH. Финальные версии: core 0.44.0 / daemon 0.4.2.