Индекс срезов: [`../README.md`](../README.md). ## Срез 10. Ремесло Дизайн: [`craft.md`](../../design/10-craft/craft.md). Срез без новой кнопки. Слои ловятся одним тестовым проектом, клиентский `npm test` гоняет tsc, работник и карточка режутся по швам, дамп проверяет явку. После этапа A школа целая, даже если файлы ещё толстые. Не ждёт фазы 44 и 46. Порядок свободный: 56, 57 и 59 ни от чего не зависят, 58 удобнее после 57. Начинать разумно с 56 или 57. **Этап A — страховка.** Слои и tsc. | Фаза | Статус | Зачем | | --- | --- | --- | | [56. Слои одной пачкой](56-architecture-tests.md) | ✅ | Один проект вместо четырёх копипаст | | [57. tsc в npm test](57-client-typecheck.md) | ✅ | Дубликат ключа красный без `npm run build` | **Этап B — горячие точки.** Поведение то же. | Фаза | Статус | Зачем | | --- | --- | --- | | [58. SchoolWorker и карточка](58-worker-card-split.md) | ✅ | partial / модули по швам, один поток | **Этап C — дамп.** | Фаза | Статус | Зачем | | --- | --- | --- | | [59. Дамп проверяет узлы](59-dump-nodes.md) | ✅ | После найма в дампе есть `NodeId` |