# Часть XX. Interpretations и theories ## 152. Interpretation ```law @id("urn:kz:interpretation:article25:literal") interpretation LiteralReading of ARTICLE_25_P3 { status reviewed; authority LEGAL_TEAM_A; effective [@2026-01-01, infinity); include R_LITERAL_1, R_LITERAL_2; } ``` Interpretation является именованным набором: - rules; - priorities; - definitions; - anchors; - metadata; - lifecycle. `of R` — ПРОВЕНАНС прочтения: он называет документ, который прочтение толкует. Ссылка здесь может быть квалифицированной (`of pkg::Fragment`, §23) и разрешается ровно так же, как `@source(pkg::Fragment)` §33: пакет обязан быть предъявлен resolve-контекстом §11, символ — стоять в составе экспорта §24, а `exportKinds` — назвать его `fragment`. Прочтение, толкующее чужую публикацию, тем самым живёт в СВОЁМ пакете, а первоисточник остаётся в своём (DECISION-0152). То же верно для `source_anchor` внутри тела прочтения. `include` и `exclude` — позиция ЧЛЕНСТВА, и она остаётся ЛОКАЛЬНОЙ. Квалифицированная ссылка здесь отвергается, и причина в самой канонической экспансии, описанной ниже: её вычисляет lowering ИЗ ОБЪЯВЛЕНИЯ, а объявления соседа у него нет — импорт несёт интерфейс, а не узлы (§23). Межпакетный `include` внёс бы в прочтение один корневой StableId и молча оставил бы `R/alt/N`, `R/unless/N`, `R/norm/*` и `R/head/N` вне прочтения — ровно тот отказ, против которого написана errata E-0115. Чтобы чужое правило участвовало в прочтении, его владелец объявляет `pub interpretation` §24 и включает правило туда, а потребитель называет это прочтение в `extends` §157 или в `alternatives` §155. `include R` включает КАНОНИЧЕСКУЮ ЭКСПАНСИЮ объявления `R`, а не один узел (errata E-0115): вместе с `R` в прочтение входят все узлы, которые lowering из него порождает, — альтернативы §206 `R/alt/N`, дефитеры §149/§150 `R/unless/N` с их рёбрами приоритета, узлы норм `R/norm/*`, головы §99 `R/head/N`. Для вложенных членов прочтения это и раньше делалось составом `includes`; для внешних ссылок — нет, и порождённый `unless`-дефитер оставался вне всякого прочтения, действуя во всех сразу. ## 153. Nested authoring Допустимо: ```text interpretation CourtReading of ARTICLE_25_P3 { status binding; authority COURT_DECISION_77; rule R1 defeasible { ... } priority P1 { ... } } ``` Nested IDs получают interpretation namespace, но должны иметь stable expanded IDs. Вложенный член — декларация, а не текст: статические проверки, обязательные для верхнеуровневой декларации того же вида, обязательны и для него. В частности, связанность §190 у вложенного правила и презумпции проверяется теми же правилами и звучит тем же кодом `LDC-E4101`, а имя в диагностике — то, которое даёт lowering (`Прочтение/Правило`). До errata E-0137 проход §190 обходил только верхний уровень, и незакрытая голова внутри прочтения доживала до исполнения. Межправиловые проверки — цикл §110, поздний производитель §111, приоритеты §116, цель дефитера §149 — рассуждают о правилах, которые могут быть активны ОДНОВРЕМЕННО, и потому считаются с учётом членства §104.4: по каждому максимальному согласованному выбору прочтений (одна альтернатива из каждой группы `exactly_one` §155 плюс все прочтения вне таких групп). Цикл, собранный из правил двух альтернатив одной группы `exactly_one`, статически не репортится — он не реализуем; тот же цикл внутри одного прочтения или через `any_of` репортится (errata E-0139). ## 154. Interpretation status Стандартные metadata values: ```text proposed reviewed official binding persuasive disputed rejected superseded ``` Status сам по себе не выбирает interpretation. Selection policy jurisdiction profile определяет его значение. ## 155. Interpretation group ```law interpretation_group MeaningOfArticle25 { alternatives LiteralReading, CourtReading, AcademicReading; selection exactly_one; } ``` Policies: ```text exactly_one any_of compose_explicitly ``` `alternatives` принимает и квалифицированную ссылку на `pub interpretation` чужого пакета (§23/§24, DECISION-0152) — тогда группа собирается в пакете-потребителе над прочтениями, каждое из которых объявлено рядом со СВОИМ закреплённым первоисточником. Требование к миру при этом обычное: альтернатива участвует в разрешении группы, когда её пакет в мире есть; иначе при `exactly_one` ровно одна выбранной не окажется, и §156 даёт `INTERPRETATION_REQUIRED`. Отдельной диагностики «альтернативы нет в мире» не заводится — она была бы вторым носителем того же факта. ## 156. Evaluation of alternatives Если context не выбирает ровно одну alternative при `exactly_one`, evaluator возвращает `INTERPRETATION_REQUIRED`. `INTERPRETATION_REQUIRED` — статус РЕЗУЛЬТАТА, а не документа (errata E-0140): его получают только запросы, ЗАВИСЯЩИЕ от группы. Запрос зависит от группы, когда предикат его цели лежит в замыкании по телам правил от голов узлов заблокированных альтернатив; замыкание считается над полной программой тем же извлекателем рёбер, что у стратификации §110 — по каждому конъюнкту тела, включая негатив, `not_known` и кванторы. Независимый truth-запрос получает `COMPUTED` и свой `truthStatus`: выбор прочтения на этот ответ не влияет, и требовать его — значит отвечать не на тот вопрос. Issue `INTERPRETATION_REQUIRED` в документе при этом остаётся — это факт о входе. Зависимость определена и для двух других видов запросов (E-0140, дополнение). `collect` §183 зависит от группы, когда хотя бы один предикат литерала его comprehension-терма — в генераторе, в условиях, в элементе — лежит в том же замыкании: выбор прочтения способен изменить состав коллекции. `positions` §134 зависит от группы, когда заблокирована хотя бы одна альтернатива, содержащая правило-производитель позиции (голова — норма §120), либо активный производитель позиции читает зависимый предикат: под другой альтернативой позиций было бы больше, меньше или они стояли бы на других посылках. Независимые `collect` и `positions` получают `COMPUTED`. `weak_permission` и календарные операции сохраняют документный статус: зависимость для них не определена. Analysis mode может вычислить каждую alternative отдельно: ```text results_by_interpretation { LiteralReading: ... CourtReading: ... } ``` Результаты не смешиваются. ## 157. Extends ```law interpretation CourtReading extends Baseline { status reviewed; include CourtRule; exclude BaselineRule17; } ``` Ссылка в `extends` — того же рода, что в `alternatives`, и может быть квалифицированной (`extends pkg::Baseline`, §23/§24). `exclude` при этом остаётся локальным по причине §152: он снимает ту же экспансию, что вносит `include`. `extends` создаёт set composition, а не mutation. `exclude` должен быть explicit и видимым в provenance. `exclude R` снимает ту же экспансию, что `include R` вносит (errata E-0115): узел и всё, что lowering породил из него. ## 158. Conflicting official texts Различные language editions могут поддерживать разные interpretations. Система должна позволить: ```text interpretation KkReading of ART_KK { ... } interpretation RuReading of ART_RU { ... } ``` и вернуть divergence report. ---