UI переведён на минималистичную систему с бордо-акцентом и мягкими поверхностями:
- Заголовок документа берётся из meta.title (чистая кириллица), а не из имени
файла zip — устраняет mojibake «Ð овЅ». В шапку добавлены подписант
(«Фамилия И.О.» из сертификата) и дата подписи.
- Inter Variable (latin+cyrillic) подключён реально (@fontsource-variable),
раньше был только в font-family → fallback.
- Эмодзи-иконки (✅❌⚠) заменены на SVG в цветных кружках (StatusIcon).
- Карточки: мягкая тень + hairline вместо резкой рамки; кнопки/вердикт-бейдж/
sync-индикатор — единые токены поверхностей и статусов.
- Палитра статусов отделена от бордо (вердикт ≠ бренд).
typecheck чист, vite собирает без ошибок.
parser2@1.1.3 фиксит XtrimSupervisor (XTRIM MINID по un-acked pending,
а не lastDeliveredId) + null-гард в parseStreamEntries. До фикса индексатор
детерминированно падал в краш-лупе на entries-read=172094.
Проверено на live mono-ai-1 (484k блоков, genesis resync):
entries-read 15690 → 189608 монотонно, точка 172094 пройдена без краша;
crash_lines=0, restarts=0, supervisor рестартов индексатора=0;
stream_lag=0, status=synced. permission_history заполнен (genesis-блоки).
Поллер get_info ведёт head_block независимо от permission-событий; статус определяется лагом Redis-группы (вычитали стрим до хвоста), а не дельтой блоков. Supervisor вскрыл баг parser2@1.1.2 (XtrimSupervisor триммит un-acked pending → parseStreamEntries падает на null fields обрезанной записи) —消ит детерминированно, отчёт парсер-агенту.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>