fix(meta-info): кейс на множество в определяемом типе — фикстура вместо невалидной конфигурации

verify-snapshots отверг кейс: «ОпределяемыйТип.Любой - Недопустимый тип».
Спросил платформу — v8:TypeSet внутри определяемого типа запрещён вообще, и не
только AnyRef: отвергнуты также голый CatalogRef, Characteristic.X и вложенный
DefinedType.X, при том что контрольный вариант с обычным CatalogRef.X принят.
Замерено на 8.3.24.1691 загрузкой в базу. Отсюда и ноль таких узлов в корпусе —
это не совпадение, а запрет.

Комментарий в обоих портах утверждал обратное («платформа допускает») — правда
записана, факт добавлен в docs/meta-dsl-spec.md.

Сам разбор v8:TypeSet в выводе определяемого типа оставлен: meta-info читалка,
и рукотворный файл с таким узлом она обязана показать честно, а не потерять его
молча вместе с правдивым счётчиком. Кейс переведён на рукотворную фикстуру с
объявленной причиной пропуска платформенной проверки.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-20 17:53:46 +03:00
co-authored by Claude Opus 5
parent 501f7a2c4f
commit 510c9163e3
11 changed files with 434 additions and 44 deletions
+10 -6
View File
@@ -1158,9 +1158,11 @@ if (-not $drillDone) {
if ($mdType -eq "DefinedType") {
$typeNode2 = $props.SelectSingleNode("md:Type", $ns)
if ($typeNode2) {
# Оба узла, одним XPath и в порядке документа: v8:TypeSet внутри определяемого
# типа платформа допускает, а чтение только v8:Type МОЛЧА теряло его — счётчик
# «Типы (N)» врал.
# Оба узла, одним XPath и в порядке документа. v8:TypeSet внутри определяемого
# типа платформа НЕ принимает («Недопустимый тип», замерено на 8.3.24.1691 для
# AnyRef, голого CatalogRef, Characteristic.X и вложенного DefinedType.X),
# поэтому в выгрузке его не бывает — но в рукотворном файле бывает, и тогда
# чтение только v8:Type МОЛЧА теряло узел, а счётчик «Типы (N)» врал.
$types = @()
foreach ($t in $typeNode2.SelectNodes("v8:Type|v8:TypeSet", $ns)) {
if ($t.get_LocalName() -eq 'TypeSet') { $types += Format-SingleTypeSet $t.InnerText }
@@ -1360,9 +1362,11 @@ if (-not $drillDone) {
if ($mdType -eq "DefinedType") {
$typeNode2 = $props.SelectSingleNode("md:Type", $ns)
if ($typeNode2) {
# Оба узла, одним XPath и в порядке документа: v8:TypeSet внутри определяемого
# типа платформа допускает, а чтение только v8:Type МОЛЧА теряло его — счётчик
# «Типы (N)» врал.
# Оба узла, одним XPath и в порядке документа. v8:TypeSet внутри определяемого
# типа платформа НЕ принимает («Недопустимый тип», замерено на 8.3.24.1691 для
# AnyRef, голого CatalogRef, Characteristic.X и вложенного DefinedType.X),
# поэтому в выгрузке его не бывает — но в рукотворном файле бывает, и тогда
# чтение только v8:Type МОЛЧА теряло узел, а счётчик «Типы (N)» врал.
$types = @()
foreach ($t in $typeNode2.SelectNodes("v8:Type|v8:TypeSet", $ns)) {
if ($t.get_LocalName() -eq 'TypeSet') { $types += Format-SingleTypeSet $t.InnerText }
+10 -6
View File
@@ -1216,9 +1216,11 @@ if not drill_done:
if md_type == "DefinedType":
type_node2 = find(props, "md:Type")
if type_node2 is not None:
# Оба узла, одним XPath и в порядке документа: v8:TypeSet внутри определяемого
# типа платформа допускает, а чтение только v8:Type МОЛЧА теряло его — счётчик
# «Типы (N)» врал.
# Оба узла, одним XPath и в порядке документа. v8:TypeSet внутри определяемого
# типа платформа НЕ принимает («Недопустимый тип», замерено на 8.3.24.1691 для
# AnyRef, голого CatalogRef, Characteristic.X и вложенного DefinedType.X),
# поэтому в выгрузке его не бывает — но в рукотворном файле бывает, и тогда
# чтение только v8:Type МОЛЧА теряло узел, а счётчик «Типы (N)» врал.
types = []
for t in find_all(type_node2, "v8:Type|v8:TypeSet"):
if local_name(t) == "TypeSet":
@@ -1396,9 +1398,11 @@ if not drill_done:
if md_type == "DefinedType":
type_node2 = find(props, "md:Type")
if type_node2 is not None:
# Оба узла, одним XPath и в порядке документа: v8:TypeSet внутри определяемого
# типа платформа допускает, а чтение только v8:Type МОЛЧА теряло его — счётчик
# «Типы (N)» врал.
# Оба узла, одним XPath и в порядке документа. v8:TypeSet внутри определяемого
# типа платформа НЕ принимает («Недопустимый тип», замерено на 8.3.24.1691 для
# AnyRef, голого CatalogRef, Characteristic.X и вложенного DefinedType.X),
# поэтому в выгрузке его не бывает — но в рукотворном файле бывает, и тогда
# чтение только v8:Type МОЛЧА теряло узел, а счётчик «Типы (N)» врал.
types = []
for t in find_all(type_node2, "v8:Type|v8:TypeSet"):
if local_name(t) == "TypeSet":