lawref.evaluator.engine
Конвейер вычисления: порядок фаз и запуск вектора.
Порядок фаз нормативен и проверяется differential-ом, менять его нельзя: context §89.1 → ingest §71–§73 → dynamic references §30.2 → манифест §170 → halt E-0001 → §194 → стратификация §110 → strict §103 → closure §70 → strict → defeasible §104–§115 → цепочка норм §143 → keys §45.1 → ветвь запроса.
Classes
| Name | Description |
|---|---|
EvaluationRequest | Типизированный единственный вход evaluation (DECISION-0111 §2.2). |
EvaluationRequestError | No description. |
UnsupportedLanguageVersionError | LDC-E1401 на evaluation boundary для отозванной семантики. |
Functions
| Name | Description |
|---|---|
evaluate | Публичная граница исполнения (DECISION-0111 §2.2). |
run_vector | Исполнение evaluate-вектора: ('result', doc) | ('error', {'error': {...}}). |
EvaluationRequestclassdataclass#
class EvaluationRequest(ir: dict, case: dict, query: dict, calendar_resource: bytes | None = None, external_snapshots: tuple[dict, ...] = tuple(), receipt: dict | None = None, semantic_version: str = '', editions_as_presented: str | None = None, proof_graph: bool = True)Типизированный единственный вход evaluation (DECISION-0111 §2.2).
Семантические options живут только в case["options"]. Calendar,
external snapshots и receipt — transport-поля запроса и не входят в
caseHash. Неизвестный верхнеуровневый ключ wire-формы отклоняет схема.
calendar_resourceattributeclass attributeinstance attribute#
calendar_resource: bytes | None = Nonecaseattributeinstance attribute#
case: dicteditions_as_presentedattributeclass attributeinstance attribute#
editions_as_presented: str | None = Noneexternal_snapshotsattributeclass attributeinstance attribute#
external_snapshots: tuple[dict, ...] = field(default_factory=tuple)irattributeinstance attribute#
ir: dictproof_graphattributeclass attributeinstance attribute#
proof_graph: bool = Truequeryattributeinstance attribute#
query: dictreceiptattributeclass attributeinstance attribute#
receipt: dict | None = Nonesemantic_versionattributeclass attributeinstance attribute#
semantic_version: str = ''buildmethodclassmethod#
def build(ir: dict, case: dict, query: dict, options: dict | None = None, external_snapshots: list[dict] | tuple[dict, ...] | None = None, *, semantic_version: str | None = None, editions_as_presented: str | None = None) -> 'EvaluationRequest'Собрать typed request из внутренних объектов хоста.
options здесь — лишь адаптер старых хостовых переменных на
единственное нормативное место case.options. Несемантические
calendar/receipt извлекаются из него и в caseHash не попадают.
Если хост не передал версию явно, она наследуется из закреплённого IR.
Отозванная ветвь 0.1 отклоняется по обеим осям: ни IR, ни явная
версия request не могут вернуть её в active evaluation.
Публичная граница исполнения всё равно одна: evaluate(request).
from_dictmethodclassmethod#
def from_dict(document: dict) -> 'EvaluationRequest'from_wire_bytesmethodclassmethod#
def from_wire_bytes(raw: bytes) -> 'EvaluationRequest'Build a request from the exact bytes admitted to the verdict cache.
The cache key is safe only when this method itself parsed raw into
the object passed to validation. Object callers use :meth:from_dict.
EvaluationRequestErrorclass#
class EvaluationRequestError(detail: str)Bases: ValueError
UnsupportedLanguageVersionErrorclass#
class UnsupportedLanguageVersionError(version: str)Bases: EvaluationRequestError
LDC-E1401 на evaluation boundary для отозванной семантики.
codeattributeclass attributeinstance attribute#
code = 'UNSUPPORTED_LANGUAGE_VERSION'diagnostic_codeattributeclass attributeinstance attribute#
diagnostic_code = 'LDC-E1401'messageattributeinstance attribute#
message = revision.withdrawn_evaluation_message(version)evaluatefunction#
def evaluate(request: EvaluationRequest) -> dictПубличная граница исполнения (DECISION-0111 §2.2).
Отчёт acceptance-фазы §78.2.7 вкладывается ЗДЕСЬ, одним владельцем на все
девять ветвей запроса: _evaluate кладёт его в sink, а attach_acceptance
вкладывает и пересчитывает resultHash. Без выбранной политики sink
пуст и документ возвращается тем же объектом — байты прежние (§78.2.8).
run_vectorfunction#
def run_vector(vector_dir, layer: str | None = None, semantic_version: str | None = None) -> tuple[str, dict]Исполнение evaluate-вектора: (‘result’, doc) | (‘error’, {‘error’: {…}}).
Артефакты: ir.json (hand-authored CLIR до появления парсера M3 — G-M1b заменит их выходом компилятора), case.json (интерим-JSON вместо .lawcase до M3), query.json, calendar.resource.json (для calendar_op), expected.json.
Documentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.