docs(mxl): убрать из спеки результаты исследования, привести правила в порядок

Продолжение чистки после перечитывания глазами модели, которая применяет навык.

- из раздела ограничений убраны доли по корпусу ERP. Это результат исследования, а не
  то, что помогает применять навык: модель работает с конкретным макетом, а не с
  популяцией, и числа стареют. Перечень того, что теряется при round-trip, остался
  списком; замеры живут в материалах кампании;

- фраза про ошибки короткой формы была вырвана из контекста: шла после списка
  ограничений, начиналась с символа в кавычках, и до самого конца было непонятно, что
  речь про отказ. Плюс в один ряд попало разнородное — три случая про сам шорткат и
  переполнение columns, которое к короткой форме не привязано. Переписано правилами:
  маркеру нужно, что продолжать; объектный элемент не несёт col; элементов не больше
  columns. Поведение при нарушении — одной фразой в конце;

- в SKILL.md ключевые правила шли вперемешку по уровням (страница, ячейка, строка,
  ячейка, область). Пересобраны сверху вниз: документ → область → строка → ячейка;

- буллет про namedAreas сокращён: обнаружимость ключа даёт карта структуры, а из
  правил там неочевидно только отсутствие ключа type.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-10 18:16:40 +03:00
co-authored by Claude Opus 5
parent e268fbd71f
commit 8cae947f4b
3 changed files with 33 additions and 41 deletions
+14 -18
View File
@@ -178,7 +178,7 @@
- не выразить текст, совпадающий с `">"`, `"|"` или с шаблоном `"{...}"`;
- `"|"` продолжает ячейку из предыдущей строки, только если её позиция известна явно (`col` задан или строка записана массивом).
`">"` без ячейки слева, `"|"` без ячейки сверху, объектный элемент с `col`, элементов больше `columns` → ненулевой код выхода и сообщение в stderr.
Маркеру нужно, что продолжать: `">"` требует ячейку слева в той же строке, `"|"` ячейку сверху. Объектный элемент не должен нести `col`: позиция уже задана порядком. Число элементов не может превышать `columns`. Нарушение любого из этих правил → ненулевой код выхода и сообщение в stderr.
## Ячейки (`cells[]`)
@@ -211,22 +211,18 @@
DSL описывает не все конструкции табличного документа. Перечисленное ниже **теряется при
round-trip** (`/mxl-decompile``/mxl-compile`): в JSON оно не попадает, в сгенерированный
XML не возвращается. Доля — по корпусу типовой ERP 8.3.24 (10 924 макета), где измерялась.
XML не возвращается.
| Конструкция | Доля макетов |
|-------------|--------------|
| Ячейки-поля ввода (`containsValue` / `valueType` / `controlType`) | 53% |
| Несколько наборов колонок (`columnsID`) — свои ширины у группы строк | 63% |
| Объединения, не привязанные к ячейке (по всей высоте или ширине) | 16% |
| Рисунки и картинки (в т.ч. штрихкоды) | 2% |
| Цвет текста, цвет фона ячейки, скрытые строки/колонки, отступ | — |
| Рамка с разным стилем у разных сторон; стили линий кроме сплошной | — |
| Группировки строк и колонок | — |
| Колонтитулы, параметры печати, область печати | — |
- ячейки-поля ввода (`containsValue` / `valueType` / `controlType`);
- несколько наборов колонок (`columnsID`) — свои ширины у группы строк;
- объединения, не привязанные к ячейке (по всей высоте или ширине документа);
- рисунки и картинки, в том числе штрихкоды;
- цвет текста, цвет фона ячейки, скрытые строки и колонки, отступ;
- рамка с разным стилем у разных сторон; стили линий кроме сплошной;
- группировки строк и колонок;
- колонтитулы, параметры печати, область печати;
- многоязычные надписи: при разборе берётся первый вариант текста, при генерации язык
всегда `ru`, остальные теряются.
**Многоязычные надписи не поддерживаются:** при разборе берётся первый вариант текста,
при генерации язык всегда `ru`. Для двуязычных макетов (в ERP это почти весь корпус)
надписи на остальных языках теряются.
Отдельно: пересборка макета из DSL — это полная перегенерация, а не точечная правка XML,
поэтому diff после round-trip обычно шире фактической доработки.
Пересборка макета из DSL — это полная перегенерация, а не точечная правка XML, поэтому
diff после round-trip обычно шире фактической доработки.