15 KiB
Этап 4 — пакет по РБП: покрытие источника, live-маршрут и материализация доказательной базы
1. Контекст
Этот пакет делается узко под кейс РБП, а не как новая общая волна по всей системе. Вопрос про РБП уже зафиксирован как company-specific тест на lifecycle anomaly без выхода в полный Stage 5: “31 июля прошло “Списание РБП за Июль 2020 г.”, в том числе на 5 000 и ещё несколько сумм. Есть ли в базе признаки, что часть РБП к концу июля всё ещё живёт дольше ожидаемого?”
По живому прогону видно, что сейчас кейс остаётся в partial_coverage, живёт на snapshot-логике, live-путь слабый, admissible evidence до ответа не доезжает, а среди ограничений прямо фигурируют:
- snapshot 2020 read-only;
- live probe как ограниченный выборочный запрос;
matched_rows = 0;- live evidence исключён из grounded answer;
- admissibility gate убирает non-admissible evidence.
Stage 4 по-прежнему держим в рамках P0-only:
- без новых доменов,
- без graph/schema expansion,
- без Stage 5/6 как нового core path,
- без больших транспортных рефакторингов.
2. Цель пакета
Нужно не улучшить wording, а восстановить для РБП нормальный путь:
вопрос про РБП → правильные seed-объекты → правильный source coverage → правильный live route → admissible evidence → внятный proof-style ответ
Итогом пакета должно стать:
- понимание, какие данные по РБП реально нужны;
- понимание, где они лежат в snapshot/live;
- рабочий live/source path до этих данных;
- non-zero admissible evidence по РБП-кейсу;
- ответ, который ограничивается только если данных реально нет, а не потому что контур не дошёл до нужных сущностей.
3. Source of truth для пакета
Базовый вопрос
31 июля прошло “Списание РБП за Июль 2020 г.”, в том числе на 5 000 и ещё несколько сумм. Есть ли в базе признаки, что часть РБП к концу июля всё ещё живёт дольше ожидаемого?
Текущее живое поведение
По живому прогону для этого вопроса зафиксировано:
business_scope = generic_accounting;entity_hints = ["РБП"];document_hints = ["Списание РБП"];time_scope = "июль 2020";- режим ответа —
partial_coverage; - в uncertainties присутствуют snapshot-only, ограниченный live probe,
matched_rows=0, live evidence excluded, admissibility gate removed evidence.
Это и есть исходная точка, от которой строится пакет.
4. Главная рабочая гипотеза
Для РБП-кейса проблема сейчас не в одном месте, а в связке:
- source coverage: runtime не поднимает нужный набор сущностей по РБП;
- route gap: live path либо не выбирается, либо не ведёт к нужным данным;
- evidence materialization: даже если часть сигнала есть, он не превращается в admissible evidence.
Эта гипотеза должна быть либо подтверждена, либо опровергнута артефактами этого пакета.
5. Что нужно сделать
Пакет выполнить по 4 узлам.
Узел A — восстановить минимальную предметную модель РБП
Задача
Понять, какие сущности и переходы вообще обязательны для ответа на вопрос о “живущем дольше ожидаемого” РБП.
Что сделать
Для кейса РБП определить:
A1. Seed entities
- документ “Списание РБП за Июль 2020 г.”;
- суммы списания, включая 5 000;
- объект РБП / карточка РБП;
- период July 2020.
A2. Required entities
Минимально установить, какие сущности нужны для доказательного ответа:
- документ списания РБП;
- объект(ы) РБП;
- движения/остатки по РБП;
- основание списания;
- expected schedule/lifecycle списания;
- хвост/остаток на конец июля;
- связанные регистры;
- проводки;
- month-close связка, если она обязательна.
A3. Expected transitions
Зафиксировать обязательные переходы:
- объект РБП → документ списания;
- документ списания → движение/регистр/проводка;
- движение/остаток → состояние на конец июля;
- expected schedule → фактическое списание;
- июльский остаток → признак “живёт дольше ожидаемого”.
Acceptance
- Для РБП должен появиться явный
required_entity_map, а не общий доменный шум. - Должно быть ясно, без каких сущностей proof в принципе невозможен.
Узел B — аудит покрытия источника по РБП
Задача
Понять, есть ли вообще нужные данные, и где именно они доступны.
Что сделать
Проверить отдельно:
B1. Snapshot coverage
- какие snapshot-файлы реально содержат данные по РБП;
- есть ли в них документ списания;
- есть ли объекты РБП;
- есть ли остатки/движения/проводки;
- хватает ли snapshot-only, чтобы ответить на вопрос.
B2. Live coverage
-
какие MCP/live методы позволяют добраться до РБП-данных;
-
есть ли прямой путь до:
- документа списания,
- объекта РБП,
- остатка на конец периода,
- движения списания,
- schedule/основания;
-
что доступно напрямую, а что только через несколько шагов.
B3. Coverage verdict
Для каждого обязательного элемента указать:
available_in_snapshotavailable_via_liveavailable_but_not_used_by_runtimenot_reachable_in_current_runtime
Acceptance
- По каждому required entity должно быть ясно, где оно лежит и как до него дотянуться.
- Должен появиться жёсткий ответ: проблема в отсутствии данных или в том, что runtime их не использует.
Узел C — починить live route под РБП
Задача
Сделать так, чтобы runtime реально шёл в нужный контур РБП, а не оставался на snapshot-only/semantic profile.
Что сделать
-
Определить корректный
claim_typeдля РБП-кейса, например:prove_rbp_tail_stateprove_rbp_lifecycle_overstay
-
Для него прописать required live route:
- первый вызов на документ списания;
- второй на объект РБП;
- третий на движения/остатки;
- четвёртый на подтверждение конца периода / хвоста.
-
Проверить, что runtime действительно выбирает этот путь, а не остаётся в
canonical-only. -
В debug payload вывести:
claim_typerequired_live_callsexecuted_live_callsmissing_live_callsroute_gap_reason
Acceptance
- У РБП-кейса должен появиться непустой и осмысленный live call path.
- Live path должен быть привязан к claim, а не быть декоративным probe.
Узел D — materialization: превратить данные по РБП в admissible evidence
Задача
Убрать главный провал: данные/сигналы есть или могут быть, но до admissible evidence они не доезжают.
Что сделать
Для РБП-кейса восстановить полный путь:
raw source result -> candidate evidence -> admissible evidence -> answer
И по каждому шагу показать:
- что пришло;
- что было отрезано;
- почему было отрезано;
- что должно было стать admissible evidence, но не стало.
Обязательно классифицировать причины reject-а
Использовать причины вида:
wrong_periodwrong_domainweak_source_mappingzero_live_matchmissing_relation_reconstructionmissing_required_anchorinsufficient_object_identity
Цель
Не просто сделать admissible > 0, а понять, какие именно evidence items должны считаться допустимыми для РБП proof.
Acceptance
- У РБП-кейса должно появиться non-zero admissible evidence, либо должно быть строго доказано, почему это невозможно на текущих данных.
- Ответ “нет admissible evidence” должен быть объясним именно через materialization path.
Узел E — финальный proof contract по РБП
Задача
Сделать так, чтобы answer mode по РБП зависел от фактического proof-path, а не от общей слабой гипотезы.
Что сделать
Финальный ответ по РБП должен собираться так:
Если admissible evidence есть
Ответ должен уметь сказать:
- какие объекты РБП подтверждены;
- по каким из них списание подтверждено;
- по каким виден хвост/остаток на конец июля;
- почему это похоже на “живёт дольше ожидаемого”.
Если admissible evidence всё ещё нет
Ответ должен честно сказать:
-
какое именно звено не удалось подтвердить;
-
не просто “сигнал слабый”, а:
- нет документа,
- нет объекта,
- нет движения,
- нет остатка,
- нет связи между ними.
Acceptance
- РБП-кейс должен перестать быть общим lifecycle-туманом.
- Answer mode должен быть привязан к реальному состоянию claim-proof.
6. Проверки
Обязательно выполнить:
- replay исходного РБП-вопроса;
- debug/export после фикса;
- live call inventory;
- evidence conversion trace;
- before/after по answer mode.
Желательно дополнительно:
- один соседний month-close кейс на sanity-check;
- один follow-up по тому же РБП-кейсу.
7. Метрики пакета
Добавить/обновить:
rbp_required_entity_coverage_raterbp_live_route_execution_raterbp_admissible_evidence_nonzero_raterbp_source_to_proof_completion_raterbp_partial_coverage_default_raterbp_false_grounded_answer_rate
Минимальные пороги
rbp_required_entity_coverage_rate >= 0.9rbp_live_route_execution_rate >= 0.9rbp_admissible_evidence_nonzero_rate > 0rbp_false_grounded_answer_rate = 0rbp_partial_coverage_default_rateдолжно снизиться относительно текущего live baseline
8. Обязательные артефакты
В новой run-папке положить:
README.mdrun_summary.jsonrbp_source_coverage_report.mdrbp_live_route_report.mdrbp_evidence_materialization_report.mdrbp_claim_proof_report.mdrbp_before_after_matrix.mdchat_export_rbp.mddebug_payloads/raw_live_calls/rbp_required_entity_map.jsonrbp_admissibility_reject_breakdown.json
9. Что не делать
- не трогать НДС как главный фокус;
- не расползаться на общую архитектуру;
- не идти в новую большую волну по всем P0-доменам;
- не закрывать пакет по summary без replay РБП-кейса;
- не маскировать отсутствие данных красивым limited-answer.
10. Финальный verdict
В конце пакета выдать:
RBP_SOURCE_COVERAGE_FIXED / NOT_FIXEDRBP_LIVE_ROUTE_FIXED / NOT_FIXEDRBP_EVIDENCE_MATERIALIZATION_FIXED / NOT_FIXED
И общий статус:
RBP_PACK_ACCEPTED- или
RBP_PACK_ACCEPTED_WITH_LIMITATIONS - или
RBP_PACK_NOT_ACCEPTED
11. Ожидаемый результат
После этого пакета должно стать ясно:
- есть ли у вас вообще рабочий proof-path по РБП;
- можно ли из текущих данных построить доказательный ответ;
- если нельзя — это потому что данных реально нет, или потому что runtime не умеет до них дойти.
И главное: по РБП должно стать невозможно говорить абстрактно “слабая доказательная база”. Должно быть понятно, что именно не доезжает и на каком узле.
Если хочешь, следующим сообщением я дам ещё:
- понятное русское название этой волны,
- текст коммита на 3–4 строки.