lawref.evaluator.editions
§92.3: применимость редакции на дату права — проекция §31 ВНУТРИ evaluate.
Errata E-0095, плечо (а), решение владельца 02.09.2026. До него evaluate
обеих реализаций звал машину применимости D1 (lawref.applicability) только
для динамических ссылок §30.2, и правило, чьи якоря ведут на редакцию,
закрытую на дату права, исполнялось как действующее — обе реализации были
согласны, и differential этого не видел по построению.
Критерий — тот же, что у внешней проекции impact.edition_projection, с
одним намеренным отличием, названным ниже:
- проецируются нормативные узлы (
NORMATIVE_KINDS) с непустыми якорями; фрагмент датирует узел своей редакцией §28, редакция — собой; - якорь, не разрешившийся ни во фрагмент, ни в редакцию, узел НЕ датирует
(строки внешнего реестра вида
KZ-MARRIAGE-CODE-ART-11— провенанс, а не lifecycle); - узел ИСКЛЮЧАЕТСЯ из вычисления, если ВСЕ его датирующие редакции на дату
права неприменимы (
closed | suspended | not_yet); достаточно одной применимой, чтобы узел остался; - редакция без единого события применимости (
in_force,restored,suspended,repealed,expired,invalidated) и безapplicability: timelessсчитается ВНЕ ДАТИРОВКИ и узел не исключает. Это и есть отличие от внешней проекции, которая такую редакцию читает какnot_yetи снимает всё заякоренное на любую дату: обычай, доктрину и памятник (tuystyq: 88 правил из 93 на редакции безin_force) никто в действие датой не вводил, и для них «право не датировано» — ответ, а не «право не действует». Внешняя проекция при этом строже внутренней, поэтому раннеры, проецирующие снаружи, после проекции внутри не меняют ни байта: снимать уже нечего.
Граница §82/§2.15: событие lifecycle с granularity, отличной от даты права
(Date против Instant), сравнению не подлежит — TemporalResolutionPolicy в
v1 нет. Такая редакция читается как вне датировки (узел остаётся), и о ней
сообщает предупреждение EDITION_APPLICABILITY_AMBIGUOUS: молчать здесь
значило бы вернуть E-0095 другой дверью.
Отчёт — двумя каналами и ровно там, где §92 их обещает («каждый шаг появляется в proof/explanation»):
- одна issue
EDITION_NOT_APPLICABLE(severityinfo) НА РЕДАКЦИЮ с перечнем исключённых узлов — документы без исключений не меняются ни байтом, и это ровно граница перезаморозки голденов «по факту»; - у
why_not(P)§185 исключённое правило-кандидат отвечаетapplicability: NOT_APPLICABLEс причиной §92.3 — тем же словарём, что у окнаeffective§87 (условие 4 списка §92; здесь — условие 3).
Ex tunc в §31 по-прежнему невыразим (invalidated — ex nunc, docstring
applicability), и времени ЗАПИСИ у lifecycle-события нет: оба предела
названы E-0095 и здесь не закрываются.
Attributes
| Name | Description |
|---|---|
EDITIONS_AS_PRESENTED_CODE | No description. |
EDITION_AMBIGUOUS_CODE | No description. |
EDITION_NOT_APPLICABLE_CODE | No description. |
NORMATIVE_KINDS | No description. |
Functions
| Name | Description |
|---|---|
anchor_edition | Редакция, которой якорь датирует узел: фрагмент → его редакция §28, |
describe_state | Словесная форма состояния редакции — одна на обе реализации (байты). |
is_dated | Несёт ли редакция хоть одно событие применимости §31 (или timeless). |
presented_issue | §92 (E-0167): состав редакций предъявлен вызывающим — одна issue. |
project_editions | Проекция §92.3 → (оставшиеся узлы, исключённые правила, |
EDITIONS_AS_PRESENTED_CODEattributemodule attribute#
EDITIONS_AS_PRESENTED_CODE = 'EDITIONS_AS_PRESENTED'EDITION_AMBIGUOUS_CODEattributemodule attribute#
EDITION_AMBIGUOUS_CODE = 'EDITION_APPLICABILITY_AMBIGUOUS'EDITION_NOT_APPLICABLE_CODEattributemodule attribute#
EDITION_NOT_APPLICABLE_CODE = 'EDITION_NOT_APPLICABLE'NORMATIVE_KINDSattributemodule attribute#
NORMATIVE_KINDS = ('assertion', 'constraint', 'norm_template', 'priority_rule', 'rule')anchor_editionfunction#
def anchor_edition(by_id: dict[str, dict], anchor: str) -> dict | NoneРедакция, которой якорь датирует узел: фрагмент → его редакция §28,
либо редакция напрямую; иначе None (якорь узел не датирует).
describe_statefunction#
def describe_state(state: dict) -> strСловесная форма состояния редакции — одна на обе реализации (байты).
is_datedfunction#
def is_dated(edition: dict) -> boolНесёт ли редакция хоть одно событие применимости §31 (или timeless).
presented_issuefunction#
def presented_issue(as_of: str, legal_time: str) -> dict§92 (E-0167): состав редакций предъявлен вызывающим — одна issue.
Проекция вызывающего НЕ проверяется: проверить её значило бы вновь
исполнить условие 3 по дате дела, то есть исполнить пересечение двух
проекций — ровно тот дефект, ради которого поле заведено (отчёт О-2).
Поэтому режим не доказывается, а НАЗЫВАЕТСЯ: здесь — в документе, и
полем editionsAsPresented в манифесте §170. Читатель обязан видеть, что
перед ним контрфактический ответ «то же дело при предъявленном составе
редакций», а не право на дату дела.
project_editionsfunction#
def project_editions(nodes: list[dict], legal_time: str) -> tuple[list[dict], list[dict], dict[str, str], list[dict]]Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.