lawref.approvals
Контур утверждений B1 — WP-26 (LAYERS-SURFACES §3.6; DECISION-0006).
Юрист утверждает блок ревью-документа, а не пакет и не файл. Запись утверждения привязывает блок к паре хэшей:
subjectSemanticHash— semantic hash узла (§209-фильтр, применённый к узлу): что именно подписано по смыслу;verbalizationHash— sha256 байтов вербализованного блока: что именно подписано по тексту.
Расхождение любой из них переводит утверждение в stale (LDC-E8202), и это
две РАЗНЫЕ причины: «подписан другой смысл» и «подписан другой текст». Юристу
нужно видеть, какая именно — от этого зависит, нужен ли повторный разбор нормы
или достаточно перечитать формулировку.
Границы, вытекающие из errata E-0010: правка метки НЕ меняет semantic hash
узла, поэтому наполнение меток даёт stale_verbalization, а не
stale_semantics. Правка соседней нормы не трогает ни то, ни другое —
утверждение остаётся действительным.
Здесь нет часов: at — данные о человеческом действии, они приходят
параметром (FND §6 запрещает ambient clock в семантическом пути).
Язык — ось утверждения, а не его свойство (DECISION-0032): запись несёт
language, и утверждения на разных языках независимы. Черновой pack
(reviewStatus: draft) утверждать статусом выше draft нельзя — та же форма
отказа, что у блока с маркером §3.3, и по той же причине: подписывать
формулировку, которую никто не выверил, значит подписывать неизвестное.
Attributes
| Name | Description |
|---|---|
APPROVING_STATUS | No description. |
CURRENT | No description. |
ORPHANED | No description. |
SCHEMA_VERSION | No description. |
STALE_APPROVAL | No description. |
STALE_SEMANTICS | No description. |
STALE_VERBALIZATION | No description. |
STATUSES | No description. |
Functions
| Name | Description |
|---|---|
check_approval | Сверка утверждения с текущими программой и вербализацией. |
make_approval | Запись утверждения по узлу CLIR и его блоку вербализации. |
review_queue | Очередь повторного ревью: диагностики LDC-E8202 по устаревшим записям. |
summary | Сводка по пакету: сколько блоков утверждено, сколько устарело, сколько |
verified_ready | Выполнено ли необходимое условие §33.1 для перехода фрагмента в VERIFIED. |
APPROVING_STATUSattributemodule attribute#
APPROVING_STATUS = 'approved'CURRENTattributemodule attribute#
CURRENT = 'current'ORPHANEDattributemodule attribute#
ORPHANED = 'orphaned'SCHEMA_VERSIONattributemodule attribute#
SCHEMA_VERSION = 'law.review/0.1'STALE_APPROVALattributemodule attribute#
STALE_APPROVAL = 'LDC-E8202'STALE_SEMANTICSattributemodule attribute#
STALE_SEMANTICS = 'stale_semantics'STALE_VERBALIZATIONattributemodule attribute#
STALE_VERBALIZATION = 'stale_verbalization'STATUSESattributemodule attribute#
STATUSES = ('draft', 'reviewed', 'verified', 'approved', 'disputed')check_approvalfunction#
def check_approval(approval: dict, document: dict, verbalization: dict) -> dictСверка утверждения с текущими программой и вербализацией.
Возвращает {"state", "subjectId", "reason"?, "expected"?, "actual"?}.
state — один из current / stale_semantics / stale_verbalization /
orphaned. Смена версии pack сама по себе устареванием НЕ является: §3.6
привязывает утверждение к тексту, и если текст не изменился, подписано
ровно то же самое.
make_approvalfunction#
def make_approval(node: dict, block: dict, pack: dict, reviewer: str, at: str, document: dict | None = None, status: str = APPROVING_STATUS, note: str | None = None) -> dictЗапись утверждения по узлу CLIR и его блоку вербализации.
block — элемент verbalize(...)["blocks"]. Блок с маркером тотальности
(LDC-E8201) утвердить статусом выше draft нельзя: юрист подписал бы
текст, в котором семантика спрятана (LS §3.3).
review_queuefunction#
def review_queue(approvals: list[dict], document: dict, verbalization: dict) -> list[dict]Очередь повторного ревью: диагностики LDC-E8202 по устаревшим записям.
Порядок — по subjectId: очередь детерминирована и сравнима между
прогонами (§211 в духе, хотя сама очередь семантикой не является).
summaryfunction#
def summary(approvals: list[dict], document: dict, verbalization: dict) -> dict[str, Any]verified_readyfunction#
def verified_ready(node_id: str, approvals: list[dict], document: dict, verbalization: dict, language: str | None = None) -> boolDocumentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.