lawref.goals
Цели акта как объект (DECISION-0089) — оркестрация над свойствами §270.
Цель есть свойство с основанием basis (якорь §194 в преамбулу или иной
текст о том, ЗАЧЕМ акт принят). Модуль отвечает на три вопроса тремя
чистыми операциями над уже существующими движками и не содержит ни строчки
семантики (инвариант 5):
- вердикт цели над МНОЖЕСТВОМ миров (дела формата О-1):
HELD,FAILED(контрпримеры названы парой мир/сущность),SKIPPED(наблюдающее правило не исполнено, §111) иVACUOUS— домен пуст во ВСЕХ мирах. Последний — третье значение, а не «держится на нуле»: цель по выходу невыбранного прочтения вакуумна всегда, и без этого значения фильтр ниже либо всё отбрасывает, либо пропускает пустой контекст (замер на fiqh.sawm 02.09.2026); - таблица «прочтение × цель» (
--by-interpretation): по одному контексту на альтернативу группы §155 (exactly_one— каждая;any_of— пустой выбор и каждая порознь;compose_explicitly— не перечисляется, назван в манифесте). Режим анализа §156 оракулом не реализован, и здесь он не нужен: N контекстов — оркестрация; - телеологический ФИЛЬТР с порядком целей
over: по рангам от старших к младшим остаются альтернативы без единогоFAILEDв ранге, а среди них — с хотя бы однимHELD, если такие есть. Итог —TELEOLOGICAL-UNIQUE,-AMBIGUOUS,-VOID(ни одна не служит целям),-VACUOUS(ни одна цель ни одну альтернативу не различает). Фильтр НЕ пишет контекст и не выбирает: выбор прочтения остаётся за контекстом дела §152.
Исполняет свойство оракул (lawtest.run_property); понижение свойства —
работа компилятора (lawc lower-property --all), и модуль принимает уже
понижённые документы, чтобы не зависеть от него.
Attributes
| Name | Description |
|---|---|
ALTERNATIVES_CAP | No description. |
GOALS_BROKEN | No description. |
GOALS_PRESERVED | No description. |
GOALS_VACUOUS | No description. |
NO_SELECTION | No description. |
SCHEMA_VERSION | No description. |
Classes
| Name | Description |
|---|---|
GoalsError | Отказ по входу: цель без основания, повисший якорь, цикл порядка. |
Functions
| Name | Description |
|---|---|
aggregate | No description. |
alternatives | Альтернативы прочтений из групп §155 документа: список |
build | No description. |
check_goals | Каждая цель несёт basis, и он ведёт в фрагмент документа. |
evaluate_goals | Отчёт: манифест + строки (альтернатива × цель) с вердиктом по мирам. |
exit_code | 0 — цели держатся (или прочтение найдено/не единственно), 1 — |
goal_ranks | Ранг цели по порядку over: 0 у старших, +1 за каждое ребро вниз |
impact_section | Раздел goals impact-отчёта: вердикт каждой цели ДО и ПОСЛЕ на одних |
plain_verdict | Итог без прочтений: FAILED > SKIPPED > VACUOUS > HELD. |
render_impact_section | No description. |
render_text | No description. |
report_bytes | No description. |
teleological_filter | Лексикографический фильтр по рангам целей (DECISION-0089 §4.3). |
world_verdict | No description. |
ALTERNATIVES_CAPattributemodule attribute#
ALTERNATIVES_CAP = 64GOALS_BROKENattributemodule attribute#
GOALS_BROKEN = 'GOALS-BROKEN'GOALS_PRESERVEDattributemodule attribute#
GOALS_PRESERVED = 'GOALS-PRESERVED'GOALS_VACUOUSattributemodule attribute#
GOALS_VACUOUS = 'GOALS-VACUOUS'NO_SELECTIONattributemodule attribute#
NO_SELECTION = '—'SCHEMA_VERSIONattributemodule attribute#
SCHEMA_VERSION = 'law.goals/0.1'GoalsErrorclass#
class GoalsError(ValueError)Bases: ValueError
Отказ по входу: цель без основания, повисший якорь, цикл порядка.
aggregatefunction#
def aggregate(verdicts: list[str]) -> stralternativesfunction#
def alternatives(ir: dict, cap: int = ALTERNATIVES_CAP) -> tuple[list[dict], list[dict]]Альтернативы прочтений из групп §155 документа: список
{"label", "selected": [urn...]} и список групп манифеста.
buildfunction#
def build(ir: dict, documents: list[dict], worlds: list[tuple[str, dict]], by_interpretation: bool = False) -> dictcheck_goalsfunction#
def check_goals(ir: dict, documents: list[dict]) -> NoneКаждая цель несёт basis, и он ведёт в фрагмент документа.
Повисший якорь молчалив (dangling-source-anchor-is-silent), поэтому
отказ здесь, до единого вызова движка.
evaluate_goalsfunction#
def evaluate_goals(ir: dict, documents: list[dict], worlds: list[tuple[str, dict]], alternatives_list: list[dict] | None = None) -> dict[str, Any]Отчёт: манифест + строки (альтернатива × цель) с вердиктом по мирам. Детерминирован кортежем (документ, цели, миры, альтернативы): цели и миры сортируются по имени, чтобы байты не зависели от порядка argv.
exit_codefunction#
def exit_code(report: dict) -> int0 — цели держатся (или прочтение найдено/не единственно), 1 — контрпример, 4 — «не утверждение о праве» (вакуум, пропуск, VOID).
goal_ranksfunction#
def goal_ranks(documents: list[dict]) -> dict[str, int]Ранг цели по порядку over: 0 у старших, +1 за каждое ребро вниз
(длиннейший путь). Цикл — отказ: порядок обязан быть частичным.
impact_sectionfunction#
def impact_section(before: dict, after: dict, documents: list[dict], worlds: list[tuple[str, dict]]) -> dictРаздел goals impact-отчёта: вердикт каждой цели ДО и ПОСЛЕ на одних
мирах, разность контрпримеров, итог.
GOALS-BROKEN(<цели>) — цель держалась до и упала после (FAILED) либо
перестала проверяться (SKIPPED); уже павшая до и павшая после названа
отдельно (alreadyFailed) — поправка её не ломала. GOALS-VACUOUS —
ни одна цель после поправки не имеет домена ни в одном мире: «цели
сохранены» на нуле дел не утверждается. Основания сверяются с
документом ДО; после поправки фрагмент может исчезнуть — это названо
полем basisAfter, а не отказом: снятая преамбула сама есть находка.
plain_verdictfunction#
def plain_verdict(report: dict) -> strИтог без прочтений: FAILED > SKIPPED > VACUOUS > HELD.
render_impact_sectionfunction#
def render_impact_section(section: dict) -> list[str]render_textfunction#
def render_text(report: dict) -> strreport_bytesfunction#
def report_bytes(report: dict) -> bytesteleological_filterfunction#
def teleological_filter(report: dict) -> dictЛексикографический фильтр по рангам целей (DECISION-0089 §4.3).
world_verdictfunction#
def world_verdict(result: dict) -> strDocumentation for Arxo. Writings — blog.arxo.io.
Anonymous visit counts on stats.arxo.io, no cookies.