Ролльня · симуляционный референс · 26 августа 2026 · поправлено 31 августа
⚠ Отчёт от 01.09, дописан 02.09, сверен 03.09.
Кадры и числа симуляции сняты с модели 01.09 и с тех пор не пересняты. Прежняя редакция
этой пометки называла три правки (#151, #154, #156) — с тех пор диаметры двинули ещё
#152 (ядро стало коробкой), #164 и особенно #166, и расхождение оказалось куда больше,
чем «двинули». Поэтому здесь не слова, а числа: эталоны play/checks.js тогда
и сейчас.
| база | диаметр | витки |
|---|---|---|
| хосомаки | ⌀ 33,4 → 28,9 мм | 1,00 → 1,19 об |
| футомаки | ⌀ 48,2 → 42,9 мм | 1,21 → 1,24 об |
| урамаки | ⌀ 39,5 → 32,1 мм | 1,24 → 1,05 об |
| фруктовый | ⌀ 60,1 → 51,8 мм | 1,18 → 1,21 об |
| тюмаки | ⌀ — → 36,1 мм | — → 1,23 об (база заведена после) |
Разбор кинематики от этого не устарел: он про то,
КАК складывается лист, а не про то, какого ролл размера. Устарели числа под кадрами, и
теперь видно, на сколько именно — от 11 до 19 %. Актуальные числа среза всегда в
docs/reports/piece-body.html: там их сверяет
tools/guide-numbers-check.py, здесь — нет.
⚠ С 05.09 эта сверка не работала: play/state.js стал
разбирать ?v2 через URLSearchParams, которого нет в песочнице
vm, и все headless-инструменты падали на загрузке. Починено тем же днём
(PR #176); пока сторож лежал, отчёты разъехались с кодом молча.
Двумерная симуляция настоящего ролла — чтобы проверить, врёт ли картинка среза в игре. Материальные точки на сетке: рис сжимается и течёт, нори гнётся и не тянется, начинки держат форму, циновка давит. Внутри — что уже посчитано, что подтвердилось и три вещи, которые симуляция опровергла.
Поправка · 31 августа 2026
Владелец увидела в прогонах хвостик нори внутри ролла, с рисом по обе стороны от него, и сказала, что так быть не должно. Проверка по одиннадцати источникам показала, что она права. Ошибка количественная: движение верное, расстояние вдвое короче.
Было на 31.08 в 12:20, когда этот абзац писался: лаборатория вела ближний край
до конца начинок и не дальше 45 % листа (FOLD_CAP, продублировано в
judge.py). Повара ведут его
до дальней кромки риса — 88–95 % листа: 白ごはん.com 「向こうの寿司飯の端
(海苔の空白部分)まで一気に」, OSUSHI STUDIO 「一回転で巻き切ることが大切」,
makesushi.com «a single seam». Перелёт источники называют ошибкой по имени; недолёт
на половину листа не рассматривают вовсе.
Складывая лист посередине, симуляция хоронит кромку в центре и наматывает остаток снаружи неё. Отсюда и крючок, и 1,3–1,4 оборота вместо одного. Рис с двух сторон от нори не бывает: два рисовых конца встречаются торцами в шве (「寿司飯と寿司飯の端を合わせて」), а не обнимают кромку.
Игра расходилась сильнее симуляции. Замер на живом стенде:
подворот садился на 14,3 % листа у хосомаки и 23,1 %
у футомаки. Сторож практики этого не ловил, потому что мерил spreadEnd —
докуда размазан рис (89 %), — принимая это за место посадки края нори.
Диапазоны случайно совпали, и зелёное подтверждало ложь.
Формула была одна и та же в трёх местах: play/model/geometry.js,
sim/mat-sdf/run.py, sim/judge.py — ровно тот случай, под который
в проекте заведено правило «одно определение на всех».
Разбор с цитатами — sim/KINEMATICS.md; задача — #113.
Починено в тот же день · вечер 31 августа
Всё, что выше сказано настоящим временем, к вечеру уже неверно — и это
оставлено видимым нарочно. Абзац про «три места» написан в 12:20, а игра
разошлась с ним через тридцать четыре минуты: в 12:54 подворот в
geometry.js стал решаться равенством, без всякого потолка. Лабораторию
свели к одному определению вечером — новый модуль sim/fold.py, и
FOLD_CAP исчез и из mat-sdf, и из judge.py.
Край теперь ведут туда, куда велит источник: на дальнюю кромку риса, 87 % листа.
Формула жила не в трёх файлах, а в двенадцати — восемь девять замороженных
попыток в sim/ держат её до сих пор (sim/fold.py:56-58,
поправлено 31.08 коммитом 959ea11), и намеренно: их метрики
получены тем кодом, и правка задним числом уничтожила бы запись. Граница выписана
в sim/fold.py поимённо.
Почему абзац не переписан, а перечёркнут временем: он и есть улика. Документ пережил код на тридцать четыре минуты и стоял так до вечера, пока его не поймала сверка, — а не собственная бдительность автора.
Кадры ниже остаются как они есть: это протокол прогонов, а не картинки для украшения. Меняется не то, что на них видно, а вердикт — «плотное ядро с крючком» было принято за цель, а оказалось следствием слишком короткого подворота.
Постановка
В игре срез рисуется быстрой моделью: лист режется на угловые бины и наматывается виток за витком, а четыре числа — сжимаемость риса, прижим циновки, сглаживание бугров и размер ядра — выставлены на глаз, по фотографиям.
Симуляция нужна не для игры: она слишком медленная и на телефоне не нужна. Она нужна как эталон, по которому эти четыре числа перестанут быть догадкой. Поэтому проверяется не «красиво ли», а измеримое: где окажется начинка, сколько риса останется под ней, какой формы будет бугор.
Что именно моделируется
Первая версия просто катила циновку по столу — и лист наматывался вокруг точки, а рис сгребался в валик перед роллом. Настоящая скрутка устроена иначе, и это пришлось прописать движением: край поднимается, заводится через начинки, прижимается, и только потом ролл катится.
Кадры ниже — прогон mat-sdf от 31.08, 13:53, с раскладкой из четырёх начинок. Дата важна: кинематику переписывали в тот же день, и кадры сняты уже после правки.
Поправка 31.08: само движение источники подтвердили заново и полностью — подъём
края, начинка под пальцами, одно быстрое приземление, встречная тяга. Неверно только
расстояние: край заводят не за начинки, а до дальней кромки риса. На этих кадрах подворот
всё ещё считается по старой формуле (#60, пункт 0), поэтому ближний край
уходит внутрь глубже, чем должен, — но гармошки и вываливающихся начинок здесь уже нет.
Что на этих кадрах ещё не так · 31 августа
Нори прижата к циновке. Это главное, что изменилось: на старых кадрах
между зелёной линией нори и красной дугой циновки был зазор, а повар прижимает к
циновке всё. Отставание листа от циновки — не косметика, а названный дефект:
мерка есть (зазор нори↔циновка), на пустом листе она даёт ≤ 0,10 U, а под начинками
лист отрывается. Это пункт 3 в #60.
Внутри нори всё ещё идёт складками. Причина не в кинематике: когда
рис пережат ниже физического предела, ролл схлопывается, а нори почти нерастяжима —
лишнюю длину ей деть некуда. Складка тут симптом раздавленного риса
(#60, пункт 1).
Хвостик от ближнего края. На кадре он есть, потому что прогон
сделан до вечерней правки: подворот в sim/ тогда считался по
той же формуле, что стояла в игре до 31.08 — край заводили до конца начинок, а не до
дальней кромки риса. Вечером 31.08 это исправлено (sim/fold.py,
посадка на 87 % листа); кадр остался как протокол прогона (#60, пункт 0).
И начинки внутри лежат не так, как у повара. Ядро укладывает их
сложенным пакетом — две половины сгиба друг на друге. Настоящий 芯 — это сами начинки
бок о бок, в один слой. Это #98: там решается, какую модель укладки берём
для маки, спирали и кадзари.
То есть все четыре дефекта, которые видно глазом, уже заведены и объяснены. Диагноз полный — не сделана работа.
Было и стало — с поправкой 31.08
Три кадра одного прогона в трёх состояниях модели. Слева — самая первая версия: ролл намотан вокруг точки, ядра нет, кусок риса остался снаружи. Справа — две независимые реализации подворота: у обеих в центре появилось плотное ядро, а вокруг него спираль.
Но дефект показывают все три, просто разный. Когда этот раздел писался, правые два считались решением: получилось ядро, контур круглый, начинки внутри. 31.08 выяснилось, что «крючок нори в центре» — не признак правильной скрутки, а следствие слишком короткого подворота, и у настоящего ролла его нет. Поэтому зелёные рамки с них сняты: раздел теперь честно показывает три состояния прибора, а не путь к успеху.
И второе, что на этих кадрах видно сразу: нори идёт гармошкой. Это не третий сюрприз, а известный дефект — просто кадры здесь сняты на СТАРОЙ кинематике, где циновка была жёсткой дугой, прижимающей сверху, а край нори тянули отдельным «захватом». Между захваченным краем и лежащим на столе листом оставался свободный пролёт, и складывался именно он; у повара такого пролёта нет ни в один момент. Переделка описана ниже, в разделе про макису, и гармошку она убрала: mat-sdf даёт 0 / 0 / 0 складок на трёх раскладках. Ниже по документу кадры уже без неё.
У гармошки нашлась и вторая причина, отдельная от кинематики: когда рис пережат ниже
физического предела, ролл схлопывается, а нори почти нерастяжима — лишнюю длину ей
деть некуда, кроме как сложиться. То есть складка там не причина, а симптом
раздавленного риса (#60, пункт 1).
Кадры оставлены как есть — это протокол прогонов, а не иллюстрации. Условие, при котором
их стоит переснимать, наступило тем же вечером: подворот в
sim/ починен (sim/fold.py, край идёт на дальнюю
кромку риса), и новый прогон крючка уже не даст. Пересъёмка — работа отдельная и не
сделана: пока её нет, читать эти кадры надо как «до правки», а не как нынешнее
состояние лаборатории (#60, пункт 0).
Главная проверка — раскладка, где у ближнего края лежат огурец, тамаго, лосось и авокадо. Все четыре обязаны оказаться внутри, компактно и в исходном порядке. Эту проверку прогоны проходят, и она остаётся в силе: начинки действительно попадают в центр и сохраняют порядок. Дефект — не в том, где начинки, а в том, что вокруг них лежит лишний виток нори.
Три раскладки, две реализации
Раскладки: пустой лист (базовая геометрия), тамаго у края (одна толстая начинка), четыре у края (ядро из четырёх). Прогон каждой — около двадцати секунд.
| Метрика | Пустой | Тамаго | Четыре | Пустой | Тамаго | Четыре |
|---|---|---|---|---|---|---|
| реализация | захват края | лопатка | ||||
| Радиус ролла, T (медиана) | 3,40 | 3,64 | 4,00 | 3,44 | 3,57 | 3,89 |
| Оборотов нори (измерено) | 2,94 | 2,53 | 1,97 | 2,64 | 2,69 | 2,39 |
| Оборотов по формуле площади | 3,32 | 2,39 | 2,03 | — | — | — |
| Сжатие риса (J, 1 = не сжат) | 0,924 | 0,921 | 0,925 | 0,957 | 0,901 | 0,931 |
| Риса на карте среза | 81 % | 80 % | 74 % | 79 % | 76 % | 75 % |
| Нори цела | да | да | да | да | да | да |
| Частиц вылетело | 0 | 0 | 0 | 0 | 0 | 0 |
| Секунд на прогон | 19,9 | 21,3 | 21,4 | 21,9 | 25,3 | 21,2 |
Ради этого всё и считалось
Три ожидания оказались неверными — причём два из них были моими, а не ошибкой расчёта. Это и есть главная польза эталона: он ловит то, что «на глаз» выглядит правдоподобно.
Опровергнуто · оба агента независимо
Целью стояло «один оборот нори». Оказалось, при длине листа 38,7 T это недостижимо никакой кинематикой: площадь материала задаёт радиус, радиус — число слоёв.
Предсказание формулы: 3,32 / 2,39 / 2,03. Измерено: 2,94 / 2,53 / 1,97. Совпадает. Значит один оборот получается не «правильной скруткой», а правильной длиной листа — потому повар и берёт полулист на тонкий ролл, а лишнее отрезает.
Опровергнуто · рис
Площадь риса на карте среза 74–81 %, и это выглядело как потеря. На деле рис уплотняется: J ≈ 0,92…0,96, то есть на 4–8 %. Остальное съедает отрисовка: лента нори рисуется поверх риса и забирает 1,5–2 T² площади.
Вывод для эталона: сохранение надо мерить по массе, а не по пикселям. Настоящая потеря была раньше и по другой причине — циновка сгребала рис в валик перед роллом; починилось тем, что ролл катится по листу.
Опровергнуто · единицы
Ориентир из документа был прочитан как «4,5–5 T», и агенты честно показали, что это невозможно: одного риса в срезе 33,7 T², а круг такой площади уже имеет диаметр 6,5 T. При слое риса 5 мм измеренный ролл — 4,0 см по медиане и 4,75 см по максимуму, то есть настоящий футомаки.
Моя ошибка · поймана арифметикой
В задании на спиральные базы стояла длина листа 75; правильная — 40,2. Агенты честно намотали 7,7–8,3 оборота — верная физика для неверного листа. Длины тогда были выведены из самого стенда: суши 38,7, рулет 56,9, лаваш 48,4 (рулет и лаваш сняты 31.08 — тематика японская). Поправка 26.08: числа «рулет 40,2» и «лаваш 107,6» здесь стояли неверно — у лаваша в спеке была вдвое завышена толщина листа, и ошибка ушла в длину. Ниже — почему длина листа вообще не должна выводиться.
Моя ошибка · формулировка
Я записал в доки, что смыкание листа встык — упрощение ради читаемости. Неверно: лист 19 см при ролле ⌀ 5–6 см (обхват ≈ 17 см) делает один оборот, а голая полоса ложится снаружи, поверх нори — на срезе её не видно. Тёмная дуга внутри появляется только когда лист длиннее обхвата, то есть при неверном размере листа.
Проверка «почерка» для игры
Отдельно проверялось то, ради чего в игре появился почерк: даёт ли скорость тяги и сила прижима читаемую разницу, а не шум. Даёт — и в ожидаемую сторону.
| Прогон | Радиус | Оборотов | Риса | Сжатие J | Читается как |
|---|---|---|---|---|---|
медленно 0,6 | 3,73 | 2,58 | 82 % | 0,902 | плотнее, туже |
обычно 1,0 | 3,95 | 2,47 | 84 % | 0,929 | эталон |
быстро 1,6 | 4,08 | 2,19 | 84 % | 0,941 | рыхлее, воздух между витками |
прижим слабый 0,5 | 3,83 | 2,17 | 86 % | 0,946 | крупнее, мягче |
прижим сильный 2,0 | 3,63 | 3,08 | 74 % | 0,823 | мельче, плотнее, витков больше |
Это ровно тот эффект, который в игре теперь берётся с жеста: как тянешь циновку и держишь ли в конце. Разброс идёт от руки, а не от процессора — то есть это почерк, а не лотерея.
Переписывание кинематики под настоящий макису
После главной поправки — циновка лежит под листом и катится вместе с роллом — её переписали двумя способами. mat-sdf задаёт циновку аналитически: дуга окружности, касающаяся стола, как знаковое расстояние. mat-chain — лагранжева цепочка узлов с ограничением на минимальный радиус изгиба и сервоприводом давления: радиус ролла должен получаться из контакта, а не задаваться.
mat-sdf — начинки держат форму, контур круглый, нори тонкой непрерывной спиралью.
mat-chain — нори тоже одной спиралью, но огурец и авокадо размазаны в ядро, контур гуляет.
| Три раскладки | mat-sdf | mat-chain |
|---|---|---|
| Сохранение массы | 0,954 / 0,965 / 0,971 | 0,958 / 0,967 / 0,964 |
| Радиус (медиана) против формулы | −1…+1 % | +1 % |
| Радиус (максимум) против медианы | +2…+4 % | +16…+48 % |
| Складок по порогу циновки | 0 / 0 / 0 | 0 / 1 / 1 |
| Начинка вне контура | 0 / 0 / 0 | 0 / 6,7 % / 2,7 % |
| Сбежавших частиц | 0 | 0 |
Моя ошибка · тройная
Цифры были из промежуточного прогона — я прочитал метрики, пока агент ещё работал, и процитировал «нори на 16 кусков, 1002 частицы вне контура». Итоговые числа в таблице выше.
Перепутал цвета на картинке. Зелёного в срезе три: нори тёмная, огурец яркий, авокадо светлый. Разбросанные зелёные пятна, принятые мной за обрывки нори, — это огурец и авокадо.
Механизм выдумал. Написал «защемляет на стыке жёстких планок». В mat-chain нет планок со стыками — это цепочка узлов с минимальным радиусом изгиба. Объяснение описывало модель, которой не существует.
Моя ошибка · не та статистика
Отменяя приговор, я сослался на то, что радиус mat-chain ложится в формулу площади на 1 %. Это медианный радиус, и он правда ложится. Максимальный — на 16–48 % больше, и на кадре видно почему: скрутка не доведена, конец листа так и остался лежать на столе.
Вывод для метрик: «ролл это или клякса» решает максимум, а не медиана. В отчёт по любой модели надо брать оба числа — по отдельности каждое врёт.
Проверено · гипотеза отброшена
У ключа --hold (пауза в конце, когда рис сходится с рисом) умолчания разошлись: 1.0 в одной модели, 0.0 в другой, и обе гонялись на дефолтах. Похоже на нечестное сравнение — перепрогнал с одинаковой паузой. Сохранение чуть лучше, но складок на четвёртой раскладке стало 16 вместо 3. Дело не в ней.
Открыто
mat-sdf сегодня даёт картинку, которой можно пользоваться, и на неё опираются калибровочные числа. Но её циновка — прописанная дуга: радиус ролла задан, а не получен. У mat-chain постановка честнее, и она не доведена: автор сам пишет, что свободная цепочка либо схлопывается, либо уезжает плоской лентой, поэтому мишень по длине дуги пришлось задать, оставив свободным только радиус.
Правильный следующий шаг — не выбрасывать mat-chain, а доделать в нём эмерджентный радиус.
Просьба владельца, которая развернула всю картину
Владелец попросила проверить толщину нори, сладкого теста и лаваша. Проверка вскрыла не мелочь: симуляция не могла поймать эту ошибку — в неё зашита та же толщина нори, что и в стенд. Эталон унаследовал допущение и потому подтверждал сам себя.
| Что | Было | Стало | Откуда |
|---|---|---|---|
| Нори | 0,6 мм | 0,10 мм | FAO: лист 21×19 см, ~3,0 г → 75 г/м². расчёт |
| Рис для маки | 5 мм | 7 мм | SUZUMO SVS-FCA: 7 / 8 / 12 мм. замер |
| Лаваш | 1,0 мм | 2,0 мм | 15 коммерческих тортилий 1,3–1,7 мм; 10.3390/foods10071473 — 2,0–2,5. замер |
| Бисквит | 8,5 мм | верно | Bakels: тесто 6–7 мм, пласт 8–10 мм |
| Крем | 5 мм | верно | расчёт из рецептов с массами: 3–8 мм |
| Начинка в лаваше | 2,25 мм | верно | расчёт из рецептов: 2–4 мм |
Сошлось без подгонки
В стенде длина листа выводилась из угаданного числа витков. Значит ошибка в толщине листа молча уезжала в длину — и именно так лаваш получил лист вдвое длиннее настоящего. Порядок развёрнут: лист нори закреплён как физический продукт 21×19 см, число витков выводится из него.
Результат сошёлся с натурой сам: пустой ролл ⌀ 2,9 см — настоящий хосомаки 2,5–3; с четырьмя начинками ⌀ 4,3 см — футомаки 4–5.
Открыто · решать владельцу
Раскладка «реалистичный футомаки» (30 % начинки, рис кругом) прошла чисто: нори цела, складок нет, ⌀ 4,1 см. И дала 1,85–1,91 оборота, а стенд рисует один: целый лист вокруг ролла обхватом 12,9 см физически даёт полтора-два.
Для хосомаки на полулисте один оборот верен — там почти встык. Для футомаки на целом листе есть честный нахлёст. Напрашивается развести их как две базы с разной длиной листа вместо одной «суши» с обрезкой.
Моя ошибка · гипотеза не подтвердилась
Перегруженная раскладка рвала нори, и я решил, что мало листа. Прогнал на листе в 1,5 раза длиннее — стало хуже: 18 кусков вместо 6. Настоящая причина другая: начинки занимали 64 % сечения, нори ложилась не на рис, а прямо на жёсткие бугры. У настоящего футомаки начинки 30–40 %.
переписано 01.09.2026 · issue #132
До 01.09 модель наматывала лист архимедовой спиралью: позиция на листе росла вместе и с углом, и с радиусом, слой ложился на слой. Проверка одной строкой показала, что такой ролл невозможен:
| база | обхват | лист нори | нахлёст |
|---|---|---|---|
| футомаки | 212,7 мм | 210 мм | −2,7 |
| хосомаки | 108,1 мм | 105 мм | −3,1 |
Отрицательного нахлёста не бывает: лист короче того, что должен обернуть. Это не
расхождение с источником, а тождество про длину — оно не зависит ни от плотности риса, ни
от способа укладки, ни от того, чей корпус мы взяли за эталон. Проверено и по граммам:
tools/variants.js даёт отрицательный нахлёст при 80, 100, 200 и 250 граммах.
У повара рис образует одно кольцо. Два конца постели встречаются торцами (「寿司飯と寿司飯の端を合わせて」), а нори обходит готовое кольцо снаружи один раз плюс нахлёст. Отсюда и разрешается давняя путаница: «один оборот» источников — это про НОРИ, а не про рис.
В модели это значит, что угол растёт по листу, а радиус говорит только, в какой ты зоне — ядро, рис, нори. Внешний радиус берётся из сохранения площади, и тождество сходится точно: интеграл (r²−r₀²)/2 по углу равен площади риса на постели.
Что стало: нахлёст положительный у всех баз, хосомаки ⌀28,9 при замере владельца рулеткой 25–30, сторож практики даёт 32 сошедшихся утверждения и ни одного провала. Те три расхождения, что стояли здесь (некруглость #19, доля начинки #16, центрированность #129), закрыты 01.09. На их место встали другие, и они не про форму, а про сохранение материала: концы рисовой постели не встречаются торцами, потому что рису нужно 1,3–1,6 витка, а кольцо кладёт один (#165), и площадь куска гуляет в 1,14 раза от положения на листе (#134).
Дописано 02.09.2026 · issues #142, #141, #153, #154
Раздел выше доказывал, что маки — это кольцо, и доказательство стоит: лист короче того, что должен обернуть, если наматывать спиралью. Вывод верен, а вот числа под ним устарели, и это надо знать, читая их.
| база | обхват | лист | нахлёст 01.09 | нахлёст сейчас |
|---|---|---|---|---|
| футомаки | обхват 153,9 мм · лист 210 мм | нахлёст 01.09: −2,7 | сейчас: +56,1 | |
| хосомаки | обхват 95,3 мм (пустой) / 97,6 (с огурцом) · лист 105 мм | нахлёст 01.09: −3,1 | сейчас: +9,7 / +7,4 |
Отрицательный нахлёст был свойством той модели, а не блюда. За 02.09 его убрали три правки, каждая со своим замером: ролл перестал быть на 28 % больше своего материала (#151 — ядро дорисовывало рис, которого на листе нет), трубка сердечника заполнилась рисом (#154 — дыра занимала 16 % площади и была невидима, потому что красилась рисом), и долг ядра стал сниматься вместе с ядром (#156 — иначе ролл выходил на 42 % МЕНЬШЕ листа).
А спираль оказалась не невозможной, а другим блюдом. Возражение владельца было точным — «нори же не растянуть», — и ответ в том, что растягивать не надо: ролл становится меньше. При той же площади риса у спирали нет дырки в середине, поэтому обхвата нужно меньше. Замер: кольцо с ядром 0,6R даёт ⌀ 59,2 мм и обхват 186; спираль — ⌀ 47,4 и обхват 149 при 2,8 витка.
Поэтому в каталоге появилась вторая база — узумаки 渦巻き寿司:
витков 1,96, ⌀ 55,2 мм → витков 5,88, ⌀ 39,8 мм →
витков 5,93, ⌀ 39,3 мм (пересняты 02.09 коммитом 87c4057,
сверено 05.09: play/checks.js:131), ядра нет вовсе, носитель — омлет, а не нори.
Почему числа пересмотрены. База называлась спиралью и спирали не делала. Владелец разложила начинку по всему листу и сказала: «совсем не похожа на архимедову спираль». Она была права — полтора-два витка это кольцо с нахлёстом, и спиралью оно не станет ни при какой отрисовке. Витков ≈ √(L / 4π·T), и замер показал, что одним листом спирали не выходит вовсе: даже при рисе 1,25 мм потолок 3,2 витка, а тоньше рис — уже не постель, а плёнка. Длинный лист витки даёт, но при толстом рисе раздувает ролл до ⌀ 66 мм, что не еда. Работает только пара «длинный лист И тонкий рис»: 42 см при 1,5 мм.
В самой записи базы это намерение стояло с самого начала — «постель тоньше, потому что на
спираль рис кладут тоньше», — но взято было 1,4 против 1,57 у футомаки, то есть 7,0 мм
против 7,3 7,85 (пересчёт по U_MM = 5,
catalog.js:205; так и записано в новом ядре —
play/core-v2/units.js:225. Ошибка продублирована в комментарии
catalog.js:165). Намерение записали, в число не положили. Диаметр при пересмотре упал,
и это правильная сторона: тонкая постель уносит меньше площади.
⚑ Два листа встык — приём настоящий (飾り巻き寿司 доматывают вторым листом), но именно для
渦巻き寿司 источником не подтверждён; сходимость по объёму проверена: 42 × 19 см при 1,5 мм
≈ 120 см³ риса против 200 г на футомаки у 白ごはん.com.
Правило «нори не крутят спиралью» осталось решением о содержании игры, а не свойством геометрии: модель обязана уметь свернуть что угодно, ограничивать будет тот слой, который раздаёт базы.
И кольцо теперь само переходит в спираль, когда рису нечем обойти начинки
(#141). Порог выведен, а не выбран — периметр коробки ядра против длины намазки, — и обе
его границы замерены: эхомаки при 1,01 обязан остаться кольцом (это настоящее блюдо, семь
начинок по числу богов удачи), семь полос по всему листу при 1,15 кольцом быть не могут.
⚠ Величина заменена (#152). Та мерка перестала отвечать на свой
вопрос: скрутка стала собирать начинки в пучок, и замер дал семь полос по
всему листу с отношением 0,45 — меньше канона 0,50, то есть порог сработал бы
наоборот. Действующий критерий — охват начинок вдоль листа против длины намазки,
play/model/geometry.js:2406-2422, срабатывание при охвате > 0,6.
⚠ Что в этом разделе всё ещё не доведено: лента носителя прыгает на 3 мм за один
бин (#153 — дуга бина 0,1 мм, любая вертикальная стена профиля становится радиальным обрывом;
за 02.09 скачок ушёл с 5,67 до 3,47, а после правок 03.09 — до 1,50 мм),
и у спирали остаётся расхождение площади −6,5 %. Оба числа под мерками.
Но не оба под сторожем: цикл проверки идёт по
['hoso','futo','ura'] (play/checks.js:669) — все три кольцевые,
а узумаки, единственная спиральная база, в него не входит, поэтому расхождение площади
сторож поймать не может. И номера тикетов здесь неверны: #153 и
#156 — про другое, та же ошибка продублирована в коде
(checks.js:690,704,711, geometry.js:2454).
Обновлено 02.09.2026
play/test/practice.js:739-745). Числа 466–587 в коде не осталось.docs/ingredients.md), формы сечения заведены все семь; осталось связать
продукт с приёмом, а это упирается в «нарезку выбирает игрок» (#46).nori_torn — унаследован от старой модели и
для листа в 2,5 оборота слишком строгий.Что из прежнего списка закрыто: хосомаки и футомаки стали двумя базами с разной длиной листа (вместо одной «суши» с обрезкой излишка), и появились ещё две. Пункт «сравнить с фотографиями реальных срезов» закрыт не так, как задумывался: снимок анфас с приемлемым наклоном не нашёлся ни у мастеров, ни у школ, зато числа нашлись в паспортах суши-машин — и они точнее любого обмера по кадру.