Skip to content

lawref.applicability

Машина применимости редакции по lifecycle-статусам §31 (D1).

v1 резолюции §30.2 (resolver.resolve_dynamic_references) читает ровно один статус — in_force. Этого хватало корпусу, но не хватает ни решению конституционного суда о неконституционности акта («прекращает действие со дня решения» — Конституция РК ст. 75), ни смене самой конституции (переходные положения ст. 94–96), ни приостановлению действия акта. Здесь статусы §31 получают семантику применимости, а resolver переключается на неё отдельным шагом — файл резолвера сейчас в правке параллельной полосы, и модуль написан самодостаточным именно поэтому.

Классы статусов (§31: Core не hard-code-ит последствия ВСЕХ labels, но in_force имеет стандартный смысл; здесь фиксируется минимальный набор, остальные статусы применимость не меняют):

  • открывающие in_force, restored — редакция применима с момента события и до конца его extent;
  • приостанавливающие suspended — не применима на протяжении extent;
  • закрывающие repealed, expired, invalidated — не применима с момента события и НЕОБРАТИМО: открывающее событие после закрывающего есть дефект данных (LDC-E5302), а не «воскрешение» редакции;
  • нейтральные adopted, published — фиксируют историю, применимость не меняют (в корпусе adopted встречается вместе с in_force).

invalidated реализует ровно ex nunc («со дня решения»): признание неконституционным задаётся событием с началом в дату решения. Ex tunc (недействительность с момента принятия) в v1 НЕ выражается и не подразумевается: для неё нужен отдельный статус со своей семантикой, и молчаливо трактовать invalidated как ретроактивный — значило бы решать за правопорядок.

Attributes

NameDescription
CLOSINGNo description.
LIFECYCLE_INCONSISTENT_CODENo description.
OPENINGNo description.
SUSPENDINGNo description.
TIMELESS_LIFECYCLE_CODENo description.

Functions

NameDescription
applicable_editionsРедакции источника, применимые на момент, + диагностики данных.
edition_stateСостояние редакции на момент: применима, приостановлена, закрыта или
is_applicableКороткая форма: применима ли редакция на момент (без деталей).
lifecycle_diagnosticsДефекты данных lifecycle: открывающее событие после закрывающего.

CLOSINGattributemodule attribute#

CLOSING = ('repealed', 'expired', 'invalidated')

LIFECYCLE_INCONSISTENT_CODEattributemodule attribute#

LIFECYCLE_INCONSISTENT_CODE = 'LDC-E5302'

OPENINGattributemodule attribute#

OPENING = ('in_force', 'restored')

SUSPENDINGattributemodule attribute#

SUSPENDING = ('suspended')

TIMELESS_LIFECYCLE_CODEattributemodule attribute#

TIMELESS_LIFECYCLE_CODE = 'LDC-E5308'

applicable_editionsfunction#

def applicable_editions(nodes: list[dict], work: str, legal_time: str) -> tuple[list[str], list[dict]]

Редакции источника, применимые на момент, + диагностики данных.

Замена v1-фильтра resolve_dynamic_references (тот считал применимой любую редакцию с покрывающим in_force-событием и не видел ни прекращения, ни приостановления). На данных из одних лишь in_force и adopted-событий ответ совпадает с v1 — проверяется воротами.

edition_statefunction#

def edition_state(edition: dict, legal_time: str) -> dict

Состояние редакции на момент: применима, приостановлена, закрыта или ещё не открыта.

Возвращает {"state": …, "since": …, "status": …, "mismatched": …}, где state — applicable | suspended | closed | not_yet, mismatched — граница lifecycle с granularity, отличной от legal_time (§82/§2.15: сравнение Date-vs-Instant требует TemporalResolutionPolicy, которой в v1 нет; вызывающий обязан отклонить резолюцию как ambiguous).

Правило: состояние определяет ПОСЛЕДНЕЕ наступившее событие, extent которого покрывает момент; открывающее событие с истёкшим extent применимость не даёт (редакция действовала, но перестала).

is_applicablefunction#

def is_applicable(edition: dict, legal_time: str) -> bool

Короткая форма: применима ли редакция на момент (без деталей).

lifecycle_diagnosticsfunction#

def lifecycle_diagnostics(edition: dict) -> list[dict]

Дефекты данных lifecycle: открывающее событие после закрывающего.

Закрывающие статусы необратимы (§31: consolidated/новая редакция — это НОВЫЙ edition с provenance chain, а не оживление старого).

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.