Files
cc-1c-skills/tests/skills/cases/meta-compile/lenient-key-case.json
T
Nick ShirokovandClaude Opus 5 8c0fbed7d6 fix(meta-compile): регистронезависимый ввод в py-порте — паритет с PS
PowerShell не различает регистр нигде, куда попадает пользовательский ввод:
свойства объекта из ConvertFrom-Json, ключи Hashtable, -eq/-contains, имена
параметров, ValidateSet. Python различает везде, поэтому один и тот же DSL
давал разный результат на разных портах — и чаще всего молча: "CodeLength"
вместо "codeLength" в py просто не находился, навык печатал [OK], а свойство
в выход не попадало.

Пилот на meta-compile. В py-порт добавлены общие обёртки: CIDict (поиск без
учёта регистра, ключи хранятся как есть — часть из них имена объектов и
попадает в XML), ci_json (рекурсивно на разобранный DSL), ci_parse_args (имена
параметров и значения choices). Ими же обёрнуты словари синонимов видов,
алиасов enum и типов.

Попутно исправлен дефект самого канона: PS принимал "type":"catalog", но
дальше использовал значение как есть — в имени тега и в регистрации в
Configuration.xml, то есть отдавал <catalog>, которую платформа не примет.
Теперь вид приводится к канону списка в обоих портах.

check-inline-drift: extractPy научен доставать class (иначе тело CIDict
невидимо), заведены три семьи с ps1: null — в PS1 этих обёрток быть не должно.

Проверка: кейс lenient-key-case зелёный на обоих портах; полный регресс
673/673 (PS) и 670+3 skipped (PY); гарды 4/4; sweep по 400 справочникам трёх
конфигураций (декомпиляция → компиляция обоими портами) — 0 расхождений.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-09 19:48:24 +03:00

32 lines
850 B
JSON

{
"name": "Прощающий ввод: регистр ключей DSL, вида объекта и значений enum",
"input": [
{
"type": "Catalog",
"name": "Контрагенты",
"CodeLength": 15,
"DescriptionLength": 75,
"Hierarchical": true
},
{
"type": "catalog",
"name": "Валюты",
"codeLength": 12
},
{
"type": "AccumulationRegister",
"name": "ПродажиОбороты",
"registerType": "обороты",
"dimensions": ["Номенклатура: CatalogRef.Номенклатура"],
"resources": ["Сумма: Number(15,2)"]
}
],
"expect": {
"files": [
"Catalogs/Контрагенты.xml",
"Catalogs/Валюты.xml",
"AccumulationRegisters/ПродажиОбороты.xml"
]
}
}