feat(mxl-compile): прощающий ввод — ячейка без col

Ячейка без col роняла py голым KeyError, а ps1 молча брал null как 0 и писал
Col = -1 — битую ячейку без единого сообщения. При этом опустить col модели
естественно: DSL устроен как HTML-таблица (rows → cells), и одиночный заголовок
или обычная строка пишутся без позиций.

Строка, в которой col нет НИ У ОДНОЙ ячейки, теперь раскладывается слева направо
с учётом span и занятых сверху rowspan-колонок. Смешанную строку не угадываем —
это опечатка; переполнение columns и явный col вне 1..columns тоже дают внятную
ошибку в stderr вместо тихой порчи.

Документация не менялась: col остаётся единственной каноничной формой, прощающий
ввод живёт только в коде — как регистронезависимость ключей DSL. Второй способ
адресации в SKILL.md превратил бы одно правило в развилку.

Правка сделана на ps1 и зазеркалена в py; вывод портов на общем примере совпадает
байт в байт.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-08-10 13:04:03 +03:00
co-authored by Claude Opus 5
parent 863c7ebbff
commit f33436adff
7 changed files with 360 additions and 2 deletions
@@ -0,0 +1,18 @@
{
"name": "Ошибка: раскладка без col не влезает в columns",
"input": {
"columns": 3,
"areas": [
{
"name": "Шапка",
"rows": [
{ "cells": [{ "text": "А" }, { "text": "Б" }, { "text": "В" }, { "text": "Г" }] }
]
}
]
},
"params": {
"outputPath": "Template.xml"
},
"expectError": "Row exceeds 'columns' (3): area \"Шапка\", row 1"
}