11 KiB
Stage 4 - Family Card v1 — RBP tail / write-off overstay (runtime-aligned)
document_status: ACTIVE
family_name: РБП — хвост / списание / overstay
family_id: RBP_TAIL_WRITEOFF_OVERSTAY_V1
stage_scope: Stage 4 (P0-only)
current_family_status: ACCEPTED_WITH_LIMITATIONS
primary_gap: source coverage
latest_pack: 2026-03-29_Stage_04_RBP_Pack_Live_Source_To_Proof_Fix
next_pack_focus: source coverage recovery + route tightening for full claim closure
family_source_of_truth_questions: RBP-Q1 (Списание РБП за Июль 2020, включая 5 000); RBP-Q2 (хвост РБП к концу июля без суммы); RBP-Q3 (полнота закрытия июльского списания)
family_latest_live_replay: 2026-03-29_Stage_04_RBP_Pack_Live_Source_To_Proof_Fix/1.txt (локальный replay; внешний live-канал требует отдельной приемки)
family_latest_acceptance_run: 2026-03-29_Stage_04_RBP_Pack_Live_Source_To_Proof_Fix/run_summary.json
1) Что фиксирует этот документ
Карточка теперь разделяет два слоя:
Runtime V1 (as-is)— только то, что уже реально работает в коде и подтверждено артефактами.Target V2 (planned)— что хотим довести в следующих pack, но пока не считаем критерием текущей приемки.
Это нужно, чтобы не смешивать факт и план и не закрывать family “по красивому тексту”.
2) Runtime V1 (фактический контракт на 2026-03-29)
2.1 Claim contract (as-is)
- primary claim_type:
prove_rbp_tail_state - additional claim_types: пока не first-class в runtime (учитываются как план V2)
- границы claim:
- не включает Stage 5 investigation как core path;
- не расширяет домены за пределы Stage 4 P0;
- не делает full redesign proof engine.
2.2 Required anchors (runtime-enforced, as-is)
Для prove_rbp_tail_state в рантайме обязательны:
periodrbp_signalwriteoff_signal
Технические reason codes на этом шаге:
claim_missing_required_anchorsclaim_anchor_resolution_low
2.3 Claim-bound live recipe (runtime-enforced, as-is)
Обязательные live вызовы:
find_rbp_writeoff_documents_in_periodfind_rbp_object_movements_account_97find_month_close_entries_linked_to_rbpcompute_end_period_residual_by_rbp_object
Ожидаемый результат recipe:
- подтверждение документа списания;
- привязка к объекту(ам) РБП;
- движение/связанные записи;
- residual state на границе периода.
2.4 Route behavior (as-is)
Для prove_rbp_tail_state runtime:
- форсирует live-capable маршрут (
hybrid_store_plus_live/live_mcp_drilldown); - поднимает
insufficient_specificityв live path вместоno_route; - экспортирует
rbp_live_route_auditв debug payload.
2.5 Evidence/admissibility behavior (as-is)
Подтверждено в текущем пакете:
- убрана инъекция raw live rows при
matched_rows = 0; - добавлена стабилизированная live metadata для source mapping;
- claim-bound targeted checks для RBP расширены до object/document/movement/residual.
Наблюдаемые baseline reject reasons (до фикса пакета):
zero_live_matchweak_source_mappingwrong_account_scope
2.6 Runtime acceptance snapshot (по артефактам latest pack)
RBP_SOURCE_COVERAGE_FIXED = NOT_FIXEDRBP_LIVE_ROUTE_FIXED = FIXEDRBP_EVIDENCE_MATERIALIZATION_FIXED = FIXED- общий статус:
RBP_PACK_ACCEPTED_WITH_LIMITATIONS
2.7 known_runtime_limits (as-is)
source coverage incomplete: для части object-level proof звеньев данные в runtime source set еще неполные.business scope inconsistency possible: в части live traces возможна несогласованностьgeneric_accountingvscompany_specific_accounting.anchor noise in edge cases: в отдельных кейсах могут появляться нерелевантные account hints, влияющие на route profile.
3) Target V2 (planned, не критерий текущей приемки)
3.1 Planned claim extension
Дополнительные claim types (план):
prove_rbp_writeoff_completenessprove_rbp_lifecycle_overstayprove_rbp_period_end_residual_state
3.2 Planned anchor extension
Расширенный target-набор anchors (план):
- период (primary + period-end)
- суммы/диапазоны
- объект РБП
- документ/тип документа
- движения/остаток на конец периода
- lifecycle markers для overstay
3.3 Planned family metrics
Плановые family-метрики (в stable harness):
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
До формализации в harness эти метрики считаются target-моделью, а не текущим hard gate.
4) Required entities and relations (business contract)
4.1 Минимально необходимые сущности для proof closure
- Документ
Списание РБПза целевой период. - Объект(ы) РБП.
- Движения/регистровые записи по списанию.
- Residual state на конец периода.
- Связь со стадией month-close при необходимости.
4.2 Критические relation links
RBP object -> writeoff documentwriteoff document -> movement/register recordmovement/register record -> period-end residualexpected lifecycle -> actual lifecycle resultresidual state -> overstay/no-overstay verdict
5) Snapshot/Live coverage verdict (as-is)
snapshot-onlyдля RBP сейчас недостаточен для устойчивого object-level proof closure.- Family требует
snapshot_plus_live_required. - Главный незакрытый узел — source coverage в production live данных.
6) Answer/proof modes contract
grounded_positive
Допускается, если одновременно:
admissible_evidence_count > 0- закрыта цепочка object/document/movement/residual
- вывод опирается на конкретные source refs
false_grounded_answer_rate = 0
Короткий пример:
Подтвержден документ "Списание РБП" за июль 2020, найден связанный объект РБП и остаток на конец периода = 0; признаков overstay по этому объекту не выявлено.
limited_or_insufficient_evidence
Обязателен, если:
- не найден ключевой link (document/object/residual)
- admissible evidence недостаточно
- нет права имитировать доказанность
Короткий пример:
Документ списания найден, но связь с объектом РБП и подтвержденный остаток на конец периода не восстановлены; вывод ограничен до partial coverage без утверждения об overstay.
Запрещенные паттерны
- общий lifecycle narrative без указания missing link
- уверенный вывод при
admissible = 0 - смешивание snapshot-гипотез с live-доказанностью без маркировки
Короткий антипример:
Есть признаки проблемы по РБП, вероятно хвост остался(нельзя без document/object/residual подтверждения).
7) Gap register (RBP family)
| gap_id | category | severity | current_state | note |
|---|---|---|---|---|
| RBP-G1 | missing_source_data / source_coverage |
blocker | open | ключевая причина ACCEPTED_WITH_LIMITATIONS |
| RBP-G2 | business_scope_resolution_consistency |
high | open | в отдельных live traces встречается несогласованность generic/company-specific слоев |
| RBP-G3 | anchor_quality |
medium | open | в отдельных кейсах попадают нерелевантные account hints, что ухудшает route profile |
8) Code-path inventory (где живет контракт)
-
llm_normalizer/backend/src/services/assistantClaimBoundEvidence.ts -
claim type resolution;
-
required anchors для
prove_rbp_tail_state; -
anchor resolution rate и claim reason codes.
-
llm_normalizer/backend/src/services/assistantDataLayer.ts -
claim-bound live plan для RBP;
-
обязательные live call ids и account scope overrides;
-
source profile
claim_bound_rbp_live_path. -
llm_normalizer/backend/src/services/assistantService.ts -
RBP live route enforcement;
-
no-route recovery;
-
rbp_live_route_auditexport. -
run artifacts:
-
llm_normalizer/docs/runs/2026-03-29_Stage_04_RBP_Pack_Live_Source_To_Proof_Fix
9) Regression set and acceptance policy
Обязательный минимум для family replay:
- Базовый RBP вопрос:
Списание РБП за Июль 2020, включая сумму5 000. - Вариация без суммы (проверка period + overstay signal).
- Вариация на полноту закрытия.
- Follow-up по тому же документу/объекту.
- Соседний month-close sanity case.
Политика:
- после каждого family pack обязателен новый run folder в
llm_normalizer/docs/runs; - приемка фиксируется на уровне family, не одиночного вопроса;
false_groundedдолжен оставаться нулевым.
10) Project decision line for this family
RBP уже перешел в family-based execution контур Stage 4, но остается в статусе accepted_with_limitations до восстановления source coverage в живом канале.