Skip to content

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

NameDescription
APPROVING_STATUSNo description.
CURRENTNo description.
ORPHANEDNo description.
SCHEMA_VERSIONNo description.
STALE_APPROVALNo description.
STALE_SEMANTICSNo description.
STALE_VERBALIZATIONNo description.
STATUSESNo description.

Functions

NameDescription
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]

Сводка по пакету: сколько блоков утверждено, сколько устарело, сколько не утверждено вовсе. Нужна отчёту о покрытии §33.1 и дашборду плана §9.

verified_readyfunction#

def verified_ready(node_id: str, approvals: list[dict], document: dict, verbalization: dict, language: str | None = None) -> bool

Выполнено ли необходимое условие §33.1 для перехода фрагмента в VERIFIED.

Необходимое, а не достаточное: §33.1 требует ещё технических и conformance-проверок. Здесь проверяется ровно юридическая половина — есть действующее утверждение статуса approved на нужном языке.

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

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