test: гард check-typeset-coverage — вывод meta-info замыкается на вход meta-compile

Связь «прочитал вывод → подал на вход» держалась на честном слове и рвалась
молча в обе стороны: meta-info печатал метки, которых нет в словаре
meta-compile (33 из 41), а в карте meta-info не было видов, которые
meta-compile эмитит, — и они печатались по-английски посреди русского вывода.
Снэпшоты этого не видят: кейсы читают и компилируют по отдельности, круг не
замыкая.

Инвариант строгий в одну сторону: каждая метка читалки обязана быть ключом в
typeSynonyms у meta-compile и вести ровно в тот же канон. Обратное неверно
намеренно — компилятор знает формы, которых читалка не печатает. Заодно гард
сверяет objectTypeMap и refTypeMap между портами навыка: переводы — часть
вывода, и расхождение портов дало бы разный текст на один и тот же файл.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-20 17:35:19 +03:00
co-authored by Claude Opus 5
parent 74e88e75c2
commit 1d8a6f2f58
3 changed files with 132 additions and 0 deletions
+1
View File
@@ -16,6 +16,7 @@ const GUARDS = [
['check-inline-drift.mjs', 'общие inline-реализации: копии совпадают с эталонами'],
['check-ps-define-before-call.mjs', 'порядок в .ps1: функция объявлена выше точки вызова'],
['check-type-maps.mjs', 'карты типов метаданных: согласованы со спецификацией'],
['check-typeset-coverage.mjs', 'имена типов: вывод meta-info замыкается на вход meta-compile'],
['check-format-versions.mjs', 'проверенный диапазон версий формата: согласован со спецификацией'],
['check-form-purposes.mjs', 'назначения форм в form-add: согласованы со спецификацией и между портами'],
['check-positional-binding.mjs', 'read-only навыки: позиционным остаётся только путь ко входу'],