# Возмещение расхода: исполнимый профиль EvidencePolicy Учебный пакет к SPEC **§78.2** и решению [DECISION-0126](../../../spec/decisions/0126-evidence-policy-executable-profile.ru.md). **Это не формализация законодательства.** Правило возмещения придумано ради демонстрации: организация возмещает сотруднику одну согласованную покупку, если согласование, сумма расхода и оплата ЭТОЙ покупки установлены без противоречия, а сумма не превышает предела. Демонстрируется не само правило, а то, **что делает три его факта установленными**. Не голое утверждение дела — а принятая политикой опора конкретного документа, с названной причиной у каждого принятия и непринятия. ## Что здесь лежит | Путь | Что это | |---|---| | `laws/expense-evidence.law` | пакет: норма возмещения, отношения проекции, ПРАВИЛА ПОЛИТИКИ и декларация `evidence policy ExpenseEvidenceV1` | | `laws/law.toml` | манифест §10 | | `clir/expense-evidence.lawir.json` | выход `lawc lower` — то, что исполняют движки | | `scenes/base.lawcase` | дело §168 в полном составе: пять документов, пять проверок подлинности, пять опор | | `tests/reimbursement.lawtest` | три сцены как тесты §267 с ожиданиями | | `run_demo.py` | четыре сцены одного дела: добавление и исключение документа | | `tools/differential.py` | байтовая сверка `lawref` ↔ `lawc` на каждой сцене | ## Как запустить ```bash python3 packs/demo/expense-evidence/run_demo.py ``` ```bash cd engines/lawc && cargo run -q -p law-cli -- test ../../packs/demo/expense-evidence/tests/reimbursement.lawtest --program ../../packs/demo/expense-evidence/clir/expense-evidence.lawir.json ``` ```bash python3 packs/demo/expense-evidence/tools/differential.py ``` Перегенерация CLIR после правки `.law`: ```bash cd engines/lawc && cargo run -q -p law-cli -- lower ../../packs/demo/expense-evidence/laws/expense-evidence.law > ../../packs/demo/expense-evidence/clir/expense-evidence.lawir.json ``` ## Четыре сцены 1. **Не тот платёж.** Приказ A17 подтверждает согласование покупки P42, чек R25 — её сумму. Банковское подтверждение B91 **подлинно**, проверено и действует — но относится к покупке P99. Опора оплаты не принимается, возмещение не выполнено. Непринятие **не означает**, что покупка не оплачена: результат `NEITHER`, а не `FALSE_ONLY`. 2. **Верный платёж.** Добавлен B92 с правильными реквизитами. Оплата установлена принятой опорой, три условия выполнены, возмещение выполнено. 3. **Исключение.** B92 убран вместе со своей опорой и проверкой — результат вернулся к сцене 1. Изменились ровно зависящие от него выводы. 4. **Две опоры.** Предъявлены B92 и B93, независимые друг от друга. Исключение первого оставляет второе: поддержка литерала есть МНОЖЕСТВО опор, а не флаг. ## Что здесь можно проверить руками - **Голое утверждение политику не обходит.** Тест `bare-assertion-does-not-bypass` кладёт в дело `assert paid(P42)` с origin `adjudicated`. Утверждение не входит в поддержку, причина — `PROTECTED_PREDICATE_REQUIRES_EVIDENCE` в отчёте `evidenceAcceptance` и `info`-issue в документе. Имя origin само по себе доверия не даёт. - **Документ не удостоверяет сам себя.** У всех документов `status verified`, но политика требует ещё и записи `verification` от доверенного проверяющего, привязанной к `content_hash` документа. Уберите `verification VB92` из `scenes/base.lawcase` — сцена 2 перестанет давать возмещение. - **Правила политики живут в пакете.** В `laws/expense-evidence.law` есть правила `AcceptApproval`, `AcceptAmount`, `AcceptPayment`, `AcceptPaymentReversal` и `SoundDocument`. В движках нет ни одного условия про банк, валюту, предел суммы и возмещение — это проверяют ворота `verify/ci/gates/silence/check_evidence_policy.py`. - **Принятие — доказанный переход.** У каждой принятой опоры в отчёте есть ссылка на узел `support_admission` proof-графа §180. У принятого факта узла `assertion` НЕТ: подделать его, не предъявив опору и правило, нельзя структурно (проверяет `check_proof_certificates.py`, семь подделок). ## Граница За пределами профиля 0.1 (§78.2.9): бремя доказывания как отдельная конструкция, стандарты доказывания сверх «хотя бы одна принятая подходящая опора», вероятностные веса, подсчёт большинства документов, OCR и извлечение из скана, подключение банков и реестров, исполнение криптографии, инкрементальный пересчёт. Проверка подлинности входит **закреплённым результатом** и ядром не вычисляется. Lean-ядро сверяет привязку узлов фазы, но правила политики и саму проекцию не пересчитывает — граница печатается словами в отчёте `check_proof_certificates`.